Class implementing the phased array model virtual base class. More...
#include "phased-array-model.h"
Public Types | |
using | ComplexVector = ComplexMatrixArray |
the underlying Valarray More... | |
Public Member Functions | |
PhasedArrayModel () | |
Constructor. More... | |
~PhasedArrayModel () override | |
Destructor. More... | |
virtual uint16_t | ArrayIndexFromPortIndex (uint16_t portIndex, uint16_t subElementIndex) const =0 |
Calculate the index in the antenna array from the port index and the element in the port. More... | |
Ptr< const AntennaModel > | GetAntennaElement () const |
Returns a pointer to the AntennaModel instance used to model the elements of the array. More... | |
ComplexVector | GetBeamformingVector () const |
Returns the beamforming vector that is currently being used. More... | |
ComplexVector | GetBeamformingVector (Angles a) const |
Returns the beamforming vector that points towards the specified position. More... | |
const PhasedArrayModel::ComplexVector & | GetBeamformingVectorRef () const |
Returns the const reference of the beamforming vector that is currently being used. More... | |
virtual std::pair< double, double > | GetElementFieldPattern (Angles a, uint8_t polIndex=0) const =0 |
Returns the horizontal and vertical components of the antenna element field pattern at the specified direction. More... | |
virtual Vector | GetElementLocation (uint64_t index) const =0 |
Returns the location of the antenna element with the specified index, normalized with respect to the wavelength. More... | |
virtual uint8_t | GetElemPol (size_t elementIndex) const =0 |
Returns the index of the polarization to which belongs that antenna element. More... | |
virtual size_t | GetHElemsPerPort () const =0 |
Get the horizontal number of antenna elements per port. More... | |
uint32_t | GetId () const |
Returns the ID of this antenna array instance. More... | |
virtual uint32_t | GetNumColumns () const =0 |
Get the number of columns. More... | |
virtual size_t | GetNumElems () const =0 |
Returns the number of antenna elements. More... | |
virtual size_t | GetNumElemsPerPort () const =0 |
Get the number of elements per port. More... | |
virtual uint16_t | GetNumHorizontalPorts () const =0 |
Get the horizontal number of ports. More... | |
virtual uint8_t | GetNumPols () const =0 |
Get the number of polarizations. More... | |
virtual uint16_t | GetNumPorts () const =0 |
Get the number of ports. More... | |
virtual uint32_t | GetNumRows () const =0 |
Get the number of rows. More... | |
virtual uint16_t | GetNumVerticalPorts () const =0 |
Get the vertical number of ports. More... | |
virtual double | GetPolSlant () const =0 |
Get the polarization slant angle. More... | |
ComplexVector | GetSteeringVector (Angles a) const |
Returns the steering vector that points toward the specified position. More... | |
virtual size_t | GetVElemsPerPort () const =0 |
Get the vertical number of antenna elements per port. More... | |
virtual bool | IsDualPol () const =0 |
Get the indication whether the antenna array is dual polarized. More... | |
double | norm (const ComplexVector &complexVector) const |
Computes the Frobenius norm of the complex vector. More... | |
void | SetAntennaElement (Ptr< AntennaModel > antennaElement) |
Sets the antenna model to be used. More... | |
void | SetBeamformingVector (const ComplexVector &beamformingVector) |
Sets the beamforming vector to be used. More... | |
virtual void | SetNumColumns (uint32_t nColumns)=0 |
Set the number of columns. More... | |
virtual void | SetNumHorizontalPorts (uint16_t nPorts)=0 |
Set the horizontal number of ports. More... | |
virtual void | SetNumRows (uint32_t nRows)=0 |
Set the number of rows. More... | |
virtual void | SetNumVerticalPorts (uint16_t nPorts)=0 |
Set the vertical number of ports. 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< Object > | GetObject () 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< Object > | GetObject (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... | |
SimpleRefCount & | operator= (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 TypeId | GetTypeId () |
Get the type ID. 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... | |
Protected Attributes | |
Ptr< AntennaModel > | m_antennaElement |
the model of the antenna element in use More... | |
ComplexVector | m_beamformingVector |
the beamforming vector in use More... | |
uint32_t | m_id {0} |
the ID of this antenna array instance More... | |
bool | m_isBfVectorValid |
ensures the validity of the beamforming vector More... | |
Static Protected Attributes | |
static uint32_t | m_idCounter = 0 |
the ID counter that is used to determine the unique antenna array ID 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... | |
Related Functions inherited from ns3::ObjectBase | |
static TypeId | GetObjectIid () |
Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. More... | |
Class implementing the phased array model virtual base class.
Definition at line 37 of file phased-array-model.h.
the underlying Valarray
Definition at line 57 of file phased-array-model.h.
ns3::PhasedArrayModel::PhasedArrayModel | ( | ) |
|
override |
Destructor.
Definition at line 43 of file phased-array-model.cc.
|
pure virtual |
Calculate the index in the antenna array from the port index and the element in the port.
portIndex | the port index |
subElementIndex | the element index in the port |
Implemented in ns3::UniformPlanarArray.
Ptr< const AntennaModel > ns3::PhasedArrayModel::GetAntennaElement | ( | ) | const |
Returns a pointer to the AntennaModel instance used to model the elements of the array.
Definition at line 139 of file phased-array-model.cc.
References m_antennaElement, and NS_LOG_FUNCTION.
PhasedArrayModel::ComplexVector ns3::PhasedArrayModel::GetBeamformingVector | ( | ) | const |
Returns the beamforming vector that is currently being used.
Definition at line 73 of file phased-array-model.cc.
References m_beamformingVector, m_isBfVectorValid, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by ComputeEndToEndGain(), DoBeamforming(), ThreeGppSpectrumPropagationLossModelTest::DoBeamforming(), ThreeGppSpectrumPropagationLossModelTest::DoRun(), ThreeGppCalcLongTermMultiPortTest::DoRun(), and ThreeGppMimoPolarizationTest::DoRun().
PhasedArrayModel::ComplexVector ns3::PhasedArrayModel::GetBeamformingVector | ( | Angles | a | ) | const |
Returns the beamforming vector that points towards the specified position.
a | the beamforming angle |
Definition at line 93 of file phased-array-model.cc.
References GetNumElems(), GetNumPorts(), GetSteeringVector(), norm(), and NS_LOG_FUNCTION.
const PhasedArrayModel::ComplexVector & ns3::PhasedArrayModel::GetBeamformingVectorRef | ( | ) | const |
Returns the const reference of the beamforming vector that is currently being used.
Definition at line 83 of file phased-array-model.cc.
References m_beamformingVector, m_isBfVectorValid, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
|
pure virtual |
Returns the horizontal and vertical components of the antenna element field pattern at the specified direction.
Single polarization is considered.
a | the angle indicating the interested direction |
polIndex | the index of the polarization for which will be retrieved the field pattern |
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Returns the location of the antenna element with the specified index, normalized with respect to the wavelength.
index | the index of the antenna element |
Implemented in ns3::UniformPlanarArray.
Referenced by DoBeamforming(), and GetSteeringVector().
|
pure virtual |
Returns the index of the polarization to which belongs that antenna element.
elementIndex | the antenna element for which will be returned the polarization index |
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Get the horizontal number of antenna elements per port.
Implemented in ns3::UniformPlanarArray.
uint32_t ns3::PhasedArrayModel::GetId | ( | ) | const |
Returns the ID of this antenna array instance.
Definition at line 146 of file phased-array-model.cc.
References m_id.
|
pure virtual |
Get the number of columns.
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Returns the number of antenna elements.
Implemented in ns3::UniformPlanarArray.
Referenced by DoBeamforming(), ThreeGppChannelMatrixComputationTest::DoComputeNorm(), GetBeamformingVector(), GetSteeringVector(), and SetBeamformingVector().
|
pure virtual |
Get the number of elements per port.
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Get the horizontal number of ports.
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Get the number of polarizations.
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Get the number of ports.
Implemented in ns3::UniformPlanarArray.
Referenced by GetBeamformingVector().
|
pure virtual |
Get the number of rows.
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Get the vertical number of ports.
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Get the polarization slant angle.
Implemented in ns3::UniformPlanarArray.
PhasedArrayModel::ComplexVector ns3::PhasedArrayModel::GetSteeringVector | ( | Angles | a | ) | const |
Returns the steering vector that points toward the specified position.
a | the steering angle |
Definition at line 116 of file phased-array-model.cc.
References ns3::Angles::GetAzimuth(), GetElementLocation(), ns3::Angles::GetInclination(), and GetNumElems().
Referenced by GetBeamformingVector().
|
static |
Get the type ID.
Definition at line 48 of file phased-array-model.cc.
References m_antennaElement, ns3::MakePointerAccessor(), and ns3::TypeId::SetParent().
|
pure virtual |
Get the vertical number of antenna elements per port.
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Get the indication whether the antenna array is dual polarized.
Implemented in ns3::UniformPlanarArray.
|
inline |
Computes the Frobenius norm of the complex vector.
complexVector | on which to calculate Frobenius norm |
Definition at line 65 of file phased-array-model.h.
References ns3::ValArray< T >::GetSize(), and MRG32k3a::norm.
Referenced by GetBeamformingVector().
void ns3::PhasedArrayModel::SetAntennaElement | ( | Ptr< AntennaModel > | antennaElement | ) |
Sets the antenna model to be used.
antennaElement | the antenna model |
Definition at line 132 of file phased-array-model.cc.
References m_antennaElement, and NS_LOG_FUNCTION.
void ns3::PhasedArrayModel::SetBeamformingVector | ( | const ComplexVector & | beamformingVector | ) |
Sets the beamforming vector to be used.
beamformingVector | the beamforming vector |
Definition at line 63 of file phased-array-model.cc.
References GetNumElems(), ns3::ValArray< T >::GetSize(), m_beamformingVector, m_isBfVectorValid, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
Referenced by ComputeEndToEndGain(), DoBeamforming(), ThreeGppSpectrumPropagationLossModelTest::DoBeamforming(), ThreeGppSpectrumPropagationLossModelTest::DoRun(), ThreeGppCalcLongTermMultiPortTest::DoRun(), and ThreeGppMimoPolarizationTest::DoRun().
|
pure virtual |
Set the number of columns.
nColumns | the number of columns to be set |
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Set the horizontal number of ports.
nPorts | the horizontal number of ports |
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Set the number of rows.
nRows | the number of rows to be set |
Implemented in ns3::UniformPlanarArray.
|
pure virtual |
Set the vertical number of ports.
nPorts | the vertical number of ports |
Implemented in ns3::UniformPlanarArray.
|
protected |
the model of the antenna element in use
Definition at line 259 of file phased-array-model.h.
Referenced by GetAntennaElement(), ns3::UniformPlanarArray::GetElementFieldPattern(), GetTypeId(), and SetAntennaElement().
|
protected |
the beamforming vector in use
Definition at line 258 of file phased-array-model.h.
Referenced by GetBeamformingVector(), GetBeamformingVectorRef(), and SetBeamformingVector().
|
protected |
the ID of this antenna array instance
Definition at line 263 of file phased-array-model.h.
Referenced by PhasedArrayModel(), and GetId().
|
staticprotected |
the ID counter that is used to determine the unique antenna array ID
Definition at line 262 of file phased-array-model.h.
Referenced by PhasedArrayModel().
|
protected |
ensures the validity of the beamforming vector
Definition at line 260 of file phased-array-model.h.
Referenced by GetBeamformingVector(), GetBeamformingVectorRef(), ns3::UniformPlanarArray::SetAntennaHorizontalSpacing(), ns3::UniformPlanarArray::SetAntennaVerticalSpacing(), SetBeamformingVector(), ns3::UniformPlanarArray::SetNumColumns(), and ns3::UniformPlanarArray::SetNumRows().