Class implementing the phased array model virtual base class. More...
#include "phased-array-model.h"
 Inheritance diagram for ns3::PhasedArrayModel:
 Inheritance diagram for ns3::PhasedArrayModel: Collaboration diagram for ns3::PhasedArrayModel:
 Collaboration diagram for ns3::PhasedArrayModel:| Public Types | |
| using | ComplexVector = ComplexMatrixArray | 
| the underlying Valarray | |
| Public Member Functions | |
| PhasedArrayModel () | |
| Constructor. | |
| ~PhasedArrayModel () override | |
| Destructor. | |
| 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. | |
| Ptr< const AntennaModel > | GetAntennaElement () const | 
| Returns a pointer to the AntennaModel instance used to model the elements of the array. | |
| ComplexVector | GetBeamformingVector () const | 
| Returns the beamforming vector that is currently being used. | |
| ComplexVector | GetBeamformingVector (Angles a) const | 
| Returns the beamforming vector that points towards the specified position. | |
| const PhasedArrayModel::ComplexVector & | GetBeamformingVectorRef () const | 
| Returns the const reference of the beamforming vector that is currently being used. | |
| 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. | |
| 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. | |
| virtual uint8_t | GetElemPol (size_t elementIndex) const =0 | 
| Returns the index of the polarization to which belongs that antenna element. | |
| virtual size_t | GetHElemsPerPort () const =0 | 
| Get the horizontal number of antenna elements per port. | |
| uint32_t | GetId () const | 
| Returns the ID of this antenna array instance. | |
| virtual uint32_t | GetNumColumns () const =0 | 
| Get the number of columns. | |
| virtual size_t | GetNumElems () const =0 | 
| Returns the number of antenna elements. | |
| virtual size_t | GetNumElemsPerPort () const =0 | 
| Get the number of elements per port. | |
| virtual uint16_t | GetNumHorizontalPorts () const =0 | 
| Get the horizontal number of ports. | |
| virtual uint8_t | GetNumPols () const =0 | 
| Get the number of polarizations. | |
| virtual uint16_t | GetNumPorts () const =0 | 
| Get the number of ports. | |
| virtual uint32_t | GetNumRows () const =0 | 
| Get the number of rows. | |
| virtual uint16_t | GetNumVerticalPorts () const =0 | 
| Get the vertical number of ports. | |
| virtual double | GetPolSlant () const =0 | 
| Get the polarization slant angle. | |
| ComplexVector | GetSteeringVector (Angles a) const | 
| Returns the steering vector that points toward the specified position. | |
| virtual size_t | GetVElemsPerPort () const =0 | 
| Get the vertical number of antenna elements per port. | |
| bool | IsChannelOutOfDate (Ptr< const PhasedArrayModel > antennaB) const | 
| Returns whether the channel needs to be updated due to antenna setting changes. | |
| virtual bool | IsDualPol () const =0 | 
| Get the indication whether the antenna array is dual polarized. | |
| double | norm (const ComplexVector &complexVector) const | 
| Computes the Frobenius norm of the complex vector. | |
| void | SetAntennaElement (Ptr< AntennaModel > antennaElement) | 
| Sets the antenna model to be used. | |
| void | SetBeamformingVector (const ComplexVector &beamformingVector) | 
| Sets the beamforming vector to be used. | |
| virtual void | SetNumColumns (uint32_t nColumns)=0 | 
| Set the number of columns. | |
| virtual void | SetNumHorizontalPorts (uint16_t nPorts)=0 | 
| Set the horizontal number of ports. | |
| virtual void | SetNumRows (uint32_t nRows)=0 | 
| Set the number of rows. | |
| virtual void | SetNumVerticalPorts (uint16_t nPorts)=0 | 
| Set the vertical number of ports. | |
|  Public Member Functions inherited from ns3::Object | |
| Object () | |
| Constructor. | |
| ~Object () override | |
| Destructor. | |
| void | AggregateObject (Ptr< Object > other) | 
| Aggregate two Objects together. | |
| void | Dispose () | 
| Dispose of this Object. | |
| AggregateIterator | GetAggregateIterator () const | 
| Get an iterator to the Objects aggregated to this one. | |
| TypeId | GetInstanceTypeId () const final | 
| Get the most derived TypeId for this Object. | |
| template<typename T > | |
| Ptr< T > | GetObject () const | 
| Get a pointer to the requested aggregated Object. | |
| template<> | |
| Ptr< Object > | GetObject () const | 
| Specialization of ()  for objects of type ns3::Object. | |
| template<typename T > | |
| Ptr< T > | GetObject (TypeId tid) const | 
| Get a pointer to the requested aggregated Object by TypeId. | |
| template<> | |
| Ptr< Object > | GetObject (TypeId tid) const | 
| Specialization of (TypeId tid)  for objects of type ns3::Object. | |
| void | Initialize () | 
| Invoke DoInitialize on all Objects aggregated to this one. | |
| bool | IsInitialized () const | 
| Check if the object has been initialized. | |
| void | UnidirectionalAggregateObject (Ptr< Object > other) | 
| Aggregate an Object to another Object. | |
|  Public Member Functions inherited from ns3::SimpleRefCount< Object, ObjectBase, ObjectDeleter > | |
| SimpleRefCount () | |
| Default constructor. | |
| SimpleRefCount (const SimpleRefCount &o) | |
| Copy constructor. | |
| uint32_t | GetReferenceCount () const | 
| Get the reference count of the object. | |
| SimpleRefCount & | operator= (const SimpleRefCount &o) | 
| Assignment operator. | |
| void | Ref () const | 
| Increment the reference count. | |
| void | Unref () const | 
| Decrement the reference count. | |
|  Public Member Functions inherited from ns3::ObjectBase | |
| virtual | ~ObjectBase () | 
| Virtual destructor. | |
| void | GetAttribute (std::string name, AttributeValue &value, bool permissive=false) const | 
| Get the value of an attribute, raising fatal errors if unsuccessful. | |
| bool | GetAttributeFailSafe (std::string name, AttributeValue &value) const | 
| Get the value of an attribute without raising errors. | |
| void | SetAttribute (std::string name, const AttributeValue &value) | 
| Set a single attribute, raising fatal errors if unsuccessful. | |
| bool | SetAttributeFailSafe (std::string name, const AttributeValue &value) | 
| Set a single attribute without raising errors. | |
| bool | TraceConnect (std::string name, std::string context, const CallbackBase &cb) | 
| Connect a TraceSource to a Callback with a context. | |
| bool | TraceConnectWithoutContext (std::string name, const CallbackBase &cb) | 
| Connect a TraceSource to a Callback without a context. | |
| bool | TraceDisconnect (std::string name, std::string context, const CallbackBase &cb) | 
| Disconnect from a TraceSource a Callback previously connected with a context. | |
| bool | TraceDisconnectWithoutContext (std::string name, const CallbackBase &cb) | 
| Disconnect from a TraceSource a Callback previously connected without a context. | |
| Static Public Member Functions | |
| static TypeId | GetTypeId () | 
| Get the type ID. | |
|  Static Public Member Functions inherited from ns3::Object | |
| static TypeId | GetTypeId () | 
| Register this type. | |
|  Static Public Member Functions inherited from ns3::ObjectBase | |
| static TypeId | GetTypeId () | 
| Get the type ID. | |
| Protected Member Functions | |
| void | InvalidateChannels () const | 
| After changing the antenna settings, InvalidateChannels() should be called to mark up-to-date channels as out-of-date. | |
|  Protected Member Functions inherited from ns3::Object | |
| Object (const Object &o) | |
| Copy an Object. | |
| virtual void | DoDispose () | 
| Destructor implementation. | |
| virtual void | DoInitialize () | 
| Initialize() implementation. | |
| virtual void | NotifyNewAggregate () | 
| Notify all Objects aggregated to this one of a new Object being aggregated. | |
|  Protected Member Functions inherited from ns3::ObjectBase | |
| void | ConstructSelf (const AttributeConstructionList &attributes) | 
| Complete construction of ObjectBase; invoked by derived classes. | |
| virtual void | NotifyConstructionCompleted () | 
| Notifier called once the ObjectBase is fully constructed. | |
| Protected Attributes | |
| Ptr< AntennaModel > | m_antennaElement | 
| the model of the antenna element in use | |
| ComplexVector | m_beamformingVector | 
| the beamforming vector in use | |
| uint32_t | m_id {0} | 
| the ID of this antenna array instance | |
| bool | m_isBfVectorValid | 
| ensures the validity of the beamforming vector | |
| Static Protected Attributes | |
| static uint32_t | m_idCounter = 0 | 
| the ID counter that is used to determine the unique antenna array ID | |
| static SymmetricAdjacencyMatrix< bool > | m_outOfDateAntennaPairChannel | 
| matrix indicating whether a channel matrix between a pair of antennas needs to be updated after a change in one of the antennas configurations | |
| Additional Inherited Members | |
|  Related Symbols inherited from ns3::ObjectBase | |
| static TypeId | GetObjectIid () | 
| Ensure the TypeId for ObjectBase gets fully configured to anchor the inheritance tree properly. | |
Class implementing the phased array model virtual base class.
Introspection did not find any typical Config paths.
 
