22 #ifndef MATRIX_BASED_CHANNEL_H
23 #define MATRIX_BASED_CHANNEL_H
26 #include <ns3/object.h>
27 #include <ns3/nstime.h>
28 #include <ns3/vector.h>
29 #include <ns3/phased-array-model.h>
79 bool IsReverse (uint32_t aAntennaId, uint32_t bAntennaId)
const
81 uint32_t sAntennaId, uAntennaId;
83 NS_ASSERT_MSG ((sAntennaId == aAntennaId && uAntennaId == bAntennaId) || (sAntennaId == bAntennaId && uAntennaId == aAntennaId),
84 "This channel matrix does not represent the channel among the antenna arrays for which are provided IDs.");
85 return (sAntennaId == bAntennaId && uAntennaId == aAntennaId);
148 static uint64_t
GetKey (uint32_t a, uint32_t b)
This is an interface for a channel model that can be described by a channel matrix,...
std::vector< PhasedArrayModel::ComplexVector > Complex2DVector
type definition for complex matrices
virtual ~MatrixBasedChannelModel()
Destructor for MatrixBasedChannelModel.
std::vector< Complex2DVector > Complex3DVector
type definition for complex 3D matrices
static const uint8_t AOA_INDEX
index of the AOA value in the m_angle array
virtual Ptr< const ChannelParams > GetParams(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 obj...
std::vector< DoubleVector > Double2DVector
type definition for matrices of doubles
static const uint8_t ZOD_INDEX
index of the ZOD value in the m_angle array
static const uint8_t AOD_INDEX
index of the AOD value in the m_angle array
std::vector< double > DoubleVector
type definition for vectors of doubles
static const uint8_t ZOA_INDEX
index of the ZOA value in the m_angle array
virtual Ptr< const ChannelMatrix > GetChannel(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 ...
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,...
std::vector< Double2DVector > Double3DVector
type definition for 3D matrices of doubles
A base class which provides memory management and object aggregation.
Smart pointer class similar to boost::intrusive_ptr.
A template-based reference counting class.
Simulation virtual time values and global simulation resolution.
#define NS_ASSERT_MSG(condition, message)
At runtime, in debugging builds, if this condition is not true, the program prints the message to out...
Every class exported by the ns3 library is enclosed in the ns3 namespace.
Data structure that stores a channel realization.
virtual ~ChannelMatrix()=default
Destructor for ChannelMatrix.
Complex3DVector m_channel
channel matrix H[u][s][n].
bool IsReverse(uint32_t aAntennaId, uint32_t bAntennaId) const
Returns true if the ChannelMatrix object was generated considering node b as transmitter and node a a...
std::pair< uint32_t, uint32_t > m_antennaPair
the first element is the ID of the antenna of the s-node (the antenna of the transmitter when the cha...
Time m_generatedTime
generation time
std::pair< uint32_t, uint32_t > m_nodeIds
the first element is the s-node ID (the transmitter when the channel was generated),...
Data structure that stores channel parameters.
DoubleVector m_delay
cluster delay in nanoseconds.
Double2DVector m_angle
cluster angle angle[direction][n], where direction = 0(AOA), 1(ZOA), 2(AOD), 3(ZOD) in degree.
virtual ~ChannelParams()=default
Destructor for ChannelParams.
DoubleVector m_alpha
alpha term per cluster as described in 3GPP TR 37.885 v15.3.0, Sec.
Time m_generatedTime
generation time
DoubleVector m_D
D term per cluster as described in 3GPP TR 37.885 v15.3.0, Sec.
std::pair< uint32_t, uint32_t > m_nodeIds
the first element is the s-node ID (the transmitter when the channel params were generated),...