A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ns3::ThreeLogDistancePropagationLossModel Class Reference

A log distance path loss propagation model with three distance fields. This model is the same as ns3::LogDistancePropagationLossModel except that it has three distance fields: near, middle and far with different exponents. More...

#include <propagation-loss-model.h>

+ Inheritance diagram for ns3::ThreeLogDistancePropagationLossModel:
+ Collaboration diagram for ns3::ThreeLogDistancePropagationLossModel:

Public Member Functions

 ThreeLogDistancePropagationLossModel ()
- Public Member Functions inherited from ns3::PropagationLossModel
 PropagationLossModel ()
virtual ~PropagationLossModel ()
int64_t AssignStreams (int64_t stream)
double CalcRxPower (double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
Ptr< PropagationLossModelGetNext ()
 Gets the next PropagationLossModel in the chain of loss models that act on the signal.
void SetNext (Ptr< PropagationLossModel > next)
 Enables a chain of loss models to act on the signal.
- Public Member Functions inherited from ns3::Object
 Object ()
virtual ~Object ()
void AggregateObject (Ptr< Object > other)
void Dispose (void)
AggregateIterator GetAggregateIterator (void) const
virtual TypeId GetInstanceTypeId (void) const
template<typename T >
Ptr< T > GetObject (void) const
template<typename T >
Ptr< T > GetObject (TypeId tid) const
void Start (void)
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 SimpleRefCount (const SimpleRefCount &o)
uint32_t GetReferenceCount (void) const
SimpleRefCountoperator= (const SimpleRefCount &o)
void Ref (void) const
void Unref (void) const
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
void GetAttribute (std::string name, AttributeValue &value) const
bool GetAttributeFailSafe (std::string name, AttributeValue &attribute) const
void SetAttribute (std::string name, const AttributeValue &value)
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)

Static Public Member Functions

static TypeId GetTypeId (void)
 This method returns the TypeId associated to ns3::ThreeLogDistancePropagationLossModel.

Private Member Functions

 ThreeLogDistancePropagationLossModel (const ThreeLogDistancePropagationLossModel &o)