No TraceSources are defined for this type.
 Group: Antenna
Size of this type is 128 bytes (on a 64-bit architecture).
Definition at line 27 of file phased-array-model.h.
the underlying Valarray
Definition at line 47 of file phased-array-model.h.
| ns3::PhasedArrayModel::PhasedArrayModel | ( | ) | 
Constructor.
Definition at line 27 of file phased-array-model.cc.
References ns3::SymmetricAdjacencyMatrix< T >::AddRow(), m_id, m_idCounter, m_outOfDateAntennaPairChannel, and ns3::SymmetricAdjacencyMatrix< T >::SetValueAdjacent().
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | override | 
Destructor.
Definition at line 35 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 131 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 65 of file phased-array-model.cc.
References m_beamformingVector, m_isBfVectorValid, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
| 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 85 of file phased-array-model.cc.
References GetNumElems(), GetNumPorts(), GetSteeringVector(), MRG32k3a::norm, and NS_LOG_FUNCTION.
 Here is the call graph for this function:
 Here is the call graph for this function:| const PhasedArrayModel::ComplexVector & ns3::PhasedArrayModel::GetBeamformingVectorRef | ( | ) | const | 
Returns the const reference of the beamforming vector that is currently being used.
Definition at line 75 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 GetSteeringVector().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | 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 138 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 GetBeamformingVector(), GetSteeringVector(), and SetBeamformingVector().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | 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().
 Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | 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 108 of file phased-array-model.cc.
