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

a Friis propagation loss model More...

#include <propagation-loss-model.h>

+ Inheritance diagram for ns3::FriisPropagationLossModel:

Public Member Functions

double GetFrequency (void) const
 
double GetMinDistance (void) const
 
double GetSystemLoss (void) const
 
void SetFrequency (double frequency)
 
void SetMinDistance (double minDistance)
 
void SetSystemLoss (double systemLoss)
 
- 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)
 

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

 FriisPropagationLossModel (const FriisPropagationLossModel &o)
 
double DbmFromW (double w) const
 
double DbmToW (double dbm) const
 
virtual int64_t DoAssignStreams (int64_t stream)
 
virtual double DoCalcRxPower (double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
 
FriisPropagationLossModeloperator= (const FriisPropagationLossModel &o)
 

Private Attributes

double m_frequency
 
double m_lambda
 
double m_minDistance
 
double m_systemLoss
 

Static Private Attributes

static const double PI = 3.14159265358979323846
 

Additional Inherited Members

- 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 Friis propagation loss model

The Friis propagation loss model was first described in "A Note on a Simple Transmission Formula", by "Harald T. Friis".

The original equation was described as: $ \frac{P_r}{P_t} = \frac{A_r A_t}{d^2\lambda^2} $ with the following equation for the case of an isotropic antenna with no heat loss: $ A_{isotr.} = \frac{\lambda^2}{4\pi} $

The final equation becomes: $ \frac{P_r}{P_t} = \frac{\lambda^2}{(4 \pi d)^2} $

Modern extensions to this original equation are: $ P_r = \frac{P_t G_t G_r \lambda^2}{(4 \pi d)^2 L}$

With:

  • $ P_r $ : reception power (W)
  • $ P_t $ : transmission power (W)
  • $ G_t $ : transmission gain (unit-less)
  • $ G_r $ : reception gain (unit-less)
  • $ \lambda $ : wavelength (m)
  • $ d $ : distance (m)
  • $ L $ : system loss (unit-less)

This model is invalid for small distance values. The current implementation returns the txpower as the rxpower for any distance smaller than MinDistance.

In the implementation, $ \lambda $ is calculated as $ \frac{C}{f} $, where $ C = 299792458$ m/s is the speed of light in vacuum, and $ f $ is the frequency in Hz which can be configured by the user via the Frequency attribute.

Config Paths

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

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

Attributes

  • Frequency: The carrier frequency (in Hz) at which propagation occurs (default is 5.15 GHz).
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 5.15e+09
    • Flags: construct write read
  • SystemLoss: The system loss
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 1
    • Flags: construct write read
  • MinDistance: The distance under which the propagation model refuses to give results (m)
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 0.5
    • Flags: construct write read

No TraceSources are defined for this type.

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

Member Function Documentation

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

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

Implements ns3::PropagationLossModel.

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

double ns3::FriisPropagationLossModel::GetFrequency ( void  ) const
Returns
the current frequency (Hz)

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

double ns3::FriisPropagationLossModel::GetMinDistance ( void  ) const
Returns
the minimum distance.

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

double ns3::FriisPropagationLossModel::GetSystemLoss ( void  ) const
Returns
the current system loss (dimension-less)

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

void ns3::FriisPropagationLossModel::SetFrequency ( double  frequency)
Parameters
frequency(Hz)

Set the carrier frequency used in the Friis model calculation.

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

void ns3::FriisPropagationLossModel::SetMinDistance ( double  minDistance)
Parameters
minDistancethe minimum distance

Below this distance, the txpower is returned unmodified as the rxpower.

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

void ns3::FriisPropagationLossModel::SetSystemLoss ( double  systemLoss)
Parameters
systemLoss(dimension-less)

Set the system loss used by the Friis propagation model.

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


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