22 #include "ns3/simulator.h"
24 #include "ns3/string.h"
25 #include "ns3/double.h"
27 #include "ns3/boolean.h"
29 #include "ns3/mobility-helper.h"
30 #include "ns3/lte-helper.h"
32 #include "ns3/lte-ue-phy.h"
33 #include "ns3/lte-ue-net-device.h"
34 #include "ns3/lte-enb-phy.h"
35 #include "ns3/lte-enb-net-device.h"
36 #include "ns3/ff-mac-scheduler.h"
49 static std::string
BuildNameString (
double orientationDegrees,
double beamwidthDegrees,
double x,
double y);
50 LteEnbAntennaTestCase (
double orientationDegrees,
double beamwidthDegrees,
double x,
double y,
double antennaGainDb);
55 virtual void DoRun (
void);
69 std::ostringstream oss;
70 oss <<
"o=" << orientationDegrees
71 <<
", bw=" << beamwidthDegrees
79 :
TestCase (BuildNameString (orientationDegrees, beamwidthDegrees, x, y)),
80 m_orientationDegrees (orientationDegrees),
81 m_beamwidthDegrees (beamwidthDegrees),
84 m_antennaGainDb (antennaGainDb)
113 positionAlloc->Add (
Vector (0.0, 0.0, 0.0));
134 lteHelper->
Attach (ueDevs, enbDevs.
Get (0));
156 const double enbTxPowerDbm = 30;
157 const double ueTxPowerDbm = 10;
158 const double ktDbm = -174;
159 const double noisePowerDbm = ktDbm + 10 * std::log10 (25 * 180000);
160 const double ueNoiseFigureDb = 9.0;
161 const double enbNoiseFigureDb = 5.0;
163 double calculatedSinrDbDl = -INFINITY;
164 if (testDlSinr->GetSinr () != 0)
166 calculatedSinrDbDl = 10.0 * std::log10 (testDlSinr->GetSinr ()->operator[] (0));
168 double calculatedSinrDbUl = -INFINITY;
169 if (testUlSinr->GetSinr () != 0)
171 calculatedSinrDbUl = 10.0 * std::log10 (testUlSinr->GetSinr ()->operator[] (0));
175 double calculatedAntennaGainDbDl = - (enbTxPowerDbm - calculatedSinrDbDl - noisePowerDbm - ueNoiseFigureDb);
176 double calculatedAntennaGainDbUl = - (ueTxPowerDbm - calculatedSinrDbUl - noisePowerDbm - enbNoiseFigureDb);