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

This is an interface for a channel model that can be described by a channel matrix, e.g., the 3GPP Spatial Channel Models, which is generally used in combination with antenna arrays. More...

#include "matrix-based-channel-model.h"

+ Inheritance diagram for ns3::MatrixBasedChannelModel:
+ Collaboration diagram for ns3::MatrixBasedChannelModel:

Classes

struct  ChannelMatrix
 Data structure that stores a channel realization. More...
 
struct  ChannelParams
 Data structure that stores channel parameters. More...
 

Public Types

using Complex2DVector = ComplexMatrixArray
 Create an alias for 2D complex vectors. More...
 
using Complex3DVector = ComplexMatrixArray
 Create an alias for 3D complex vectors. More...
 
using Double2DVector = std::vector< DoubleVector >
 Type definition for matrices of doubles. More...
 
using Double3DVector = std::vector< Double2DVector >
 Type definition for 3D matrices of doubles. More...
 
using DoubleVector = std::vector< double >
 Type definition for vectors of doubles. More...
 

Public Member Functions

 ~MatrixBasedChannelModel () override
 Destructor for MatrixBasedChannelModel. More...
 
virtual Ptr< const ChannelMatrixGetChannel (Ptr< const MobilityModel > aMob, Ptr< const MobilityModel > bMob, Ptr< const PhasedArrayModel > aAntenna, Ptr< const PhasedArrayModel > bAntenna)=0
 Returns a matrix with a realization of the channel between the nodes with mobility objects passed as input parameters. More...
 
virtual Ptr< const ChannelParamsGetParams (Ptr< const MobilityModel > aMob, Ptr< const MobilityModel > bMob) const =0
 Returns a channel parameters structure used to obtain the channel between the nodes with mobility objects passed as input parameters. More...
 
- Public Member Functions inherited from ns3::Object
 Object ()
 Constructor. More...
 
 ~Object () override
 Destructor. More...
 
void AggregateObject (Ptr< Object > other)
 Aggregate two Objects together. More...
 
void Dispose ()
 Dispose of this Object. More...
 
AggregateIterator GetAggregateIterator () const
 Get an iterator to the Objects aggregated to this one. More...
 
TypeId GetInstanceTypeId () const override
 Get the most derived TypeId for this Object. More...
 
template<typename T >
Ptr< T > GetObject () const
 Get a pointer to the requested aggregated Object. More...
 
template<>
Ptr< ObjectGetObject () const
 Specialization of () for objects of type ns3::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 (TypeId tid) const
 Specialization of (TypeId tid) for objects of type ns3::Object. More...
 
void Initialize ()
 Invoke DoInitialize on all Objects aggregated to this one. More...
 
bool IsInitialized () 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[[maybe_unused]])
 Copy constructor. More...
 
uint32_t GetReferenceCount () const
 Get the reference count of the object. More...
 
SimpleRefCountoperator= (const SimpleRefCount &o[[maybe_unused]])
 Assignment operator. More...
 
void Ref () const
 Increment the reference count. More...
 
void Unref () 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 errors. 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 uint64_t GetKey (uint32_t a, uint32_t b)
 Generate a unique value for the pair of unsigned integer of 32 bits, where the order does not matter, i.e., the same value will be returned for (a,b) and (b,a). More...
 
- Static Public Member Functions inherited from ns3::Object
static TypeId GetTypeId ()
 Register this type. More...
 
- Static Public Member Functions inherited from ns3::ObjectBase
static TypeId GetTypeId ()
 Get the type ID. More...
 

Static Public Attributes

static const uint8_t AOA_INDEX = 0
 index of the AOA value in the m_angle array More...
 
static const uint8_t AOD_INDEX = 2
 index of the AOD value in the m_angle array More...
 
static const uint8_t ZOA_INDEX = 1
 index of the ZOA value in the m_angle array More...
 
static const uint8_t ZOD_INDEX = 3
 index of the ZOD value in the m_angle array More...
 

Additional Inherited Members

- Protected Member Functions inherited from ns3::Object
 Object (const Object &o)
 Copy an Object. More...
 
virtual void DoDispose ()
 Destructor implementation. More...
 
virtual void DoInitialize ()
 Initialize() implementation. More...
 
virtual void NotifyNewAggregate ()
 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 ()
 Notifier called once the ObjectBase is fully constructed. More...
 

Detailed Description

This is an interface for a channel model that can be described by a channel matrix, e.g., the 3GPP Spatial Channel Models, which is generally used in combination with antenna arrays.

Definition at line 45 of file matrix-based-channel-model.h.

Member Typedef Documentation

◆ Complex2DVector