virtual int64_t DoAssignStreams (int64_t stream)
virtual double DoCalcRxPower (double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
ThreeLogDistancePropagationLossModeloperator= (const ThreeLogDistancePropagationLossModel &o)

Private Attributes

double m_distance0
double m_distance1
double m_distance2
double m_exponent0
double m_exponent1
double m_exponent2
double m_referenceLoss

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
virtual void DoDispose (void)
virtual void DoStart (void)
virtual void NotifyNewAggregate (void)

Detailed Description

A log distance path loss propagation model with three distance fields. This model is the same as ns3::LogDistancePropagationLossModel except that it has three distance fields: near, middle and far with different exponents.

Within each field the reception power is calculated using the log-distance propagation equation:

\[ L = L_0 + 10 \cdot n_0 log_{10}(\frac{d}{d_0})\]

Each field begins where the previous ends and all together form a continuous function.

There are three valid distance fields: near, middle, far. Actually four: the first from 0 to the reference distance is invalid and returns txPowerDbm.

\[ \underbrace{0 \cdots\cdots}_{=0} \underbrace{d_0 \cdots\cdots}_{n_0} \underbrace{d_1 \cdots\cdots}_{n_1} \underbrace{d_2 \cdots\cdots}_{n_2} \infty \]

Complete formula for the path loss in dB:

\[\displaystyle L = \begin{cases} 0 & d < d_0 \\ L_0 + 10 \cdot n_0 \log_{10}(\frac{d}{d_0}) & d_0 \leq d < d_1 \\ L_0 + 10 \cdot n_0 \log_{10}(\frac{d_1}{d_0}) + 10 \cdot n_1 \log_{10}(\frac{d}{d_1}) & d_1 \leq d < d_2 \\ L_0 + 10 \cdot n_0 \log_{10}(\frac{d_1}{d_0}) + 10 \cdot n_1 \log_{10}(\frac{d_2}{d_1}) + 10 \cdot n_2 \log_{10}(\frac{d}{d_2})& d_2 \leq d \end{cases}\]

where:

  • $ L $ : resulting path loss (dB)
  • $ d $ : distance (m)
  • $ d_0, d_1, d_2 $ : three distance fields (m)
  • $ n_0, n_1, n_2 $ : path loss distance exponent for each field (unitless)
  • $ L_0 $ : path loss at reference distance (dB)

When the path loss is requested at a distance smaller than the reference distance $ d_0 $, the tx power (with no path loss) is returned. The reference distance defaults to 1m and reference loss defaults to ns3::FriisPropagationLossModel with 5.15 GHz and is thus $ L_0 $ = 46.67 dB.

Definition at line 424 of file propagation-loss-model.h.

Constructor & Destructor Documentation

ns3::ThreeLogDistancePropagationLossModel::ThreeLogDistancePropagationLossModel ( )

Definition at line 588 of file propagation-loss-model.cc.

ns3::ThreeLogDistancePropagationLossModel::ThreeLogDistancePropagationLossModel ( const ThreeLogDistancePropagationLossModel o)
private

Member Function Documentation

int64_t ns3::ThreeLogDistancePropagationLossModel::DoAssignStreams ( int64_t  stream)
privatevirtual

Definition at line 634 of file propagation-loss-model.cc.

double ns3::ThreeLogDistancePropagationLossModel::DoCalcRxPower ( double  txPowerDbm,
Ptr< MobilityModel a,
Ptr< MobilityModel b 
) const
privatevirtual
TypeId ns3::ThreeLogDistancePropagationLossModel::GetTypeId ( void  )
static

This method returns the TypeId associated to ns3::ThreeLogDistancePropagationLossModel.

This object is accessible through the following paths with Config::Set and Config::Connect:

  • /NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Channel/$ns3::YansWifiChannel/PropagationLossModel/$ns3::ThreeLogDistancePropagationLossModel

Attributes defined for this type:

  • Distance0: Beginning of the first (near) distance field
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 1
    • Flags: construct write read
  • Distance1: Beginning of the second (middle) distance field.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 200
    • Flags: construct write read
  • Distance2: Beginning of the third (far) distance field.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 500
    • Flags: construct write read
  • Exponent0: The exponent for the first field.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 1.9
    • Flags: construct write read
  • Exponent1: The exponent for the second field.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 3.8
    • Flags: construct write read
  • Exponent2: The exponent for the third field.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 3.8
    • Flags: construct write read
  • ReferenceLoss: The reference loss at distance d0 (dB). (Default is Friis at 1m with 5.15 GHz)
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 46.6777
    • Flags: construct write read

No TraceSources defined for this type.

Reimplemented from ns3::PropagationLossModel.

Definition at line 543 of file propagation-loss-model.cc.

References m_distance0, m_distance1, m_distance2, m_exponent0, m_exponent1, m_exponent2, m_referenceLoss, and ns3::TypeId::SetParent().

+ Here is the call graph for this function:

ThreeLogDistancePropagationLossModel& ns3::ThreeLogDistancePropagationLossModel::operator= ( const ThreeLogDistancePropagationLossModel o)
private

Member Data Documentation

double ns3::ThreeLogDistancePropagationLossModel::m_distance0
private

Definition at line 441 of file propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().

double ns3::ThreeLogDistancePropagationLossModel::m_distance1
private

Definition at line 442 of file propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().

double ns3::ThreeLogDistancePropagationLossModel::m_distance2
private

Definition at line 443 of file propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().

double ns3::ThreeLogDistancePropagationLossModel::m_exponent0
private

Definition at line 445 of file propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().

double ns3::ThreeLogDistancePropagationLossModel::m_exponent1
private

Definition at line 446 of file propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().

double ns3::ThreeLogDistancePropagationLossModel::m_exponent2
private

Definition at line 447 of file propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().

double ns3::ThreeLogDistancePropagationLossModel::m_referenceLoss
private

Definition at line 449 of file propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().


The documentation for this class was generated from the following files: