A Discrete-Event Network Simulator
API
ns3::ThreeGppPropagationLossModel Class Referenceabstract

Base class for the 3GPP propagation models. More...

#include "three-gpp-propagation-loss-model.h"

+ Inheritance diagram for ns3::ThreeGppPropagationLossModel:
+ Collaboration diagram for ns3::ThreeGppPropagationLossModel:

Classes

struct  ShadowingMapItem
 Define a struct for the m_shadowingMap entries. More...
 

Public Member Functions

 ThreeGppPropagationLossModel ()
 Constructor. More...
 
 ThreeGppPropagationLossModel (const ThreeGppPropagationLossModel &)=delete
 Copy constructor. More...
 
virtual ~ThreeGppPropagationLossModel () override
 Destructor. More...
 
Ptr< ChannelConditionModelGetChannelConditionModel (void) const
 Returns the associated channel condition model. More...
 
double GetFrequency (void) const
 Return the current central frequency. More...
 
ThreeGppPropagationLossModeloperator= (const ThreeGppPropagationLossModel &)=delete
 Copy constructor. More...
 
void SetChannelConditionModel (Ptr< ChannelConditionModel > model)
 Set the channel condition model used to determine the channel state (e.g., the LOS/NLOS condition) More...
 
void SetFrequency (double f)
 Set the central frequency of the model. More...
 
- Public Member Functions inherited from ns3::PropagationLossModel
 PropagationLossModel ()
 
virtual ~PropagationLossModel ()
 
int64_t AssignStreams (int64_t stream)
 If this loss model uses objects of type RandomVariableStream, set the stream numbers to the integers starting with the offset 'stream'. More...
 
double CalcRxPower (double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const
 Returns the Rx Power taking into account all the PropagationLossModel(s) chained to the current one. More...
 
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
 Object ()
 Constructor. More...
 
virtual ~Object ()
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose (void)
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator (void) const
 Get an iterator to the Objects aggregated to this one. More...
 
virtual TypeId GetInstanceTypeId (void) const
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject (void) const
 Get a pointer to the requested aggregated Object. More...
 
template<typename T >
Ptr< T > GetObject (TypeId tid) const
 Get a pointer to the requested aggregated Object by TypeId. More...
 
template<>
Ptr< ObjectGetObject () const
 
template<>
Ptr< ObjectGetObject (TypeId tid) const
 
void Initialize (void)
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized (void) const
 Check if the object has been initialized. More...
 
- Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter >
 SimpleRefCount ()
 Default constructor. More...
 
 SimpleRefCount (const SimpleRefCount &o)
 Copy constructor. More...
 
uint32_t GetReferenceCount (void) const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o)
 Assignment operator. More...
 
void Ref (void) const
 Increment the reference count. More...
 
void Unref (void) const
 Decrement the reference count. More...
 
- Public Member Functions inherited from ns3::ObjectBase
virtual ~ObjectBase ()
 Virtual destructor. More...
 
void GetAttribute (std::string name, AttributeValue &value) const
 Get the value of an attribute, raising fatal errors if unsuccessful. More...
 
bool GetAttributeFailSafe (std::string name, AttributeValue &value) const
 Get the value of an attribute without raising erros. More...
 
void SetAttribute (std::string name, const AttributeValue &value)
 Set a single attribute, raising fatal errors if unsuccessful. More...
 
bool SetAttributeFailSafe (std::string name, const AttributeValue &value)
 Set a single attribute without raising errors. More...
 
bool TraceConnect (std::string name, std::string context, const CallbackBase &cb)
 Connect a TraceSource to a Callback with a context. More...
 
bool TraceConnectWithoutContext (std::string name, const CallbackBase &cb)
 Connect a TraceSource to a Callback without a context. More...
 
bool TraceDisconnect (std::string name, std::string context, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected with a context. More...
 
bool TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb)
 Disconnect from a TraceSource a Callback previously connected without a context. More...
 

Static Public Member Functions

static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::PropagationLossModel
static TypeId GetTypeId (void)
 Get the type ID. More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId (void)
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId (void)
 Get the type ID. More...
 

Protected Member Functions

virtual void DoDispose () override
 Destructor implementation. More...
 
- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoInitialize (void)
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate (void)
 Notify all Objects aggregated to this one of a new Object being aggregated. More...
 
- Protected Member Functions inherited from ns3::ObjectBase
void ConstructSelf (const AttributeConstructionList &attributes)
 Complete construction of ObjectBase; invoked by derived classes. More...
 
virtual void NotifyConstructionCompleted (void)
 Notifier called once the ObjectBase is fully constructed. More...
 

Static Protected Member Functions

static double Calculate2dDistance (Vector a, Vector b)
 Computes the 2D distance between two 3D vectors. More...
 

Protected Attributes

Ptr< ChannelConditionModelm_channelConditionModel
 pointer to the channel condition model More...
 
double m_frequency
 operating frequency in Hz More...
 
Ptr< NormalRandomVariablem_normRandomVariable
 normal random variable More...
 
bool m_shadowingEnabled
 enable/disable shadowing More...
 
std::unordered_map< uint32_t, ShadowingMapItemm_shadowingMap
 map to store the shadowing values More...
 

Private Member Functions

virtual int64_t DoAssignStreams (int64_t stream) override
 If this model uses objects of type RandomVariableStream, set the stream numbers to the integers starting with the offset 'stream'. More...
 
virtual double DoCalcRxPower (double txPowerDbm, Ptr< MobilityModel > a, Ptr< MobilityModel > b) const override
 Computes the received power by applying the pathloss model described in 3GPP TR 38.901. More...
 
virtual double GetLossLos (double distance2D, double distance3D, double hUt, double hBs) const =0
 Computes the pathloss between a and b considering that the line of sight is not obstructed. More...
 
virtual double GetLossNlos (double distance2D, double distance3D, double hUt, double hBs) const =0
 Computes the pathloss between a and b considering that the line of sight is obstructed. More...
 
double GetShadowing (Ptr< MobilityModel > a, Ptr< MobilityModel > b, ChannelCondition::LosConditionValue cond) const
 Retrieves the shadowing value by looking at m_shadowingMap. More...
 
virtual double GetShadowingCorrelationDistance (ChannelCondition::LosConditionValue cond) const =0
 Returns the shadow fading correlation distance. More...
 
virtual double GetShadowingStd (Ptr< MobilityModel > a, Ptr< MobilityModel > b, ChannelCondition::LosConditionValue cond) const =0
 Returns the shadow fading standard deviation. More...
 
virtual std::pair< double, double > GetUtAndBsHeights (double za, double zb) const
 Determines hUT and hBS. More...
 

Static Private Member Functions

static uint32_t GetKey (Ptr< MobilityModel > a, Ptr< MobilityModel > b)
 Returns an unique key for the channel between a and b. More...
 
static Vector GetVectorDifference (Ptr< MobilityModel > a, Ptr< MobilityModel > b)
 Get the difference between the node position. More...
 

Additional Inherited Members

Detailed Description

Base class for the 3GPP propagation models.


Config Paths

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

  • "/NodeList/[i]/DeviceList/[i]/$ns3::LrWpanNetDevice/Channel/PropagationLossModel/$ns3::ThreeGppPropagationLossModel"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Channel/$ns3::SpectrumChannel/PropagationLossModel/$ns3::ThreeGppPropagationLossModel"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WifiNetDevice/Channel/$ns3::YansWifiChannel/PropagationLossModel/$ns3::ThreeGppPropagationLossModel"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WaveNetDevice/Channel/$ns3::SpectrumChannel/PropagationLossModel/$ns3::ThreeGppPropagationLossModel"
  • "/NodeList/[i]/DeviceList/[i]/$ns3::WaveNetDevice/Channel/$ns3::YansWifiChannel/PropagationLossModel/$ns3::ThreeGppPropagationLossModel"
  • "/ChannelList/[i]/$ns3::SpectrumChannel/PropagationLossModel/$ns3::ThreeGppPropagationLossModel"
  • "/ChannelList/[i]/$ns3::YansWifiChannel/PropagationLossModel/$ns3::ThreeGppPropagationLossModel"

