9#include "ns3/command-line.h"
10#include "ns3/core-module.h"
11#include "ns3/double.h"
12#include "ns3/isotropic-antenna-model.h"
13#include "ns3/mobility-helper.h"
14#include "ns3/node-container.h"
15#include "ns3/object-factory.h"
16#include "ns3/pointer.h"
17#include "ns3/string.h"
18#include "ns3/three-gpp-channel-model.h"
19#include "ns3/three-gpp-propagation-loss-model.h"
20#include "ns3/three-gpp-spectrum-propagation-loss-model.h"
21#include "ns3/two-ray-spectrum-propagation-loss-model.h"
22#include "ns3/uinteger.h"
23#include "ns3/uniform-planar-array.h"
39constexpr double BW = 200
e6;
82 std::vector<int>
rbsId;
126 else if (cond ==
"NLOS")
195 cmd.AddValue(
"enableOutput",
"Logs the results of the example",
enableOutput);
196 cmd.AddValue(
"numRealizations",
"The number of different realizations",
numRealizations);
202 *
g_outStream->GetStream() <<
"cond\tscen\tfc\tseed\tgain\n";
212 Vector
aPos(0.0, 0.0, 0.0);
213 Vector
bPos(10.0, 0.0, 0.0);
217 mobility.SetMobilityModel(
"ns3::ConstantPositionMobilityModel");
Class holding the azimuth and inclination angles of spherical coordinates.
AttributeValue implementation for Boolean.
Parse command-line arguments.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
Helper class used to assign positions and mobility models to nodes.
Keep track of the current position and velocity of an object.
Vector GetPosition() const
keep track of a set of node pointers.
void Create(uint32_t n)
Create n nodes and append pointers to them to the end of this NodeContainer.
Ptr< Node > Get(uint32_t i) const
Get the Ptr<Node> stored in this container at a given index.
AttributeValue implementation for Pointer.
Smart pointer class similar to boost::intrusive_ptr.
Hold variables of type string.
Hold an unsigned integer type.
#define NS_ABORT_MSG(msg)
Unconditional abnormal program termination with a message.
#define NS_LOG_COMPONENT_DEFINE(name)
Define a Log component with a specific name.
Ptr< T > Create(Ts &&... args)
Create class instances by constructors with varying numbers of arguments and return them by Ptr.
Every class exported by the ns3 library is enclosed in the ns3 namespace.
double Integral(const SpectrumValue &arg)
std::vector< BandInfo > Bands
Container of BandInfo.
The building block of a SpectrumModel.
double fl
lower limit of subband
void LogEndToEndGain(std::string cond, std::string scen, double fc, long int seed, double gain)
const Ptr< OutputStreamWrapper > g_outStream
const std::vector< std::string > LOS_CONDITIONS
const std::vector< std::string > THREE_GPP_SCENARIOS
double ComputePowerSpectralDensityOverallPower(Ptr< const SpectrumValue > psd)
double ComputeEndToEndGain(std::string cond, std::string scen, double fc, Ptr< Node > a, Ptr< Node > b, Ptr< PhasedArrayModel > aArray, Ptr< PhasedArrayModel > bArray)
Ptr< SpectrumValue > CreateTxPowerSpectralDensity(double fc)
constexpr double RB_WIDTH