22#include <ns3/double.h>
25#include <ns3/object-factory.h>
26#include <ns3/pointer.h>
27#include <ns3/random-variable-stream.h>
28#include <ns3/string.h>
43 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
44 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
45 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
46 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
49 1.6128465196199136e+02,
50 2.7586206896551727e-05),
53 7.882966657847448e+02,
54 3.4482758620689657e-05),
57 5.744993815655636e+02,
58 1.3793103448275863e-05),
61 1.1742258806909902e+02,
62 3.4482758620689657e-05),
65 1.174524189370726e+02,
66 6.896551724137931e-05),
69 8.557590962327636e+01,
74 1.36482758620689e-02),
77 3.8572942113521017e+03,
81 2.047418976079014e+03,
82 6.206896551724138e-05),
84 5.006171052321396e-05,
88 9.428291321439076e-05,
89 5.302187851896829e+03,
93 2.0430031092487088e+03,
97 3.0389548052160666e+02,
98 8.965517241379312e-05),
101 3.856804337484282e+03,
105 3.862196373520788e+03,
106 6.6965517241379e-03),
109 1.4894789821180611e+03,
112 1.07946501149867e-02,
113 4.531924098269983e+01,
114 6.206896551724138e-05),
117 2.2169984332891184e+02,
118 7.0965517241379e-03),
121 1.172735473385635e+02,
125 1.487021737818881e+03,
126 6.896551724137932e-06)}}},
128 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
129 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
130 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
131 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
134 8.547814653106583e+01,
138 8.540218579193503e+01,
142 6.225570840591133e+01,
146 6.213721725968569e+01,
150 1.1715445096995552e+02,
154 6.208988397195024e+01,
155 5.517241379310345e-05),
158 3.0370255688368803e+02,
162 6.211354610705902e+01,
163 1.3793103448275863e-05),
165 6.863706760298528e-05,
166 7.283693496699635e+03,
167 2.06896551724138e-05),
170 8.542388196956914e+01,
171 1.3793103448275863e-05),
174 2.2161538684598275e+02,
178 1.1712469578065404e+02,
179 2.7586206896551727e-05),
182 4.179431587180458e+02,
183 9.655172413793105e-05),
185 4.990302323746383e-05,
186 1.0018433043580286e+04,
190 6.20819985968797e+01,
191 1.3793103448275863e-05),
194 4.1783700843777945e+02,
198 6.20819985968797e+01,
202 5.742075929586678e+02,
203 1.3793103448275863e-05),
206 6.212143548915179e+01,
207 6.206896551724138e-05),
210 2.211093231666549e+02,
211 1.586206896551e-04)}}}}},
214 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
215 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
216 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
217 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
220 1.486832887020803e+03,
224 5.732603031000779e+02,
225 7.0551724137931e-03),
228 1.6101857516847045e+02,
232 1.6099812591365952e+02,
235 1.47463951390083e-02,
236 3.290659176610291e+01,
240 1.6089591858864094e+02,
243 1.07973332444199e-02,
244 4.530773068511169e+01,
245 6.8068965517241e-03),
247 5.00680684988557e-05,
248 9.985404808314654e+03,
249 6.9586206896551e-03),
252 1.0817950064503143e+03,
253 2.07655172413793e-02),
255 1.08201661923657e-02,
256 4.521001111357971e+01,
257 6.206896551724138e-05),
260 2.0432626022764905e+03,
264 3.8572942113521017e+03,
267 6.868066254013259e-05,
268 7.27906954953051e+03,
272 2.0450799765751449e+03,
276 7.888976118731497e+02,
277 6.7241379310344e-03),
279 5.0074427281897054e-05,
280 9.984136668368055e+03,
284 2.80365331692424e+03,
285 6.206896551724138e-05),
288 2.040928351071028e+03,
289 1.37862068965517e-02),
292 1.4883443652113867e+03,
293 2.06896551724138e-05),
296 2.21474697532092e+02,
297 1.379310344827e-04)}}},
299 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
300 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
301 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
302 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
305 1.6122321062648754e+02,
309 3.8519090192542544e+03,
310 7.586206896551724e-05),
313 2.0435221282639047e+03,
314 6.896551724137931e-05),
317 2.81149813657053e+03,
318 6.896551724137932e-06),
321 3.043589974153497e+02,
324 6.879413898912483e-05,
325 7.267061020126167e+03,
326 6.206896551724138e-05),
328 6.85760811693159e-05,
329 7.290171957835979e+03,
330 6.896551724137932e-06),
333 2.8089996795357683e+03,
334 8.965517241379312e-05),
337 1.614896255719667e+02,
338 6.896551724137932e-06),
341 6.219248503657932e+01,
342 2.06896551724138e-05),
345 6.217668922899309e+01,
349 3.860234761488555e+03,
353 6.217668922899309e+01,
357 2.8086429383948757e+03,
361 1.6110039816473343e+02,
365 6.223199211412119e+01,
366 7.586206896551724e-05),
369 2.8086429383948757e+03,
370 4.137931034482759e-05),
373 6.224780197124505e+01,
377 1.4860777236373208e+03,
378 6.206896551724138e-05),
381 2.2169984332891184e+02,
382 1.448275862068e-04)}}}}},
385 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
386 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
387 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
388 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
391 1.172735473385635e+02,
395 3.040499076660591e+02,
399 5.734787696501294e+02,
403 1.174524189370726e+02,
407 1.1754195701936764e+02,
411 1.1740767547642784e+02,
412 6.7379310344827e-03),
414 9.44506754620425e-05,
415 5.292768388146024e+03,
419 8.55215829982986e+01,
423 7.889978140847802e+02,
424 6.8344827586206e-03),
427 5.74280526213736e+02,
428 6.896551724137931e-05),
431 2.0406691544916384e+03,
432 1.37310344827586e-02),
435 5.748643258446342e+02,
439 3.03741131810801e+02,
443 2.8089996795357683e+03,
447 6.22082848570447e+01,
448 6.7379310344827e-03),
451 1.0835826296873358e+03,
455 7.870961465788879e+02,
459 7.880964521665514e+02,
463 1.0852353652060228e+03,
464 4.827586206896552e-05),
467 2.2153096253672345e+02,
470 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
471 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
472 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
473 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
475 1.08074007896676e-02,
476 4.526459309976018e+01,
480 4.174656947244478e+02,
484 6.207411422324672e+01,
488 1.1715445096995552e+02,
492 6.206623085092408e+01,
496 8.551072181262026e+01,
497 7.586206896551724e-05),
500 6.227943373585816e+01,
504 1.4892898192515456e+03,
505 8.965517241379312e-05),
508 3.042816955330164e+02,
509 2.7586206896551727e-05),
512 6.2160897433266726e+01,
516 4.178900802074444e+02,
517 6.896551724137932e-06),
520 2.214465703888772e+02,
521 5.517241379310345e-05),
524 6.218458663124002e+01,
528 6.218458663124002e+01,
529 6.896551724137931e-05),
532 3.0370255688368803e+02,
536 6.216879282971112e+01,
540 1.1739276477764624e+02,
541 7.586206896551724e-05),
544 6.217668922899309e+01,
548 6.2097770348585485e+01,
549 2.06896551724138e-05),
551 1.08121021183973e-02,
552 4.524447628451687e+01,
556 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
557 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
558 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
559 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
562 1.4900466148894875e+03,
563 7.0275862068965e-03),
566 7.887974223871352e+02,
567 6.9862068965517e-03),
569 1.08228555237886e-02,
570 4.5198528558475154e+01,
571 8.275862068965519e-05),
574 7.884969302666273e+02,
575 4.827586206896552e-05),
578 3.8582741457603433e+03,
582 3.8523982713408623e+03,
583 8.275862068965519e-05),
586 2.040928351071028e+03,
587 1.37724137931034e-02),
589 1.47354930616003e-02,
590 3.293167761063697e+01,
591 3.4482758620689657e-05),
594 2.80650344277193e+03,
595 1.37310344827586e-02),
598 6.22082848570447e+01,
599 8.275862068965519e-05),
601 9.430686099733985e-05,
602 5.300841188565312e+03,
603 2.7586206896551727e-05),
606 1.0827572060417654e+03,
607 2.7586206896551727e-05),
610 1.4855116028137206e+03,
611 6.8206896551724e-03),
614 5.738430655969447e+02,
615 2.06896551724138e-05),
617 4.990302323746383e-05,
618 1.0018433043580286e+04,
619 6.896551724137931e-05),
622 8.530462116421079e+01,
623 9.655172413793105e-05),
626 1.4892898192515456e+03,
629 1.47282293521982e-02,
630 3.2948412130435365e+01,
631 1.3793103448275863e-05),
634 8.527212439663107e+01,
635 6.9448275862068e-03),
637 4.996643770687291e-05,
638 1.0005716967361968e+04,
639 6.896551724137931e-05)}}},
641 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
642 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
643 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
644 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
646 1.47100852650808e-02,
647 3.29902856434769e+01,
648 2.06896551724138e-05),
650 1.08134457224711e-02,
651 4.523873026531778e+01,
654 1.08174775144271e-02,
655 4.522149658579409e+01,
656 8.275862068965519e-05),
659 4.1799624397043993e+02,
660 6.8620689655172e-03),
662 1.07973332444199e-02,
663 4.530773068511169e+01,
667 3.300704994545942e+01,
671 6.2160897433266726e+01,
672 6.8068965517241e-03),
674 1.47445775831495e-02,
675 3.2910771412767524e+01,
676 9.655172413793105e-05),
679 6.227943373585816e+01,
680 2.7586206896551727e-05),
682 1.47245987995756e-02,
683 3.295678257898671e+01,
687 4.531348546843247e+01,
691 6.220038444513843e+01,
692 4.827586206896552e-05),
695 1.6144861002079188e+02,
699 7.882966657847448e+02,
700 1.3793103448275863e-05),
703 6.216879282971112e+01,
704 7.586206896551724e-05),
707 8.553244556351568e+01,
708 1.3793103448275863e-05),
710 1.07973332444199e-02,
711 4.530773068511169e+01,
714 9.44506754620425e-05,
715 5.292768388146024e+03,
716 3.4482758620689657e-05),
719 3.8528875855700608e+03,
720 5.517241379310345e-05),
722 1.07946501149867e-02,
723 4.531924098269983e+01,
724 1.379310344827e-04)}}}}},
727 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
728 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
729 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
730 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
733 2.2136221039019213e+02,
737 6.221618627242562e+01,
738 3.4482758620689657e-05),
741 1.6144861002079188e+02,
745 5.744264205160073e+02,
746 4.137931034482759e-05),
748 4.993472040654454e-05,
749 1.00120729866762e+04,
757 2.211093231666549e+02,
761 1.1733314091660613e+02,
765 1.1746733721285608e+02,
766 7.0965517241379e-03),
768 9.42948863457656e-05,
769 5.301514477472012e+03,
773 8.555417483326706e+01,
774 6.896551724137932e-06),
777 8.538049512475196e+01,
778 8.965517241379312e-05),
781 2.805434306201756e+03,
784 4.994740491021047e-05,
785 1.0009530094583308e+04,
789 3.858764206316572e+03,
793 3.8572942113521017e+03,
794 6.9310344827586e-03),
797 2.0453397333972343e+03,
798 6.206896551724138e-05),
800 9.421110633952792e-05,
801 5.306229894934544e+03,
805 3.8509307014772426e+03,
806 1.38137931034482e-02),
809 3.8528875855700608e+03,
810 1.103448275862e-04)}}},
812 {{500000000.0, 5500000000.0, 10500000000.0, 15500000000.0, 20500000000.0,
813 25500000000.0, 30500000000.0, 35500000000.0, 40500000000.0, 45500000000.0,
814 50500000000.0, 55500000000.0, 60500000000.0, 65500000000.0, 70500000000.0,
815 75500000000.0, 80500000000.0, 85500000000.0, 90500000000.0, 95500000000.0},
818 1.6110039816473343e+02,
822 1.1722887201899576e+02,
823 6.896551724137932e-06),
826 4.175717506735425e+02,
827 8.965517241379312e-05),
830 3.042044132840143e+02,
834 8.543473212524282e+01,
838 6.207411422324672e+01,
842 6.223989654069086e+01,
843 6.7655172413793e-03),
846 4.1815554018694206e+02,
850 6.217668922899309e+01,
851 6.206896551724138e-05),
854 8.543473212524282e+01,
855 6.896551724137931e-05),
858 5.744264205160073e+02,
862 6.221618627242562e+01,
863 4.827586206896552e-05),
866 8.557590962327636e+01,
867 4.137931034482759e-05),
870 1.1743750255590038e+02,
874 2.2136221039019213e+02,
878 8.549986200630548e+01,
882 6.216879282971112e+01,
883 4.827586206896552e-05),
886 7.894990160837534e+02,
890 2.809713297758256e+03,
891 8.275862068965519e-05),
894 2.21474697532092e+02,
895 7.586206896551724e-05)}}}}},
907 m_uniformRv = CreateObject<UniformRandomVariable>();
911 m_normalRv = CreateObject<NormalRandomVariable>();
914 m_gammaRv = CreateObject<GammaRandomVariable>();
935 TypeId(
"ns3::TwoRaySpectrumPropagationLossModel")
937 .SetGroupName(
"Spectrum")
940 "ChannelConditionModel",
941 "Pointer to the channel condition model.",
944 MakePointerChecker<ChannelConditionModel>())
947 "The 3GPP scenario (RMa, UMa, UMi-StreetCanyon, InH-OfficeOpen, InH-OfficeMixed).",
951 .AddAttribute(
"Frequency",
952 "The operating Frequency in Hz",
955 MakeDoubleChecker<double>());
963 if (scenario !=
"RMa" && scenario !=
"UMa" && scenario !=
"UMi-StreetCanyon" &&
964 scenario !=
"InH-OfficeOpen" && scenario !=
"InH-OfficeMixed" && scenario !=
"V2V-Urban" &&
965 scenario !=
"V2V-Highway")
968 "), choose between: RMa, UMa, UMi-StreetCanyon, "
969 "InH-OfficeOpen, InH-OfficeMixed, V2V-Urban or V2V-Highway");
974 NS_ABORT_MSG(
"The specified scenario has not been calibrated yet.");
985 "Frequency should be between 0.5 and 100 GHz but is " <<
f);
998 return cond->GetLosCondition();
1013 "The specified scenario and channel condition are not supported");
1017 auto& fcVec = std::get<0>(scenAndCondTuple->second);
1018 auto& ftrParamsVec = std::get<1>(scenAndCondTuple->second);
1024 NS_ASSERT(ftrParamsVec.size() >= idxOfClosestFc && idxOfClosestFc >= 0);
1025 FtrParams params = ftrParamsVec[idxOfClosestFc];
1040 Angles aAngle(b->GetPosition(), a->GetPosition());
1041 Angles bAngle(a->GetPosition(), b->GetPosition());
1044 auto aArrayResponse = aPhasedArrayModel->GetSteeringVector(aAngle);
1045 auto aAntennaFields = aPhasedArrayModel->GetElementFieldPattern(aAngle);
1046 auto aBfVector = aPhasedArrayModel->GetBeamformingVector();
1047 auto bArrayResponse = bPhasedArrayModel->GetSteeringVector(bAngle);
1048 auto bAntennaFields = bPhasedArrayModel->GetElementFieldPattern(bAngle);
1049 auto bBfVector = bPhasedArrayModel->GetBeamformingVector();
1051 std::complex<double> aArrayOverallResponse = 0;
1052 std::complex<double> bArrayOverallResponse = 0;
1055 for (
size_t i = 0; i < aPhasedArrayModel->GetNumberOfElements(); i++)
1057 aArrayOverallResponse += aArrayResponse[i] * aBfVector[i];
1059 for (
size_t i = 0; i < bPhasedArrayModel->GetNumberOfElements(); i++)
1061 bArrayOverallResponse += bArrayResponse[i] * bBfVector[i];
1064 double gain =
norm(aArrayOverallResponse) *
1065 (std::pow(aAntennaFields.first, 2) + std::pow(aAntennaFields.second, 2)) *
1066 norm(bArrayOverallResponse) *
1067 (std::pow(bAntennaFields.first, 2) + std::pow(bAntennaFields.second, 2));
1075 constexpr double NLOS_BEAMFORMING_FACTOR = 1.0 / 19;
1076 gain *= NLOS_BEAMFORMING_FACTOR;
1093 double cmnSqrtTerm = sqrt(1 - std::pow(params.
m_delta, 2));
1094 double v1 = sqrt(params.
m_sigma) * sqrt(params.
m_k * (1 - cmnSqrtTerm));
1095 double v2 = sqrt(params.
m_sigma) * sqrt(params.
m_k * (1 + cmnSqrtTerm));
1096 double sqrtGamma = sqrt(
m_gammaRv->GetValue());
1108 std::complex<double> h = sqrtGamma * v1 * std::complex<double>(cos(phi1), sin(phi1)) +
1109 sqrtGamma * v2 * std::complex<double>(cos(phi2), sin(phi2)) +
1110 std::complex<double>(x, y);
1127 NS_ASSERT_MSG(aId != bId,
"The two nodes must be different from one another");
1129 "The position of a and b devices cannot be the same");
1134 NS_ASSERT_MSG(aPhasedArrayModel,
"Antenna not found for node " << aId);
1135 NS_LOG_DEBUG(
"a node " << a->GetObject<
Node>() <<
" antenna " << aPhasedArrayModel);
1138 NS_ASSERT_MSG(bPhasedArrayModel,
"Antenna not found for device " << bId);
1139 NS_LOG_DEBUG(
"b node " << bId <<
" antenna " << bPhasedArrayModel);
1151 *rxPsd *= (fading * bfGain);
1158 double targetFc)
const
1160 auto it = std::min_element(std::begin(frequencies),
1161 std::end(frequencies),
1162 [targetFc](
double lhs,
double rhs) {
1163 return std::abs(lhs - targetFc) < std::abs(rhs - targetFc);
1165 return std::distance(std::begin(frequencies), it);
double f(double x, void *params)
Class holding the azimuth and inclination angles of spherical coordinates.
LosConditionValue
Possible values for Line-of-Sight condition.
This class can be used to hold variables of floating point type such as 'double' or 'float'.
void SetAttribute(std::string name, const AttributeValue &value)
Set a single attribute, raising fatal errors if unsuccessful.
spectrum-aware propagation loss model that is compatible with PhasedArrayModel type of ns-3 antenna
Hold objects of type Ptr<T>.
Smart pointer class similar to boost::intrusive_ptr.
void SetStream(int64_t stream)
Specifies the stream number for the RngStream.
Hold variables of type string.
Two Ray Spectrum Propagation Loss Model.
double CalcBeamformingGain(Ptr< const MobilityModel > a, Ptr< const MobilityModel > b, Ptr< const PhasedArrayModel > aPhasedArrayModel, Ptr< const PhasedArrayModel > bPhasedArrayModel) const
Compute the beamforming gain by combining single-element and array gains.
double m_frequency
The operating frequency.
ChannelCondition::LosConditionValue GetLosCondition(Ptr< const MobilityModel > a, Ptr< const MobilityModel > b) const
Retrieves the LOS condition associated to the specified mobility models.
FtrParams GetFtrParameters(Ptr< const MobilityModel > a, Ptr< const MobilityModel > b) const
Retrieves the FTR fading model parameters related to the carrier frequency and LOS condition.
Ptr< NormalRandomVariable > m_normalRv
Random variable used to sample the normal distributed amplitudes of the FTR diffuse components.
Ptr< SpectrumValue > DoCalcRxPowerSpectralDensity(Ptr< const SpectrumSignalParameters > txPsd, Ptr< const MobilityModel > a, Ptr< const MobilityModel > b, Ptr< const PhasedArrayModel > aPhasedArrayModel, Ptr< const PhasedArrayModel > bPhasedArrayModel) const override
Compute the received PSD.
double GetFtrFastFading(const FtrParams ¶ms) const
Compute the stochastic power gain due to the fast fading, modeled according to the Fluctuating Two-Ra...
~TwoRaySpectrumPropagationLossModel() override
Destructor.
static TypeId GetTypeId()
Get the type ID.
void DoDispose() override
Destructor implementation.
TwoRaySpectrumPropagationLossModel()
Constructor.
std::map< std::string, std::map< ChannelCondition::LosConditionValue, CarrierFrequencyFtrParamsTuple > > FtrParamsLookupTable
Nested map associating 3GPP scenario and LosCondition to the corresponding tuple of carrier frequenci...
Ptr< GammaRandomVariable > m_gammaRv
Random variable used to sample the Nakagami distributed amplitude of the FTR specular components.
Ptr< ChannelConditionModel > m_channelConditionModel
Channel condition model used to retrieve the LOS/NLOS condition of the communicating endpoints.
std::size_t SearchClosestFc(const std::vector< double > &frequencies, double targetFc) const
Get the index of the closest carrier frequency for which the FTR estimated parameters are available.
void SetFrequency(double f)
Sets the center frequency of the model.
Ptr< UniformRandomVariable > m_uniformRv
Random variable used to sample the uniform distributed phases of the FTR specular components.
int64_t AssignStreams(int64_t stream)
Assign a fixed random variable stream number to the random variables used by this model.
std::string m_scenario
the 3GPP scenario
void SetScenario(const std::string &scenario)
Sets the propagation scenario.
a unique identifier for an interface.
TypeId SetParent(TypeId tid)
Set the parent TypeId.
#define NS_ASSERT(condition)
At runtime, in debugging builds, if this condition is not true, the program prints the source file,...
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Ptr< const AttributeAccessor > MakeDoubleAccessor(T1 a1)
Ptr< const AttributeAccessor > MakePointerAccessor(T1 a1)
Ptr< const AttributeChecker > MakeStringChecker()
Ptr< const AttributeAccessor > MakeStringAccessor(T1 a1)
#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.
#define NS_LOG_DEBUG(msg)
Use NS_LOG to output a message of level LOG_DEBUG.
#define NS_LOG_FUNCTION(parameters)
If log level LOG_FUNCTION is enabled, this macro will output all input parameters separated by ",...
#define NS_OBJECT_ENSURE_REGISTERED(type)
Register an Object subclass with the TypeId system.
const double norm
Normalization to obtain randoms on [0,1).
Every class exported by the ns3 library is enclosed in the ns3 namespace.
static const TwoRaySpectrumPropagationLossModel::FtrParamsLookupTable SIM_PARAMS_TO_FTR_PARAMS_TABLE
Lookup table associating the simulation parameters to the corresponding fitted FTR parameters.
Struct holding the Fluctuating Two Ray fast-fading model parameters.
double m_delta
Parameter delta [0, 1].
double m_sigma
Parameter sigma.
double m_m
Parameter m for the Gamma variable.