Attributes

  • Frequency: The centre frequency in Hz.
    • Set with class: ns3::DoubleValue
    • Underlying type: double -1.79769e+308:1.79769e+308
    • Initial value: 5e+08
    • Flags: construct write read
  • ShadowingEnabled: Enable/disable shadowing.
    • Set with class: BooleanValue
    • Underlying type: bool
    • Initial value: true
    • Flags: construct write read
  • ChannelConditionModel: Pointer to the channel condition model.

No TraceSources are defined for this type.
Size of this type is 128 bytes (on a 64-bit architecture).

Definition at line 31 of file three-gpp-propagation-loss-model.h.

Constructor & Destructor Documentation

◆ ThreeGppPropagationLossModel() [1/2]

ns3::ThreeGppPropagationLossModel::ThreeGppPropagationLossModel ( )

Constructor.

Definition at line 65 of file three-gpp-propagation-loss-model.cc.

References m_normRandomVariable, and NS_LOG_FUNCTION.

◆ ~ThreeGppPropagationLossModel()

ns3::ThreeGppPropagationLossModel::~ThreeGppPropagationLossModel ( )
overridevirtual

Destructor.

Definition at line 76 of file three-gpp-propagation-loss-model.cc.

References NS_LOG_FUNCTION.

◆ ThreeGppPropagationLossModel() [2/2]

ns3::ThreeGppPropagationLossModel::ThreeGppPropagationLossModel ( const ThreeGppPropagationLossModel )
delete

Copy constructor.

Defined and unimplemented to avoid misuse

Member Function Documentation

◆ Calculate2dDistance()

double ns3::ThreeGppPropagationLossModel::Calculate2dDistance ( Vector  a,
Vector  b 
)
staticprotected

Computes the 2D distance between two 3D vectors.

Parameters
athe first 3D vector
bthe second 3D vector
Returns
the 2D distance between a and b

Definition at line 237 of file three-gpp-propagation-loss-model.cc.

References sample-rng-plot::x.

Referenced by DoCalcRxPower(), and ns3::ThreeGppRmaPropagationLossModel::GetShadowingStd().

+ Here is the caller graph for this function:

◆ DoAssignStreams()

int64_t ns3::ThreeGppPropagationLossModel::DoAssignStreams ( int64_t  stream)
overrideprivatevirtual

If this model uses objects of type RandomVariableStream, set the stream numbers to the integers starting with the offset 'stream'.

Return the number of streams (possibly zero) that have been assigned.

Parameters
stream
Returns
the number of stream indices assigned by this model

Implements ns3::PropagationLossModel.

Reimplemented in ns3::ThreeGppUmaPropagationLossModel.

Definition at line 228 of file three-gpp-propagation-loss-model.cc.

References m_normRandomVariable, and NS_LOG_FUNCTION.

◆ DoCalcRxPower()

double ns3::ThreeGppPropagationLossModel::DoCalcRxPower ( double  txPowerDbm,
Ptr< MobilityModel a,
Ptr< MobilityModel b 
) const
overrideprivatevirtual

Computes the received power by applying the pathloss model described in 3GPP TR 38.901.

Parameters
txPowerDbmtx power in dBm
atx mobility model
brx mobility model
Returns
the rx power in dBm

Implements ns3::PropagationLossModel.

Definition at line 119 of file three-gpp-propagation-loss-model.cc.

References Calculate2dDistance(), ns3::CalculateDistance(), GetLossLos(), GetLossNlos(), ns3::MobilityModel::GetPosition(), GetShadowing(), GetUtAndBsHeights(), m_channelConditionModel, m_frequency, m_shadowingEnabled, NS_ASSERT_MSG, NS_FATAL_ERROR, NS_LOG_DEBUG, and NS_LOG_FUNCTION.

+ Here is the call graph for this function:

◆ DoDispose()

void ns3::ThreeGppPropagationLossModel::DoDispose ( void  )
overrideprotectedvirtual

Destructor implementation.

This method is called by Dispose() or by the Object's destructor, whichever comes first.

Subclasses are expected to implement their real destruction code in an overridden version of this method and chain up to their parent's implementation once they are done. i.e, for simplicity, the destructor of every subclass should be empty and its content should be moved to the associated DoDispose() method.

It is safe to call GetObject() from within this method.

Reimplemented from ns3::Object.