References ns3::Angles::GetAzimuth(), GetElementLocation(), ns3::Angles::GetInclination(), and GetNumElems().
Referenced by GetBeamformingVector().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| 
 | static | 
Get the type ID.
Definition at line 40 of file phased-array-model.cc.
References ns3::CreateObject(), m_antennaElement, ns3::MakePointerAccessor(), ns3::MakePointerChecker(), and ns3::TypeId::SetParent().
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | pure virtual | 
Get the vertical number of antenna elements per port.
Implemented in ns3::UniformPlanarArray.
| 
 | protected | 
After changing the antenna settings, InvalidateChannels() should be called to mark up-to-date channels as out-of-date.
Definition at line 155 of file phased-array-model.cc.
References m_id, m_outOfDateAntennaPairChannel, and ns3::SymmetricAdjacencyMatrix< T >::SetValueAdjacent().
Referenced by ns3::UniformPlanarArray::SetAlpha(), ns3::UniformPlanarArray::SetAntennaHorizontalSpacing(), ns3::UniformPlanarArray::SetAntennaVerticalSpacing(), ns3::UniformPlanarArray::SetBeta(), ns3::UniformPlanarArray::SetDualPol(), ns3::UniformPlanarArray::SetNumColumns(), ns3::UniformPlanarArray::SetNumHorizontalPorts(), ns3::UniformPlanarArray::SetNumRows(), ns3::UniformPlanarArray::SetNumVerticalPorts(), and ns3::UniformPlanarArray::SetPolSlant().
 Here is the call graph for this function:
 Here is the call graph for this function: Here is the caller graph for this function:
 Here is the caller graph for this function:| bool ns3::PhasedArrayModel::IsChannelOutOfDate | ( | Ptr< const PhasedArrayModel > | antennaB | ) | const | 
Returns whether the channel needs to be updated due to antenna setting changes.
| antennaB | the second antenna of the pair for the channel we want to check | 
Definition at line 144 of file phased-array-model.cc.
References ns3::SymmetricAdjacencyMatrix< T >::GetValue(), m_id, m_outOfDateAntennaPairChannel, and ns3::SymmetricAdjacencyMatrix< T >::SetValue().
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | 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 55 of file phased-array-model.h.
References ns3::ValArray< T >::GetSize(), and MRG32k3a::norm.
 Here is the call graph for this function:
 Here is the call graph for this function:| void ns3::PhasedArrayModel::SetAntennaElement | ( | Ptr< AntennaModel > | antennaElement | ) | 
Sets the antenna model to be used.
| antennaElement | the antenna model | 
Definition at line 124 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 55 of file phased-array-model.cc.
References GetNumElems(), ns3::ValArray< T >::GetSize(), m_beamformingVector, m_isBfVectorValid, NS_ASSERT_MSG, and NS_LOG_FUNCTION.
 Here is the call graph for this function:
 Here is the call graph for this function:| 
 | 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 262 of file phased-array-model.h.
Referenced by GetAntennaElement(), ns3::UniformPlanarArray::GetElementFieldPattern(), GetTypeId(), and SetAntennaElement().
| 
 | protected | 
the beamforming vector in use
Definition at line 261 of file phased-array-model.h.
Referenced by GetBeamformingVector(), GetBeamformingVectorRef(), and SetBeamformingVector().
| 
 | protected | 
the ID of this antenna array instance
Definition at line 266 of file phased-array-model.h.
Referenced by PhasedArrayModel(), GetId(), InvalidateChannels(), and IsChannelOutOfDate().
| 
 | staticprotected | 
the ID counter that is used to determine the unique antenna array ID
Definition at line 265 of file phased-array-model.h.
Referenced by PhasedArrayModel().
| 
 | protected | 
ensures the validity of the beamforming vector
Definition at line 263 of file phased-array-model.h.
Referenced by GetBeamformingVector(), GetBeamformingVectorRef(), ns3::UniformPlanarArray::SetAntennaHorizontalSpacing(), ns3::UniformPlanarArray::SetAntennaVerticalSpacing(), SetBeamformingVector(), ns3::UniformPlanarArray::SetNumColumns(), and ns3::UniformPlanarArray::SetNumRows().
| 
 | staticprotected | 
matrix indicating whether a channel matrix between a pair of antennas needs to be updated after a change in one of the antennas configurations
Definition at line 268 of file phased-array-model.h.
Referenced by PhasedArrayModel(), InvalidateChannels(), and IsChannelOutOfDate().