A Discrete-Event Network Simulator
API
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Friends 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:

Static Public Member Functions

static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::PropagationLossModel
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 
- Static Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
static void Cleanup (void)
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 

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

- Public Member Functions inherited from ns3::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. More...
 
void SetNext (Ptr< PropagationLossModel > next)
 Enables a chain of loss models to act on the signal. More...
 
- Public Member Functions inherited from ns3::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 Initialize (void)
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 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
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)
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 
virtual void DoDispose (void)
 
virtual void DoInitialize (void)
 
virtual void NotifyNewAggregate (void)
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 
virtual void NotifyConstructionCompleted (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.

Config Paths

ns3::ThreeLogDistancePropagationLossModel is accessible through the following paths with Config::Set and Config::Connect:

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

Attributes

  • 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 are defined for this type.

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

Member Function Documentation

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

Subclasses must implement this; those not using random variables can return zero

Implements ns3::PropagationLossModel.

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


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