|
|
| 54 |
double |
54 |
double |
| 55 |
UanPropModelThorp::GetPathLossDb (Ptr<MobilityModel> a, Ptr<MobilityModel> b, UanTxMode mode) |
55 |
UanPropModelThorp::GetPathLossDb (Ptr<MobilityModel> a, Ptr<MobilityModel> b, UanTxMode mode) |
| 56 |
{ |
56 |
{ |
| 57 |
double distKyd = a->GetDistanceFrom (b) / 1.093613298; // Convert from dB/km to dB/kyd |
57 |
double dist = a->GetDistanceFrom (b); |
| 58 |
|
58 |
|
| 59 |
return m_SpreadCoef * 10.0 * log10 (distKyd) |
59 |
return m_SpreadCoef * 10.0 * log10 (dist) |
| 60 |
+ distKyd * GetAttenDbKyd (mode.GetCenterFreqHz () / 1000.0); |
60 |
+ dist * GetAttenDbKm (mode.GetCenterFreqHz () / 1000.0); |
| 61 |
} |
61 |
} |
| 62 |
|
62 |
|
| 63 |
UanPdp |
63 |
UanPdp |
|
|
| 76 |
UanPropModelThorp::GetAttenDbKyd (double freqKhz) |
76 |
UanPropModelThorp::GetAttenDbKyd (double freqKhz) |
| 77 |
{ |
77 |
{ |
| 78 |
|
78 |
|
|
|
79 |
return GetAttenDbKm (freqKhz) / 1.093613298; |
| 80 |
} |
| 81 |
|
| 82 |
double |
| 83 |
UanPropModelThorp::GetAttenDbKm (double freqKhz) |
| 84 |
{ |
| 85 |
|
| 79 |
double fsq = freqKhz * freqKhz; |
86 |
double fsq = freqKhz * freqKhz; |
| 80 |
double atten; |
87 |
double atten; |
| 81 |
|
88 |
|
| 82 |
if (freqKhz < 0.4) |
89 |
if (freqKhz >= 0.4) |
| 83 |
{ |
90 |
{ |
| 84 |
atten = 0.11 * fsq / (1 + fsq) + 44 * fsq / (4100 + freqKhz) |
91 |
atten = 0.11 * fsq / (1 + fsq) + 44 * fsq / (4100 + freqKhz) |
| 85 |
+ 2.75 * 0.0001 * fsq + 0.003; |
92 |
+ 2.75 * 0.0001 * fsq + 0.003; |