Definition at line 82 of file three-gpp-propagation-loss-model.cc.

References m_channelConditionModel, and m_shadowingMap.

◆ GetChannelConditionModel()

Ptr< ChannelConditionModel > ns3::ThreeGppPropagationLossModel::GetChannelConditionModel ( void  ) const

Returns the associated channel condition model.

Returns
the channel condition model

Definition at line 97 of file three-gpp-propagation-loss-model.cc.

References m_channelConditionModel, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetFrequency()

double ns3::ThreeGppPropagationLossModel::GetFrequency ( void  ) const

Return the current central frequency.

Returns
The current central frequency

Definition at line 112 of file three-gpp-propagation-loss-model.cc.

References m_frequency, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the caller graph for this function:

◆ GetKey()

uint32_t ns3::ThreeGppPropagationLossModel::GetKey ( Ptr< MobilityModel a,
Ptr< MobilityModel b 
)
staticprivate

Returns an unique key for the channel between a and b.

The key is the value of the Cantor function calculated by using as first parameter the lowest node ID, and as a second parameter the highest node ID.

Parameters
atx mobility model
brx mobility model
Returns
channel key

Definition at line 247 of file three-gpp-propagation-loss-model.cc.

References ns3::Node::GetId(), ns3::Object::GetObject(), max, and min.

Referenced by GetShadowing().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetLossLos()

virtual double ns3::ThreeGppPropagationLossModel::GetLossLos ( double  distance2D,
double  distance3D,
double  hUt,
double  hBs 
) const
privatepure virtual

Computes the pathloss between a and b considering that the line of sight is not obstructed.

Parameters
distance2Dthe 2D distance between tx and rx in meters
distance3Dthe 3D distance between tx and rx in meters
hUtthe height of the UT in meters
hBsthe height of the BS in meters
Returns
pathloss value in dB

Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, and ns3::ThreeGppRmaPropagationLossModel.

Referenced by DoCalcRxPower().

+ Here is the caller graph for this function:

◆ GetLossNlos()

virtual double ns3::ThreeGppPropagationLossModel::GetLossNlos ( double  distance2D,
double  distance3D,
double  hUt,
double  hBs 
) const
privatepure virtual

Computes the pathloss between a and b considering that the line of sight is obstructed.

Parameters
distance2Dthe 2D distance between tx and rx in meters
distance3Dthe 3D distance between tx and rx in meters
hUtthe height of the UT in meters
hBsthe height of the BS in meters
Returns
pathloss value in dB

Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, and ns3::ThreeGppRmaPropagationLossModel.

Referenced by DoCalcRxPower().

+ Here is the caller graph for this function:

◆ GetShadowing()

double ns3::ThreeGppPropagationLossModel::GetShadowing ( Ptr< MobilityModel a,
Ptr< MobilityModel b,
ChannelCondition::LosConditionValue  cond 
) const
private

Retrieves the shadowing value by looking at m_shadowingMap.

If not found or if the channel condition changed it generates a new independent realization and stores it in the map, otherwise it correlates the new value with the previous one using the autocorrelation function defined in 3GPP TR 38.901, Sec. 7.4.4.

Parameters
atx mobility model
brx mobility model
condthe LOS/NLOS channel condition
Returns
shadowing loss in dB

Definition at line 166 of file three-gpp-propagation-loss-model.cc.

References GetKey(), ns3::Vector2D::GetLength(), GetShadowingCorrelationDistance(), GetShadowingStd(), GetVectorDifference(), m_normRandomVariable, m_shadowingMap, and NS_LOG_FUNCTION.

Referenced by DoCalcRxPower().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ GetShadowingCorrelationDistance()

virtual double ns3::ThreeGppPropagationLossModel::GetShadowingCorrelationDistance ( ChannelCondition::LosConditionValue  cond) const
privatepure virtual

Returns the shadow fading correlation distance.

Parameters
condthe LOS/NLOS channel condition
Returns
shadowing correlation distance in meters

Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, and ns3::ThreeGppRmaPropagationLossModel.

Referenced by GetShadowing().

+ Here is the caller graph for this function:

◆ GetShadowingStd()

