22 #include <ns3/simulator.h>
24 #include <ns3/hybrid-buildings-propagation-loss-model.h>
25 #include <ns3/string.h>
26 #include <ns3/double.h>
27 #include <ns3/building.h>
29 #include <ns3/buildings-helper.h>
31 #include "buildings-shadowing-test.h"
51 :
TestSuite (
"buildings-shadowing-test", SYSTEM)
75 :
TestCase (
"SHADOWING calculation: " + name),
76 m_mobilityModelIndex1 (m1),
77 m_mobilityModelIndex2 (m2),
83 BuildingsShadowingTestCase::~BuildingsShadowingTestCase ()
95 building1->SetBoundaries (
Box (-3000, -1, -4000, 4000.0, 0.0, 12));
96 building1->SetBuildingType (Building::Residential);
97 building1->SetExtWallsType (Building::ConcreteWithWindows);
98 building1->SetNFloors (3);
103 std::vector<double> loss;
105 double sumSquared = 0.0;
107 for (
int i = 0; i < samples; i++)
110 loss.push_back (propagationLossModel->DoCalcRxPower (0.0, mma, mmb) + m_lossRef);
111 sum += loss.at (loss.size () - 1);
112 sumSquared += (loss.at (loss.size () - 1) * loss.at (loss.size () - 1));
114 double mean = sum / samples;
115 double sigma = std::sqrt (sumSquared / samples - (mean * mean));
117 double ci = (2.575829303549 * sigma) / std::sqrt (samples);
119 NS_LOG_INFO (
"Mean from simulation " << mean <<
", sigma " << sigma <<
", reference value " << m_sigmaRef <<
", CI(99%) " << ci);
121 NS_TEST_ASSERT_MSG_EQ_TOL (std::fabs (mean), 0.0, ci,
"Wrong shadowing distribution !");
128 BuildingsShadowingTestCase::CreateMobilityModel (uint16_t index)
143 double henbHeight = 10.0;
150 mm = CreateObject<BuildingsMobilityModel> ();
151 mm->SetPosition (
Vector (0.0, 0.0, hb));
155 mm = CreateObject<BuildingsMobilityModel> ();
156 mm->SetPosition (
Vector (2000, 0.0, hm));
160 mm = CreateObject<BuildingsMobilityModel> ();
161 mm->SetPosition (
Vector (100, 0.0, hm));
165 mm = CreateObject<BuildingsMobilityModel> ();
166 mm->SetPosition (
Vector (900, 0.0, hm));
170 mm = CreateObject<BuildingsMobilityModel> ();
171 mm->SetPosition (
Vector (-5, 0.0, hm));
175 mm = CreateObject<BuildingsMobilityModel> ();
176 mm->SetPosition (
Vector (-5, 30, henbHeight));
180 mm = CreateObject<BuildingsMobilityModel> ();
181 mm->SetPosition (
Vector (-2000, 0.0, hm));
185 mm = CreateObject<BuildingsMobilityModel> ();
186 mm->SetPosition (
Vector (-100, 0.0, hm));
190 mm = CreateObject<BuildingsMobilityModel> ();
191 mm->SetPosition (
Vector (0, 0.0, hm));
195 mm = CreateObject<BuildingsMobilityModel> ();
196 mm->SetPosition (
Vector (-100, 0.0, henbHeight));
200 mm = CreateObject<BuildingsMobilityModel> ();
201 mm->SetPosition (
Vector (-500, 0.0, henbHeight));
208 BuildingsHelper::MakeConsistent (mm);
smart pointer class similar to boost::intrusive_ptr
#define NS_LOG_FUNCTION(parameters)
virtual void DoRun(void)
Implementation to actually run this test case.
#define NS_LOG_COMPONENT_DEFINE(name)
BuildingsShadowingTestCase(uint16_t m1, uint16_t m2, double refValue, double sigmaRef, std::string name)
BuildingsShadowingTestSuite()
static void Destroy(void)
void AddTestCase(TestCase *testCase) NS_DEPRECATED
Add an individual test case to this test suite.
void LogComponentEnable(char const *name, enum LogLevel level)