Create an alias for 2D complex vectors.

Definition at line 62 of file matrix-based-channel-model.h.

◆ Complex3DVector

Create an alias for 3D complex vectors.

Definition at line 63 of file matrix-based-channel-model.h.

◆ Double2DVector

Type definition for matrices of doubles.

Definition at line 57 of file matrix-based-channel-model.h.

◆ Double3DVector

Type definition for 3D matrices of doubles.

Definition at line 60 of file matrix-based-channel-model.h.

◆ DoubleVector

using ns3::MatrixBasedChannelModel::DoubleVector = std::vector<double>

Type definition for vectors of doubles.

Definition at line 54 of file matrix-based-channel-model.h.

Constructor & Destructor Documentation

◆ ~MatrixBasedChannelModel()

ns3::MatrixBasedChannelModel::~MatrixBasedChannelModel ( )
override

Destructor for MatrixBasedChannelModel.

Definition at line 26 of file matrix-based-channel-model.cc.

Member Function Documentation

◆ GetChannel()

virtual Ptr<const ChannelMatrix> ns3::MatrixBasedChannelModel::GetChannel ( Ptr< const MobilityModel aMob,
Ptr< const MobilityModel bMob,
Ptr< const PhasedArrayModel aAntenna,
Ptr< const PhasedArrayModel bAntenna 
)
pure virtual

Returns a matrix with a realization of the channel between the nodes with mobility objects passed as input parameters.

We assume channel reciprocity between each node pair (i.e., H_ab = H_ba^T), therefore GetChannel (a, b) and GetChannel (b, a) will return the same ChannelMatrix object. To understand if the channel matrix corresponds to H_ab or H_ba, we provide the method ChannelMatrix::IsReverse. For instance, if the channel matrix corresponds to H_ab, a call to IsReverse (idA, idB) will return false, conversely, IsReverse (idB, idA) will return true.

Parameters
aMobmobility model of the a device
bMobmobility model of the b device
aAntennaantenna of the a device
bAntennaantenna of the b device
Returns
the channel matrix

Implemented in ns3::ThreeGppChannelModel.

◆ GetKey()

static uint64_t ns3::MatrixBasedChannelModel::GetKey ( uint32_t  a,
uint32_t  b 
)
inlinestatic

Generate a unique value for the pair of unsigned integer of 32 bits, where the order does not matter, i.e., the same value will be returned for (a,b) and (b,a).

Parameters
athe first value
bthe second value
Returns
return an integer representing a unique value for the pair of values

Definition at line 207 of file matrix-based-channel-model.h.

References max, and min.

Referenced by ns3::ThreeGppChannelModel::GetChannel(), ns3::ThreeGppSpectrumPropagationLossModel::GetLongTerm(), and ns3::ThreeGppChannelModel::GetParams().

+ Here is the caller graph for this function:

◆ GetParams()

virtual Ptr<const ChannelParams> ns3::MatrixBasedChannelModel::GetParams ( Ptr< const MobilityModel aMob,
Ptr< const MobilityModel bMob 
) const
pure virtual

Returns a channel parameters structure used to obtain the channel between the nodes with mobility objects passed as input parameters.

Parameters
aMobmobility model of the a device
bMobmobility model of the b device
Returns
the channel matrix

Implemented in ns3::ThreeGppChannelModel.

Member Data Documentation

◆ AOA_INDEX

const uint8_t ns3::MatrixBasedChannelModel::AOA_INDEX = 0
static

index of the AOA value in the m_angle array

Definition at line 212 of file matrix-based-channel-model.h.

Referenced by ns3::ThreeGppSpectrumPropagationLossModel::CalcBeamformingGain().

◆ AOD_INDEX

const uint8_t ns3::MatrixBasedChannelModel::AOD_INDEX = 2
static

index of the AOD value in the m_angle array

Definition at line 214 of file matrix-based-channel-model.h.

Referenced by ns3::ThreeGppSpectrumPropagationLossModel::CalcBeamformingGain().

◆ ZOA_INDEX

const uint8_t ns3::MatrixBasedChannelModel::ZOA_INDEX = 1
static

index of the ZOA value in the m_angle array

Definition at line 213 of file matrix-based-channel-model.h.

Referenced by ns3::ThreeGppSpectrumPropagationLossModel::CalcBeamformingGain().

◆ ZOD_INDEX

const uint8_t ns3::MatrixBasedChannelModel::ZOD_INDEX = 3
static

index of the ZOD value in the m_angle array

Definition at line 215 of file matrix-based-channel-model.h.

Referenced by ns3::ThreeGppSpectrumPropagationLossModel::CalcBeamformingGain().


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