virtual double ns3::ThreeGppPropagationLossModel::GetShadowingStd ( Ptr< MobilityModel a,
Ptr< MobilityModel b,
ChannelCondition::LosConditionValue  cond 
) const
privatepure virtual

Returns the shadow fading standard deviation.

Parameters
atx mobility model
brx mobility model
condthe LOS/NLOS channel condition
Returns
shadowing std in dB

Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, and ns3::ThreeGppRmaPropagationLossModel.

Referenced by GetShadowing().

+ Here is the caller graph for this function:

◆ GetTypeId()

TypeId ns3::ThreeGppPropagationLossModel::GetTypeId ( void  )
static

◆ GetUtAndBsHeights()

std::pair< double, double > ns3::ThreeGppPropagationLossModel::GetUtAndBsHeights ( double  za,
double  zb 
) const
privatevirtual

Determines hUT and hBS.

The default implementation assumes that the tallest node is the BS and the smallest is the UT. The derived classes can change the default behavior by overriding this method.

Parameters
zathe height of the first node in meters
zbthe height of the second node in meters
Returns
std::pair of heights in meters, the first element is hUt and the second is hBs

Reimplemented in ns3::ThreeGppUmiStreetCanyonPropagationLossModel.

Definition at line 217 of file three-gpp-propagation-loss-model.cc.

References max, and min.

Referenced by DoCalcRxPower().

+ Here is the caller graph for this function:

◆ GetVectorDifference()

Vector ns3::ThreeGppPropagationLossModel::GetVectorDifference ( Ptr< MobilityModel a,
Ptr< MobilityModel b 
)
staticprivate

Get the difference between the node position.

The difference is calculated as (b-a) if Id(a) < Id (b), or (a-b) if Id(b) <= Id(a).

Parameters
aFirst node
bSecond node
Returns
the difference between the node vector position

Definition at line 261 of file three-gpp-propagation-loss-model.cc.

References ns3::Object::GetObject(), and ns3::MobilityModel::GetPosition().

Referenced by GetShadowing().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

◆ operator=()

ThreeGppPropagationLossModel& ns3::ThreeGppPropagationLossModel::operator= ( const ThreeGppPropagationLossModel )
delete

Copy constructor.

Defined and unimplemented to avoid misuse

Returns
the ThreeGppPropagationLossModel instance

◆ SetChannelConditionModel()

void ns3::ThreeGppPropagationLossModel::SetChannelConditionModel ( Ptr< ChannelConditionModel model)

Set the channel condition model used to determine the channel state (e.g., the LOS/NLOS condition)

Parameters
modelpointer to the channel condition model

Definition at line 90 of file three-gpp-propagation-loss-model.cc.

References m_channelConditionModel, and NS_LOG_FUNCTION.

Referenced by ThreeGppShadowingTestCase::ChangeChannelCondition(), GetTypeId(), and ThreeGppShadowingTestCase::RunTest().

+ Here is the caller graph for this function:

◆ SetFrequency()

void ns3::ThreeGppPropagationLossModel::SetFrequency ( double  f)

Set the central frequency of the model.

Parameters
fthe central frequency in the range in Hz, between 500.0e6 and 100.0e9 Hz

Definition at line 104 of file three-gpp-propagation-loss-model.cc.

References f(), m_frequency, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

Referenced by GetTypeId().

+ Here is the call graph for this function:
+ Here is the caller graph for this function:

Member Data Documentation

◆ m_channelConditionModel

◆ m_frequency

◆ m_normRandomVariable

Ptr<NormalRandomVariable> ns3::ThreeGppPropagationLossModel::m_normRandomVariable
protected

◆ m_shadowingEnabled

bool ns3::ThreeGppPropagationLossModel::m_shadowingEnabled
protected

enable/disable shadowing

Definition at line 214 of file three-gpp-propagation-loss-model.h.

Referenced by DoCalcRxPower(), and GetTypeId().

◆ m_shadowingMap

std::unordered_map<uint32_t, ShadowingMapItem> ns3::ThreeGppPropagationLossModel::m_shadowingMap
mutableprotected

map to store the shadowing values

Definition at line 225 of file three-gpp-propagation-loss-model.h.

Referenced by DoDispose(), and GetShadowing().


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