Base class for the 3GPP propagation models. More...
#include "threegpppropagationlossmodel.h"
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< ChannelConditionModel >  GetChannelConditionModel (void) const 
Returns the associated channel condition model. More...  
double  GetFrequency (void) const 
Return the current central frequency. More...  
ThreeGppPropagationLossModel &  operator= (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< PropagationLossModel >  GetNext () 
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< Object >  GetObject () const 
template<>  
Ptr< Object >  GetObject (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...  
SimpleRefCount &  operator= (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< ChannelConditionModel >  m_channelConditionModel 
pointer to the channel condition model More...  
double  m_frequency 
operating frequency in Hz More...  
Ptr< NormalRandomVariable >  m_normRandomVariable 
normal random variable More...  
bool  m_shadowingEnabled 
enable/disable shadowing More...  
std::unordered_map< uint32_t, ShadowingMapItem >  m_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...  
double  GetLoss (Ptr< ChannelCondition > cond, double distance2D, double distance3D, double hUt, double hBs) const 
Computes the pathloss between a and b. 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...  
virtual double  GetLossNlosv (double distance2D, double distance3D, double hUt, double hBs) const 
Computes the pathloss between a and b considering that the line of sight is obstructed by a vehicle. 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  
Related Functions inherited from ns3::ObjectBase  
static TypeId  GetObjectIid (void) 
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More...  
Base class for the 3GPP propagation models.
ns3::ThreeGppPropagationLossModel is accessible through the following paths with Config::Set and Config::Connect:
No TraceSources are defined for this type.
Size of this type is 128 bytes (on a 64bit architecture).
Definition at line 31 of file threegpppropagationlossmodel.h.
ns3::ThreeGppPropagationLossModel::ThreeGppPropagationLossModel  (  ) 
Constructor.
Definition at line 65 of file threegpppropagationlossmodel.cc.
References m_normRandomVariable, and NS_LOG_FUNCTION.

overridevirtual 
Destructor.
Definition at line 76 of file threegpppropagationlossmodel.cc.
References NS_LOG_FUNCTION.

delete 
Copy constructor.
Defined and unimplemented to avoid misuse

staticprotected 
Computes the 2D distance between two 3D vectors.
a  the first 3D vector 
b  the second 3D vector 
Definition at line 257 of file threegpppropagationlossmodel.cc.
References samplerngplot::x.
Referenced by DoCalcRxPower(), and ns3::ThreeGppRmaPropagationLossModel::GetShadowingStd().

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.
stream 
Implements ns3::PropagationLossModel.
Reimplemented in ns3::ThreeGppUmaPropagationLossModel.
Definition at line 248 of file threegpppropagationlossmodel.cc.
References m_normRandomVariable, and NS_LOG_FUNCTION.

overrideprivatevirtual 
Computes the received power by applying the pathloss model described in 3GPP TR 38.901.
txPowerDbm  tx power in dBm 
a  tx mobility model 
b  rx mobility model 
Implements ns3::PropagationLossModel.
Definition at line 119 of file threegpppropagationlossmodel.cc.
References Calculate2dDistance(), ns3::CalculateDistance(), GetLoss(), ns3::MobilityModel::GetPosition(), GetShadowing(), GetUtAndBsHeights(), m_channelConditionModel, m_frequency, m_shadowingEnabled, NS_ASSERT_MSG, and NS_LOG_FUNCTION.

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 threegpppropagationlossmodel.cc.
References m_channelConditionModel, and m_shadowingMap.
Ptr< ChannelConditionModel > ns3::ThreeGppPropagationLossModel::GetChannelConditionModel  (  void  )  const 
Returns the associated channel condition model.
Definition at line 97 of file threegpppropagationlossmodel.cc.
References m_channelConditionModel, and NS_LOG_FUNCTION.
Referenced by GetTypeId().
double ns3::ThreeGppPropagationLossModel::GetFrequency  (  void  )  const 
Return the current central frequency.
Definition at line 112 of file threegpppropagationlossmodel.cc.
References m_frequency, and NS_LOG_FUNCTION.
Referenced by GetTypeId().

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.
a  tx mobility model 
b  rx mobility model 
Definition at line 267 of file threegpppropagationlossmodel.cc.
References ns3::Node::GetId(), ns3::Object::GetObject(), max, and min.
Referenced by GetShadowing().

private 
Computes the pathloss between a and b.
cond  the channel condition 
distance2D  the 2D distance between tx and rx in meters 
distance3D  the 3D distance between tx and rx in meters 
hUt  the height of the UT in meters 
hBs  the height of the BS in meters 
Definition at line 153 of file threegpppropagationlossmodel.cc.
References GetLossLos(), GetLossNlos(), GetLossNlosv(), NS_FATAL_ERROR, and NS_LOG_FUNCTION.
Referenced by DoCalcRxPower().

privatepure virtual 
Computes the pathloss between a and b considering that the line of sight is not obstructed.
distance2D  the 2D distance between tx and rx in meters 
distance3D  the 3D distance between tx and rx in meters 
hUt  the height of the UT in meters 
hBs  the height of the BS in meters 
Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, ns3::ThreeGppRmaPropagationLossModel, ns3::ThreeGppV2vHighwayPropagationLossModel, and ns3::ThreeGppV2vUrbanPropagationLossModel.
Referenced by GetLoss().

privatepure virtual 
Computes the pathloss between a and b considering that the line of sight is obstructed.
distance2D  the 2D distance between tx and rx in meters 
distance3D  the 3D distance between tx and rx in meters 
hUt  the height of the UT in meters 
hBs  the height of the BS in meters 
Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, ns3::ThreeGppRmaPropagationLossModel, and ns3::ThreeGppV2vUrbanPropagationLossModel.
Referenced by GetLoss().

privatevirtual 
Computes the pathloss between a and b considering that the line of sight is obstructed by a vehicle.
By default it raises an error to avoid misuse.
distance2D  the 2D distance between tx and rx in meters 
distance3D  the 3D distance between tx and rx in meters 
hUt  the height of the UT in meters 
hBs  the height of the BS in meters 
Reimplemented in ns3::ThreeGppV2vUrbanPropagationLossModel.
Definition at line 178 of file threegpppropagationlossmodel.cc.
References NS_FATAL_ERROR, and NS_LOG_FUNCTION.
Referenced by GetLoss().

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.
a  tx mobility model 
b  rx mobility model 
cond  the LOS/NLOS channel condition 
Definition at line 186 of file threegpppropagationlossmodel.cc.
References GetKey(), ns3::Vector2D::GetLength(), GetShadowingCorrelationDistance(), GetShadowingStd(), GetVectorDifference(), m_normRandomVariable, m_shadowingMap, and NS_LOG_FUNCTION.
Referenced by DoCalcRxPower().

privatepure virtual 
Returns the shadow fading correlation distance.
cond  the LOS/NLOS channel condition 
Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, ns3::ThreeGppRmaPropagationLossModel, and ns3::ThreeGppV2vUrbanPropagationLossModel.
Referenced by GetShadowing().

privatepure virtual 
Returns the shadow fading standard deviation.
a  tx mobility model 
b  rx mobility model 
cond  the LOS/NLOS channel condition 
Implemented in ns3::ThreeGppIndoorOfficePropagationLossModel, ns3::ThreeGppUmiStreetCanyonPropagationLossModel, ns3::ThreeGppUmaPropagationLossModel, ns3::ThreeGppRmaPropagationLossModel, and ns3::ThreeGppV2vUrbanPropagationLossModel.
Referenced by GetShadowing().

static 
Get the type ID.
Definition at line 42 of file threegpppropagationlossmodel.cc.
References GetChannelConditionModel(), GetFrequency(), m_shadowingEnabled, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeDoubleAccessor(), ns3::MakePointerAccessor(), SetChannelConditionModel(), SetFrequency(), and ns3::TypeId::SetParent().

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.
za  the height of the first node in meters 
zb  the height of the second node in meters 
Reimplemented in ns3::ThreeGppUmiStreetCanyonPropagationLossModel.
Definition at line 237 of file threegpppropagationlossmodel.cc.
Referenced by DoCalcRxPower().

staticprivate 
Get the difference between the node position.
The difference is calculated as (ba) if Id(a) < Id (b), or (ab) if Id(b) <= Id(a).
a  First node 
b  Second node 
Definition at line 281 of file threegpppropagationlossmodel.cc.
References ns3::Object::GetObject(), and ns3::MobilityModel::GetPosition().
Referenced by GetShadowing().

delete 
Copy constructor.
Defined and unimplemented to avoid misuse
void ns3::ThreeGppPropagationLossModel::SetChannelConditionModel  (  Ptr< ChannelConditionModel >  model  ) 
Set the channel condition model used to determine the channel state (e.g., the LOS/NLOS condition)
model  pointer to the channel condition model 
Definition at line 90 of file threegpppropagationlossmodel.cc.
References m_channelConditionModel, and NS_LOG_FUNCTION.
Referenced by ThreeGppShadowingTestCase::ChangeChannelCondition(), GetTypeId(), and ThreeGppShadowingTestCase::RunTest().
void ns3::ThreeGppPropagationLossModel::SetFrequency  (  double  f  ) 
Set the central frequency of the model.
f  the central frequency in the range in Hz, between 500.0e6 and 100.0e9 Hz 
Definition at line 104 of file threegpppropagationlossmodel.cc.
References f(), m_frequency, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by GetTypeId().

protected 
pointer to the channel condition model
Definition at line 235 of file threegpppropagationlossmodel.h.
Referenced by DoCalcRxPower(), DoDispose(), GetChannelConditionModel(), SetChannelConditionModel(), ns3::ThreeGppIndoorOfficePropagationLossModel::ThreeGppIndoorOfficePropagationLossModel(), ns3::ThreeGppRmaPropagationLossModel::ThreeGppRmaPropagationLossModel(), ns3::ThreeGppUmaPropagationLossModel::ThreeGppUmaPropagationLossModel(), and ns3::ThreeGppUmiStreetCanyonPropagationLossModel::ThreeGppUmiStreetCanyonPropagationLossModel().

protected 
operating frequency in Hz
Definition at line 236 of file threegpppropagationlossmodel.h.
Referenced by DoCalcRxPower(), ns3::ThreeGppUmaPropagationLossModel::GetBpDistance(), ns3::ThreeGppUmiStreetCanyonPropagationLossModel::GetBpDistance(), GetFrequency(), ns3::ThreeGppV2vUrbanPropagationLossModel::GetLossLos(), ns3::ThreeGppV2vHighwayPropagationLossModel::GetLossLos(), ns3::ThreeGppRmaPropagationLossModel::GetLossLos(), ns3::ThreeGppUmaPropagationLossModel::GetLossLos(), ns3::ThreeGppUmiStreetCanyonPropagationLossModel::GetLossLos(), ns3::ThreeGppIndoorOfficePropagationLossModel::GetLossLos(), ns3::ThreeGppV2vUrbanPropagationLossModel::GetLossNlos(), ns3::ThreeGppRmaPropagationLossModel::GetLossNlos(), ns3::ThreeGppUmaPropagationLossModel::GetLossNlos(), ns3::ThreeGppUmiStreetCanyonPropagationLossModel::GetLossNlos(), ns3::ThreeGppIndoorOfficePropagationLossModel::GetLossNlos(), ns3::ThreeGppRmaPropagationLossModel::GetShadowingStd(), and SetFrequency().

protected 
normal random variable
Definition at line 238 of file threegpppropagationlossmodel.h.
Referenced by DoAssignStreams(), ns3::ThreeGppUmaPropagationLossModel::DoAssignStreams(), GetShadowing(), and ThreeGppPropagationLossModel().

protected 
enable/disable shadowing
Definition at line 237 of file threegpppropagationlossmodel.h.
Referenced by DoCalcRxPower(), and GetTypeId().

mutableprotected 
map to store the shadowing values
Definition at line 248 of file threegpppropagationlossmodel.h.
Referenced by DoDispose(), and GetShadowing().