Class implementing the antenna model defined in 3GPP TR 38.901 V15.0.0. More...
#include "three-gpp-antenna-array-model.h"
Public Types | |
typedef std::vector< std::complex< double > > | ComplexVector |
type definition for complex vectors More... | |
Public Member Functions | |
ThreeGppAntennaArrayModel (void) | |
Constructor. More... | |
virtual | ~ThreeGppAntennaArrayModel (void) |
Destructor. More... | |
void | ChangeToOmniTx (void) |
Change the antenna model to omnidirectional (ignoring the beams) More... | |
const ComplexVector & | GetBeamformingVector (void) const |
Returns the beamforming vector that is currently being used. More... | |
std::pair< double, double > | GetElementFieldPattern (Angles a) const |
Returns the horizontal and vertical components of the antenna element field pattern at the specified direction. More... | |
virtual Vector | GetElementLocation (uint64_t index) const |
Returns the location of the antenna element with the specified index assuming the left bottom corner is (0,0,0), normalized with respect to the wavelength. More... | |
virtual uint64_t | GetNumberOfElements (void) const |
Returns the number of antenna elements. More... | |
bool | IsOmniTx (void) const |
Returns true if the antenna is configured for omnidirectional transmissions. More... | |
void | SetBeamformingVector (const ComplexVector &beamformingVector) |
Sets the beamforming vector to be used. More... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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) |
![]() | |
static TypeId | GetTypeId (void) |
Register this type. More... | |
![]() | |
static TypeId | GetTypeId (void) |
Get the type ID. More... | |
Private Member Functions | |
double | GetRadiationPattern (double vAngleRadian, double hAngleRadian) const |
Returns the radiation power pattern of a single antenna element in dB, generated according to Table 7.3-1 in 3GPP TR 38.901. More... | |
Private Attributes | |
double | m_alpha |
the bearing angle in radians More... | |
ComplexVector | m_beamformingVector |
the beamforming vector in use More... | |
double | m_beta |
the downtilt angle in radians More... | |
double | m_disH |
antenna spacing in the horizontal direction in multiples of wave length More... | |
double | m_disV |
antenna spacing in the vertical direction in multiples of wave length More... | |
double | m_gE |
directional gain of a single antenna element (dBi) More... | |
bool | m_isIsotropic |
if true, antenna elements are isotropic More... | |
bool | m_isOmniTx |
true if the antenna is configured for omni transmissions More... | |
uint32_t | m_numColumns |
number of columns More... | |
uint32_t | m_numRows |
number of rows More... | |
Additional Inherited Members | |
![]() | |
Object (const Object &o) | |
Copy an Object. More... | |
virtual void | DoDispose (void) |
Destructor implementation. 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... | |
![]() | |
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 TypeId | GetObjectIid (void) |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Class implementing the antenna model defined in 3GPP TR 38.901 V15.0.0.
Introspection did not find any typical Config paths.
No TraceSources are defined for this type.
Size of this type is 112 bytes (on a 64-bit architecture).
Definition at line 37 of file three-gpp-antenna-array-model.h.
typedef std::vector<std::complex<double> > ns3::ThreeGppAntennaArrayModel::ComplexVector |
type definition for complex vectors
Definition at line 54 of file three-gpp-antenna-array-model.h.
ns3::ThreeGppAntennaArrayModel::ThreeGppAntennaArrayModel | ( | void | ) |
Constructor.
Definition at line 33 of file three-gpp-antenna-array-model.cc.
References m_isOmniTx, and NS_LOG_FUNCTION.
|
virtual |
Destructor.
Definition at line 39 of file three-gpp-antenna-array-model.cc.
References NS_LOG_FUNCTION.
void ns3::ThreeGppAntennaArrayModel::ChangeToOmniTx | ( | void | ) |
Change the antenna model to omnidirectional (ignoring the beams)
Definition at line 102 of file three-gpp-antenna-array-model.cc.
References m_isOmniTx, and NS_LOG_FUNCTION.
const ThreeGppAntennaArrayModel::ComplexVector & ns3::ThreeGppAntennaArrayModel::GetBeamformingVector | ( | void | ) | const |
Returns the beamforming vector that is currently being used.
Definition at line 117 of file three-gpp-antenna-array-model.cc.
References m_beamformingVector, and NS_LOG_FUNCTION.
Referenced by ThreeGppSpectrumPropagationLossModelTest::DoRun().
std::pair< double, double > ns3::ThreeGppAntennaArrayModel::GetElementFieldPattern | ( | Angles | a | ) | const |
Returns the horizontal and vertical components of the antenna element field pattern at the specified direction.
Only vertical polarization is considered.
a | the angle indicating the interested direction |
Definition at line 124 of file three-gpp-antenna-array-model.cc.
References GetRadiationPattern(), m_alpha, m_beta, NS_ASSERT_MSG(), NS_LOG_DEBUG, NS_LOG_FUNCTION, ns3::Angles::phi, and ns3::Angles::theta.
|
virtual |
Returns the location of the antenna element with the specified index assuming the left bottom corner is (0,0,0), normalized with respect to the wavelength.
Antenna elements are scanned row by row, left to right and bottom to top. For example, an antenna with 2 rows and 3 columns will be ordered as follows: ^ z | 3 4 5 | 0 1 2 -------—> y
index | index of the antenna element |
Definition at line 195 of file three-gpp-antenna-array-model.cc.
References m_alpha, m_beta, m_disH, m_disV, m_numColumns, and NS_LOG_FUNCTION.
Referenced by DoBeamforming(), and ThreeGppSpectrumPropagationLossModelTest::DoBeamforming().
|
virtual |
Returns the number of antenna elements.
Definition at line 215 of file three-gpp-antenna-array-model.cc.
References m_numColumns, m_numRows, and NS_LOG_FUNCTION.
Referenced by DoBeamforming(), ThreeGppSpectrumPropagationLossModelTest::DoBeamforming(), and ThreeGppChannelMatrixComputationTest::DoComputeNorm().
|
private |
Returns the radiation power pattern of a single antenna element in dB, generated according to Table 7.3-1 in 3GPP TR 38.901.
vAngleRadian | the vertical angle in radians |
hAngleRadian | the horizontal angle in radians |
Definition at line 168 of file three-gpp-antenna-array-model.cc.
References m_gE, m_isIsotropic, min, and NS_ASSERT_MSG().
Referenced by GetElementFieldPattern().
|
static |
Definition at line 45 of file three-gpp-antenna-array-model.cc.
References m_alpha, m_beta, m_disH, m_disV, m_gE, m_isIsotropic, m_numColumns, m_numRows, ns3::MakeBooleanAccessor(), ns3::MakeBooleanChecker(), ns3::MakeDoubleAccessor(), ns3::MakeUintegerAccessor(), and ns3::TypeId::SetParent().
bool ns3::ThreeGppAntennaArrayModel::IsOmniTx | ( | void | ) | const |
Returns true if the antenna is configured for omnidirectional transmissions.
Definition at line 95 of file three-gpp-antenna-array-model.cc.
References m_isOmniTx, and NS_LOG_FUNCTION.
void ns3::ThreeGppAntennaArrayModel::SetBeamformingVector | ( | const ComplexVector & | beamformingVector | ) |
Sets the beamforming vector to be used.
beamformingVector | the beamforming vector |
Definition at line 109 of file three-gpp-antenna-array-model.cc.
References m_beamformingVector, m_isOmniTx, and NS_LOG_FUNCTION.
Referenced by DoBeamforming(), ThreeGppSpectrumPropagationLossModelTest::DoBeamforming(), and ThreeGppSpectrumPropagationLossModelTest::DoRun().
|
private |
the bearing angle in radians
Definition at line 127 of file three-gpp-antenna-array-model.h.
Referenced by GetElementFieldPattern(), GetElementLocation(), and GetTypeId().
|
private |
the beamforming vector in use
Definition at line 122 of file three-gpp-antenna-array-model.h.
Referenced by GetBeamformingVector(), and SetBeamformingVector().
|
private |
the downtilt angle in radians
Definition at line 128 of file three-gpp-antenna-array-model.h.
Referenced by GetElementFieldPattern(), GetElementLocation(), and GetTypeId().
|
private |
antenna spacing in the horizontal direction in multiples of wave length
Definition at line 126 of file three-gpp-antenna-array-model.h.
Referenced by GetElementLocation(), and GetTypeId().
|
private |
antenna spacing in the vertical direction in multiples of wave length
Definition at line 125 of file three-gpp-antenna-array-model.h.
Referenced by GetElementLocation(), and GetTypeId().
|
private |
directional gain of a single antenna element (dBi)
Definition at line 129 of file three-gpp-antenna-array-model.h.
Referenced by GetRadiationPattern(), and GetTypeId().
|
private |
if true, antenna elements are isotropic
Definition at line 130 of file three-gpp-antenna-array-model.h.
Referenced by GetRadiationPattern(), and GetTypeId().
|
private |
true if the antenna is configured for omni transmissions
Definition at line 121 of file three-gpp-antenna-array-model.h.
Referenced by ChangeToOmniTx(), IsOmniTx(), SetBeamformingVector(), and ThreeGppAntennaArrayModel().
|
private |
number of columns
Definition at line 123 of file three-gpp-antenna-array-model.h.
Referenced by GetElementLocation(), GetNumberOfElements(), and GetTypeId().
|
private |
number of rows
Definition at line 124 of file three-gpp-antenna-array-model.h.
Referenced by GetNumberOfElements(), and GetTypeId().