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.