|
|
| 140 |
|
140 |
|
| 141 |
NS_OBJECT_ENSURE_REGISTERED (FriisPropagationLossModel); |
141 |
NS_OBJECT_ENSURE_REGISTERED (FriisPropagationLossModel); |
| 142 |
|
142 |
|
| 143 |
const double FriisPropagationLossModel::PI = 3.14159265358979323846; |
|
|
| 144 |
|
| 145 |
TypeId |
143 |
TypeId |
| 146 |
FriisPropagationLossModel::GetTypeId (void) |
144 |
FriisPropagationLossModel::GetTypeId (void) |
| 147 |
{ |
145 |
{ |
|
|
| 264 |
return txPowerDbm - m_minLoss; |
262 |
return txPowerDbm - m_minLoss; |
| 265 |
} |
263 |
} |
| 266 |
double numerator = m_lambda * m_lambda; |
264 |
double numerator = m_lambda * m_lambda; |
| 267 |
double denominator = 16 * PI * PI * distance * distance * m_systemLoss; |
265 |
double denominator = 16 * M_PI * M_PI * distance * distance * m_systemLoss; |
| 268 |
double lossDb = -10 * log10 (numerator / denominator); |
266 |
double lossDb = -10 * log10 (numerator / denominator); |
| 269 |
NS_LOG_DEBUG ("distance=" << distance<< "m, loss=" << lossDb <<"dB"); |
267 |
NS_LOG_DEBUG ("distance=" << distance<< "m, loss=" << lossDb <<"dB"); |
| 270 |
return txPowerDbm - std::max (lossDb, m_minLoss); |
268 |
return txPowerDbm - std::max (lossDb, m_minLoss); |
|
|
| 281 |
|
279 |
|
| 282 |
NS_OBJECT_ENSURE_REGISTERED (TwoRayGroundPropagationLossModel); |
280 |
NS_OBJECT_ENSURE_REGISTERED (TwoRayGroundPropagationLossModel); |
| 283 |
|
281 |
|
| 284 |
const double TwoRayGroundPropagationLossModel::PI = 3.14159265358979323846; |
|
|
| 285 |
|
| 286 |
TypeId |
282 |
TypeId |
| 287 |
TwoRayGroundPropagationLossModel::GetTypeId (void) |
283 |
TwoRayGroundPropagationLossModel::GetTypeId (void) |
| 288 |
{ |
284 |
{ |
|
|
| 419 |
* |
415 |
* |
| 420 |
*/ |
416 |
*/ |
| 421 |
|
417 |
|
| 422 |
double dCross = (4 * PI * txAntHeight * rxAntHeight) / m_lambda; |
418 |
double dCross = (4 * M_PI * txAntHeight * rxAntHeight) / m_lambda; |
| 423 |
double tmp = 0; |
419 |
double tmp = 0; |
| 424 |
if (distance <= dCross) |
420 |
if (distance <= dCross) |
| 425 |
{ |
421 |
{ |
| 426 |
// We use Friis |
422 |
// We use Friis |
| 427 |
double numerator = m_lambda * m_lambda; |
423 |
double numerator = m_lambda * m_lambda; |
| 428 |
tmp = PI * distance; |
424 |
tmp = M_PI * distance; |
| 429 |
double denominator = 16 * tmp * tmp * m_systemLoss; |
425 |
double denominator = 16 * tmp * tmp * m_systemLoss; |
| 430 |
double pr = 10 * std::log10 (numerator / denominator); |
426 |
double pr = 10 * std::log10 (numerator / denominator); |
| 431 |
NS_LOG_DEBUG ("Receiver within crossover (" << dCross << "m) for Two_ray path; using Friis"); |
427 |
NS_LOG_DEBUG ("Receiver within crossover (" << dCross << "m) for Two_ray path; using Friis"); |