19 #include "ns3/abort.h"
21 #include "ns3/config.h"
22 #include "ns3/channel-condition-model.h"
23 #include "ns3/probabilistic-v2v-channel-condition-model.h"
24 #include "ns3/three-gpp-v2v-propagation-loss-model.h"
25 #include "ns3/constant-position-mobility-model.h"
27 #include "ns3/simulator.h"
28 #include "ns3/double.h"
29 #include "ns3/uinteger.h"
30 #include "ns3/boolean.h"
31 #include "ns3/core-module.h"
32 #include "ns3/node-container.h"
65 virtual void DoRun (
void);
84 double m_pNlosv {0.0};
91 uint64_t m_numLos {0};
92 uint64_t m_numNlosv {0};
97 :
TestCase (
"Test case for the class ProbabilisticV2vUrbanChannelConditionModel"),
109 if (cond->
GetLosCondition () == ChannelCondition::LosConditionValue::LOS)
113 else if (cond->
GetLosCondition () == ChannelCondition::LosConditionValue::NLOSv)
122 RngSeedManager::SetSeed (1);
123 RngSeedManager::SetRun (1);
132 testVector.
m_typeId = ProbabilisticV2vUrbanChannelConditionModel::GetTypeId ();
133 testVector.
m_pNlosv =
std::min (1.0,
std::max (0.0, 1 / (0.0396 * 10.0) * exp (-(log (10.0) - 5.2718) * (log (10.0) - 5.2718) / 3.4827)));
140 testVector.
m_typeId = ProbabilisticV2vUrbanChannelConditionModel::GetTypeId ();
141 testVector.
m_pNlosv =
std::min (1.0,
std::max (0.0, 1 / (0.0396 * 100.0) * exp (-(log (100.0) - 5.2718) * (log (100.0) - 5.2718) / 3.4827)));
148 testVector.
m_typeId = ProbabilisticV2vUrbanChannelConditionModel::GetTypeId ();
149 testVector.
m_pNlosv =
std::min (1.0,
std::max (0.0, 1 / (0.0312 * 10.0) * exp (-(log (10.0) - 5.0063) * (log (10.0) - 5.0063) / 2.4544)));
156 testVector.
m_typeId = ProbabilisticV2vUrbanChannelConditionModel::GetTypeId ();
157 testVector.
m_pNlosv =
std::min (1.0,
std::max (0.0, 1 / (0.0312 * 100.0) * exp (-(log (100.0) - 5.0063) * (log (100.0) - 5.0063) / 2.4544)));
164 testVector.
m_typeId = ProbabilisticV2vUrbanChannelConditionModel::GetTypeId ();
165 testVector.
m_pNlosv =
std::min (1.0,
std::max (0.0, 1 / (0.0242 * 10.0) * exp (-(log (10.0) - 5.0115) * (log (10.0) - 5.0115) / 2.2092)));
172 testVector.
m_typeId = ProbabilisticV2vUrbanChannelConditionModel::GetTypeId ();
173 testVector.
m_pNlosv =
std::min (1.0,
std::max (0.0, 1 / (0.0242 * 100.0) * exp (-(log (100.0) - 5.0115) * (log (100.0) - 5.0115) / 2.2092)));
189 nodes.Get (0)->AggregateObject (a);
190 nodes.Get (1)->AggregateObject (b);
193 uint32_t numberOfReps = 500000;
211 for (uint32_t j = 0; j < numberOfReps; j++)
217 Simulator::Destroy ();
219 double resultPlos = double (
m_numLos) / double (numberOfReps);
220 double resultPnlosv = double (
m_numNlosv) / double (numberOfReps);
255 virtual void DoRun (
void);
287 :
TestCase (
"Test case for the class ProbabilisticV2vHighwayChannelConditionModel"),
299 if (cond->
GetLosCondition () == ChannelCondition::LosConditionValue::LOS)
303 else if (cond->
GetLosCondition () == ChannelCondition::LosConditionValue::NLOS)
312 RngSeedManager::SetSeed (1);
313 RngSeedManager::SetRun (1);
321 double aLos = 1.5e-6;
322 double bLos = -0.0015;
325 testVector.
m_typeId = ProbabilisticV2vHighwayChannelConditionModel::GetTypeId ();
326 double aNlos = -2.9e-7;
327 double bNlos = 0.00059;
328 double cNlos = 0.0017;
336 testVector.
m_typeId = ProbabilisticV2vHighwayChannelConditionModel::GetTypeId ();
347 testVector.
m_typeId = ProbabilisticV2vHighwayChannelConditionModel::GetTypeId ();
358 testVector.
m_typeId = ProbabilisticV2vHighwayChannelConditionModel::GetTypeId ();
369 testVector.
m_typeId = ProbabilisticV2vHighwayChannelConditionModel::GetTypeId ();
380 testVector.
m_typeId = ProbabilisticV2vHighwayChannelConditionModel::GetTypeId ();
397 nodes.Get (0)->AggregateObject (a);
398 nodes.Get (1)->AggregateObject (b);
401 uint32_t numberOfReps = 500000;
419 for (uint32_t j = 0; j < numberOfReps; j++)
425 Simulator::Destroy ();
427 double resultPlos = double (
m_numLos) / double (numberOfReps);
428 double resultPnlos = double (
m_numNlos) / double (numberOfReps);
455 :
TestSuite (
"probabilistic-v2v-channel-condition-model", SYSTEM)