WSF
WsfEM_Rcvr Class Reference

#include <WsfEM_Rcvr.hpp>

Inheritance diagram for WsfEM_Rcvr:
Collaboration diagram for WsfEM_Rcvr:

Definitions to support the component list on the receiver.

enum  RcvrFunction {
  cRF_UNDEFINED , cRF_COMM , cRF_SENSOR , cRF_PASSIVE_SENSOR ,
  cRF_INTERFERER
}
 RcvrFunction defines the intended purpose of the receiver. More...
using Component = WsfEM_RcvrComponent
 Even though this isn't a component, it must have a role in order to use component factories.
using ComponentList = WsfComponentListT<WsfEM_RcvrComponent>
 WsfEM_Rcvr (RcvrFunction aFunction, WsfEM_Antenna *aAntennaPtr=nullptr)
 WsfEM_Rcvr (const WsfEM_Rcvr &aSrc, WsfEM_Antenna *aAntennaPtr=nullptr)
 ~WsfEM_Rcvr () override
std::string GetName () const
 Required to display error messages in WsfComponentFactoryList.

Internal utility functions.

using InteractorList = std::vector<WsfEM_Xmtr*>
void UpdateNoisePower (double aPulseWidth=0.0)
bool CheckXmtrMasking ()
static double ComputeSystemNoiseTemperature (double aElevation, double aAntennaOhmicLoss, double aReceiveLineLoss, double aNoiseFigure, double aFrequency)
void UpdateIndices ()

Lists of transmitters that can potentially interact with this receiver.

This is used by interferers and passive sensors to speed up processing.

InteractorList mCommInteractors
InteractorList mSensorInteractors
InteractorList mInterferenceInteractors

Component list methods.

ComponentListGetComponents ()
const ComponentListGetComponents () const
const char * GetScriptClassName () const override
void Activate ()
virtual void Deactivate ()
virtual double ComputeReceivedPower (double aSourceAz, double aSourceEl, double aEBS_Az, double aEBS_El, double aReceivedPowerDensity, WsfEM_Types::Polarization aPolarization, double aFrequency, double &aAntennaGain)
virtual double ComputeSignalToNoise (double aReceivedSignalPower, double aClutterPower, double aReceivedInterferencePower)
bool Initialize (WsfSimulation &aSimulation) override
bool ProcessInput (UtInput &aInput) override
virtual bool ProcessInputBlock (UtInput &aInput)
 A convenience method to check for and process a 'receiver/end_receiver' block.
double GetBandwidthEffect (double aSignalFreq, double aSignalBW) const
double GetDetectionThreshold () const
RcvrFunction GetFunction () const
double GetInstantaneousBandwidth () const
double GetNoisePower () const
bool IsNoisePowerExplicit () const
double GetNoiseFigure () const
double GetNoiseMultiplier () const
void SetNoiseMultiplier (double aNoiseMultiplier)
double GetPolarizationEffect (WsfEM_Types::Polarization aPolarization) const
void SetAntennaOhmicLoss (double aAntennaOhmicLoss)
double GetAntennaOhmicLoss ()
void SetDetectionThreshold (double aDetectionThreshold)
void SetBandwidth (double aBandwidth) override
void SetFrequency (double aFrequency) override
void SetInstantaneousBandwidth (double aInstantaneousBandwidth)
void SetNoiseFigure (double aNoiseFigure)
void SetNoisePower (double aNoisePower)
void SetPolarization (WsfEM_Types::Polarization aPolarization) override
void SetPolarizationEffect (WsfEM_Types::Polarization aPolarization, double aFraction)
void SetReceiveLineLoss (double aReceiveLineLoss)
double GetReceiveLineLoss () const

Interaction methods.

virtual bool CanInteractWith (WsfEM_Xmtr *aXmtrPtr)
virtual void UpdateInteractions (WsfEM_Xmtr *aXmtrPtr)
virtual bool AddInteractor (WsfEM_Xmtr *aXmtrPtr)
virtual bool RemoveInteractor (WsfEM_Xmtr *aXmtrPtr)
size_t GetCommInteractorCount () const
 Get the number of potentially interacting communications transmitters.
WsfEM_XmtrGetCommInteractorEntry (unsigned int aIndex) const
size_t GetInterferenceInteractorCount () const
 Get the number of potentially interacting interference transmitters.
WsfEM_XmtrGetInterferenceInteractorEntry (size_t aIndex) const
size_t GetSensorInteractorCount () const
 Get the number of potentially interacting sensor transmitters.
WsfEM_XmtrGetSensorInteractorEntry (size_t aIndex) const
unsigned int GetInteractorCount () const
WsfEM_XmtrGetInteractorEntry (unsigned int aIndex) const
virtual void EmitterActiveCallback (double aSimTime, WsfEM_Interaction &aResult)
virtual void SignalChangeCallback (double aSimTime, size_t aTargetIndex)

Additional Inherited Members

Public Types inherited from WsfEM_XmtrRcvr
using AntennaPatternList = std::vector<std::pair<WsfAntennaPattern*, double>>
 Vector of pairs of antenna pattern pointer and associated lower frequency bounds.
Public Member Functions inherited from WsfEM_XmtrRcvr
 WsfEM_XmtrRcvr (WsfEM_Antenna *aAntennaPtr=nullptr)
 WsfEM_XmtrRcvr (const WsfEM_XmtrRcvr &aSrc, WsfEM_Antenna *aAntennaPtr)
virtual ~WsfEM_XmtrRcvr ()
WsfPlatformGetPlatform () const
WsfArticulatedPartGetArticulatedPart () const
virtual void UpdatePosition (double aSimTime)
const char * GetScriptClassName () const override
WsfEM_AttenuationGetAttenuationModel () const
void SetAttenuationModel (WsfEM_Attenuation *aAttenuationPtr)
WsfStringId GetAttenuationModelType () const
 Return the type of the attenuation model (if one is defined).
void SetAttenuationModelType (WsfStringId aAttenuationType)
WsfEM_PropagationGetPropagationModel () const
void SetPropagationModel (WsfEM_Propagation *aPropagationPtr)
WsfStringId GetPropagationModelType () const
 Return the type of the propagation model (if one is defined).
void SetPropagationModelType (WsfStringId aPropagationType)
void SetAttenuationInputEnabled (bool aEnabled)
 Enable or disable 'attenuation_model' input.
void SetPropagationInputEnabled (bool aEnabled)
 Enable or disable 'propagation_model' input.
WsfEM_AntennaGetAntenna () const
 Get the pointer associated geometry object.
void SetAntenna (WsfEM_Antenna *aAntennaPtr)
WsfAntennaPatternGetAntennaPattern (WsfEM_Types::Polarization aPolarization, double aFrequency) const
bool SetAntennaPattern (WsfAntennaPattern *aAntennaPatternPtr, WsfEM_Types::Polarization aPolarization, double aFrequency)
bool AddAntennaPattern (WsfAntennaPattern *aAntennaPatternPtr, WsfEM_Types::Polarization aPolarization, double aFrequency)
const AntennaPatternListGetAntennaPatternList (WsfEM_Types::Polarization aPolarization) const
double GetBeamTilt () const
void SetBeamTilt (double aBeamTilt)
 Set the angle of the boresight of the antenna gain pattern above/below (+/-) the antenna boresight.
virtual double GetAntennaGain (WsfEM_Types::Polarization aPolarization, double aFrequency, double aTargetAz, double aTargetEl, double aEBS_Az, double aEBS_El)
virtual WSF_DEPRECATED double GetAzimuthBeamwidth () const final
virtual double GetAzimuthBeamwidth (double aEBS_Azimuth, double aEBS_Elevation) const
virtual WSF_DEPRECATED double GetElevationBeamwidth () const final
virtual double GetElevationBeamwidth (double aEBS_Azimuth, double aEBS_Elevation) const
virtual double GetPeakAntennaGain () const
virtual double GetMinimumAntennaGain () const
virtual void SetAntennaBeamCount (unsigned int aBeamCount)
bool DebugEnabled () const
 Determine if debugging is enabled.
void SetDebugEnabled (bool aDebugEnabled)
bool IsHorizonMaskingEnabled () const
 determine if horizon masking is to be checked
bool IsTerrainMaskingEnabled () const
 determine if terrain masking is to be checked
std::string MaskingMode () const
 Gets the masking mode.
void SetMaskingMode (const std::string &aTerrainMaskingMode)
 Set the type of masking to perform.
bool CheckMasking () const
 determine if horizon and terrain masking is to be checked
void SetCheckMasking (bool aCheckMasking)
 enable/disable checking of horizon and terrain masking
void DisableMaskingCheck ()
 disables the checking of horizon and terrain masking (retained for compatibility)
WsfModeGetMode () const
void SetMode (WsfMode *aModePtr)
size_t GetIndex () const
 Get the index of the xmtr/rcvr in the complex assembly.
void SetIndex (size_t aIndex)
 Set the index of the xmtr/rcvr in the complex assembly.
WsfSimulationGetSimulation () const
WsfEM_ManagerGetEM_Manager () const
double GetEarthRadiusMultiplier () const
double GetFrequency () const
double GetWavelength () const
double GetBandwidth () const
bool IsBandwidthExplicit () const
double GetInternalLoss () const
WsfEM_Types::Polarization GetPolarization () const
 Get the polarization of the EM system.
void SetEarthRadiusMultiplier (double aMultiplier)
void SetInternalLoss (double aInternalLoss)
Public Member Functions inherited from WsfUniqueId
 WsfUniqueId ()
 Construtor initializes the unique identifier to 0.
 WsfUniqueId (const WsfUniqueId &)
 Copy constructor initializes the unique identifier to 0.
WsfUniqueIdoperator= (const WsfUniqueId &)
unsigned int GetUniqueId () const
 Get the unique identifier assigned to this object.
template<typename T>
void Serialize (T &aBuff)
 For XIO (de)serialization.
Public Member Functions inherited from WsfAuxDataEnabled
 WsfAuxDataEnabled ()=default
 WsfAuxDataEnabled (const WsfAuxDataEnabled &aSrc)=default
WsfAuxDataEnabledoperator= (const WsfAuxDataEnabled &aRhs)
 WsfAuxDataEnabled (WsfAuxDataEnabled &&)=default
WsfAuxDataEnabledoperator= (WsfAuxDataEnabled &&)=default
virtual ~WsfAuxDataEnabled () noexcept
void SetAuxData (const WsfAttributeContainer &aAuxData)
void DeleteAuxData ()
 Delete the aux data container from the object.
void MergeAuxData (const WsfAuxDataEnabled &aSrc)
 Merge the object's aux data with aux data from an existing object.
void UpdateAuxData (const WsfAuxDataEnabled &aSrc)
 Update the object's aux data with aux data from an existing object.
bool HasAuxData () const
 Returns true if this object has aux data.
bool ProcessInput (UtInput &aInput)
template<typename T>
void Serialize (T &aBuff)
 (De)serialization for XIO
WsfAttributeContainerGetAuxData ()
const WsfAttributeContainerGetAuxData () const noexcept
const WsfAttributeContainerGetAuxDataConst () const noexcept
static void AssociateSystems (WsfEM_XmtrRcvr *aSystem1Ptr, WsfEM_XmtrRcvr *aSystem2Ptr)
Static Public Attributes inherited from WsfAuxDataEnabled
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataAccessed
static UtCallbackListN< void(const WsfAuxDataEnabled *)> AuxDataDestroyed
Protected Member Functions inherited from WsfUniqueId
void AssignUniqueId (WsfSimulation *aSimulationPtr)
WsfStringId mAttenuationType
 The type of the atmospheric attenuation model to be used.
WsfStringId mPropagationType
 The type of the propagation model to be used.
WsfEM_AttenuationmAttenuationPtr
 Pointer to the atmospheric attenuation model.
WsfEM_PropagationmPropagationPtr
 Pointer to the propagation object.
WsfModemModePtr
WsfEM_AntennamAntennaPtr
 Pointer to the 'geometry' object for this transmitter/receiver.
std::array< AntennaPatternList, WsfEM_Types::cPOL_COUNTmPatternTables {}
WsfEM_XmtrRcvrmAssociatePtr
double mBeamTilt
double mEarthRadiusMultiplier
double mFrequency
double mBandwidth
double mInternalLoss
WsfEM_Types::Polarization mPolarization
size_t mIndex
std::array< bool, WsfEM_Types::cPOL_COUNTmUsedExplicitPolarization {{false}}
bool mDebugEnabled
unsigned int mTerrainMaskingMode
 Settings used for masking checks.
bool mCheckMasking
 true if horizon and terrain masking enabled.
bool mExplicitBandwidth
 true if explicit 'bandwidth' specified

Detailed Description

A receiver of electromagnetic radiation.

This can be used to implement the receiver radar receivers, passive sensors or RF communications receivers.

To use one of these within a system, the following protocol must be observed

  • Set the attributes of the object (using ProcessInput or the Set methods)
  • Ensure that a pointer to a valid WsfEM_Antenna object has been provided via either the (copy) constructor or SetAntenna() method.
  • Invoke the Initialize() method when all of the attributes have been defined. (This is typically done within the Initialize() method of the containing system).
  • The Activate() method must be called when the system is turned on. (This is typically done within the TurnOn() method of the containing system).
  • The Deactivate() method must be called when the system is turned off. (This is typically done within the TurnOff() method of the containing system).

Member Typedef Documentation

◆ Component

Even though this isn't a component, it must have a role in order to use component factories.

◆ ComponentList

◆ InteractorList

using WsfEM_Rcvr::InteractorList = std::vector<WsfEM_Xmtr*>
protected

Member Enumeration Documentation

◆ RcvrFunction

RcvrFunction defines the intended purpose of the receiver.

Enumerator
cRF_UNDEFINED 

Undefined.

cRF_COMM 

Communications.

cRF_SENSOR 

Active or Semi-Active Sensing (narrowband or matched frequency sensing, e.g. radar).

cRF_PASSIVE_SENSOR 

Passive Sensing (wideband sensing, etc.).

cRF_INTERFERER 

Interfering system.

Constructor & Destructor Documentation

◆ WsfEM_Rcvr() [1/2]

WsfEM_Rcvr::WsfEM_Rcvr ( RcvrFunction aFunction,
WsfEM_Antenna * aAntennaPtr = nullptr )

Construct a receiver.

Parameters
aFunctionThe primary function of the transmitter.
aAntennaPtrPointer to the antenna associated with the receiver. If one isn't provided or if it is zero then call must be made to SetAntenna() prior to calling Initialize().
Note
The caller retains ownership of the antenna as it may be shared with other receivers or transmitters.

References WsfEM_Types::cPOL_COUNT, mCommInteractors, mInterferenceInteractors, mSensorInteractors, WsfEM_XmtrRcvr::SetAttenuationInputEnabled(), WsfEM_XmtrRcvr::SetPropagationInputEnabled(), and WsfEM_XmtrRcvr::WsfEM_XmtrRcvr().

Referenced by WsfPassiveSensor::PassiveRcvr::PassiveRcvr(), WsfPassiveSensor::PassiveRcvr::PassiveRcvr(), and WsfEM_Rcvr().

◆ WsfEM_Rcvr() [2/2]

WsfEM_Rcvr::WsfEM_Rcvr ( const WsfEM_Rcvr & aSrc,
WsfEM_Antenna * aAntennaPtr = nullptr )

Copy construct a receiver.

Parameters
aSrcThe receiver from which to copy.
aAntennaPtrPointer to the antenna associated with the receiver. If one isn't provided or if it is zero then call must be made to SetAntenna() prior to calling Initialize().
Note
The caller retains ownership of the antenna as it may be shared with other receivers or transmitters.

References WsfEM_Types::cPOL_COUNT, mCommInteractors, mInterferenceInteractors, mSensorInteractors, WsfEM_Rcvr(), and WsfEM_XmtrRcvr::WsfEM_XmtrRcvr().

◆ ~WsfEM_Rcvr()

WsfEM_Rcvr::~WsfEM_Rcvr ( )
override

Member Function Documentation

◆ Activate()

void WsfEM_Rcvr::Activate ( )

Indicate the receiver is 'turned-on'.

This method adds the receiver from the list of active receivers within the simulation.

References WsfEM_XmtrRcvr::GetEM_Manager().

◆ AddInteractor()

bool WsfEM_Rcvr::AddInteractor ( WsfEM_Xmtr * aXmtrPtr)
virtual

Add the specified transmitter to the list of potential interactors.

Parameters
aXmtrPtrThe transmitter to be added.

Reimplemented in WsfPassiveSensor::PassiveRcvr.

References WsfEM_Xmtr::cXF_COMM, WsfEM_Xmtr::cXF_INTERFERER, WsfEM_Xmtr::cXF_SENSOR, WsfEM_Xmtr::GetFunction(), mCommInteractors, mInterferenceInteractors, mSensorInteractors, and UpdateIndices().

Referenced by UpdateInteractions().

◆ CanInteractWith()

bool WsfEM_Rcvr::CanInteractWith ( WsfEM_Xmtr * aXmtrPtr)
virtual

Can this receiver potentially interact with (receive radiation from) the specified transmitter.

This method should answer the question, 'given the current frequency and bandwidth, could this receiver process information from the specified transmitter'. This method must NOT consider geometry.

Reimplemented in WsfPassiveSensor::PassiveRcvr.

References WsfEM_XmtrRcvr::GetBandwidth(), and WsfEM_XmtrRcvr::GetFrequency().

Referenced by UpdateInteractions().

◆ CheckXmtrMasking()

bool WsfEM_Rcvr::CheckXmtrMasking ( )
inline

Check for transmitter masking, includes terrain check flag also Transmitter flag utilized primarily for bistatic interactions.

References WsfEM_XmtrRcvr::CheckMasking().

◆ ComputeReceivedPower()

double WsfEM_Rcvr::ComputeReceivedPower ( double aSourceAz,
double aSourceEl,
double aEBS_Az,
double aEBS_El,
double aReceivedPowerDensity,
WsfEM_Types::Polarization aPolarization,
double aFrequency,
double & aAntennaGain )
virtual

Compute the received power from an emission direction, taking into account the polarization of of the incoming signal for antenna gain. Does NOT take into account bandwidth mismatch between the receiver and signal.

Parameters
aSourceAz[input] Source azimuth with respect to the beam (radians)
aSourceEl[input] Source elevation with respect to the beam (radians)
aEBS_Az[input] Beam azimuth with respect to the antenna (radians)
aEBS_El[input] Beam elevation with respect to the antenna (radians)
aPolarization[input] Polarization of the signal being received.
aReceivedPowerDensity[input] Power density of the signal at the face of the antenna (w/m^2).
aFrequency[input] Frequency of the signal being received (Hertz).
aAntennaGain[output] Computed antenna gain (absolute - not dB).
Returns
The received power in watts.
Note
This method uses the receiver frequency as the center frequency. If one wants to use the transmitter frequency instead, for a passive sensing or wideband passive system, please override this method with your own method.
This method does not apply polarization effects because the polarization of the signal may have changed due to reflection. The application of these effects is left to the caller.
This method does not apply bandwidth effects because the bandwidth of the signal may have changed due to reflection. The application of these effects is left to the caller.

Reimplemented in WsfPassiveSensor::PassiveRcvr.

References WsfEM_XmtrRcvr::GetAntennaGain(), WsfEM_XmtrRcvr::mFrequency, and WsfEM_XmtrRcvr::mInternalLoss.

◆ ComputeSignalToNoise()

double WsfEM_Rcvr::ComputeSignalToNoise ( double aReceivedSignalPower,
double aClutterPower,
double aReceivedInterferencePower )
virtual

Compute the signal-to-noise ratio.

Parameters
aReceivedSignalPower[input] The power of the signal to be detected.
aClutterPower[input] The received clutter power.
aReceivedInterferencePower[input] The power of the signal that is attempting to interfere with the detection.
Returns
The computed signal-to-noise ratio (absolute - not dB)
Note
The input powers are at the output of the antenna terminals as determined by ComputeReceivedPower.

Referenced by wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), WsfFalseTargetBlip::ComputeEquivalentRCS(), WsfFalseTargetBlip::ComputeSNR(), WsfEW_SensorComponent::EW_Beam::DetectJamStrobes(), WsfRadarMTD_SignalProcessor::Execute(), WsfFalseTarget::PowerSufficiencyCheck(), WsfEW_RPJ_Effect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), WsfEW_SLB_Effect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), and WsfEW_TrackEffect::UpdateEffects().

◆ ComputeSystemNoiseTemperature()

double WsfEM_Rcvr::ComputeSystemNoiseTemperature ( double aElevation,
double aAntennaOhmicLossFactor,
double aReceiveLineLossFactor,
double aNoiseFigure,
double aFrequency )
static

Compute the system noise temperature in a receiver.

This method computes the system noise temperature as defined by:

Ref 1: "Radar Range Performance", Lamont V. Blake, 1986, Artech House, Inc., Chapter 4.

Parameters
aElevationElevation angle above the horizontal (radians).
aAntennaOhmicLossFactorThe antenna ohmic loss factor (>= 1.0). (See the note below concerning loss factors).
aReceiveLineLossFactorThe line loss factor between the antenna and the receiver (>= 1.0). (See the note below concerning loss factors).
aNoiseFigureThe receiver noise figure. This should be greater than 1.
aFrequencyThe operating frequency (Hertz)
Returns
The system noise temperature (in deg K);
Note
The term 'loss factor' means the reciprocal of the gain where gain is computed as the ratio of 'output power' / 'input power'. Thus, a loss factor should always be greater than or equal to one!

Referenced by UpdateNoisePower().

◆ Deactivate()

void WsfEM_Rcvr::Deactivate ( )
virtual

Indicate that the receiver is 'turned-off'. This method removes the receiver from the list of active receivers within the simulation and clears the interactor list.

References mCommInteractors, mInterferenceInteractors, mSensorInteractors, and UpdateIndices().

◆ EmitterActiveCallback()

void WsfEM_Rcvr::EmitterActiveCallback ( double aSimTime,
WsfEM_Interaction & aResult )
virtual

A transmitter to which this receiver is listening is emitting.

Parameters
aSimTimeThe current simulation time.
aResultThe interaction object representing the transmission. aResult.GetTransmitter() returns the emitting transmitter.
Note
See WsfEM_Xmtr::AddListener for a discussion of listeners.

Reimplemented in WsfPassiveSensor::PassiveRcvr.

◆ GetAntennaOhmicLoss()

double WsfEM_Rcvr::GetAntennaOhmicLoss ( )
inline

◆ GetBandwidthEffect()

double WsfEM_Rcvr::GetBandwidthEffect ( double aSignalFreq,
double aSignalBW ) const

Get the effect of mis-matched frequency bandwidths between the receiver and supplied signal. The caller should use this to effectively reduce the transmitter power by the ratio of the amount of transmitter bandwidth that is within the receiver bandwidth and the total transmitter bandwidth.

Parameters
aSignalFreqThe frequency of the signal being received.
aSignalBWThe bandwidth of the signal being received.
Returns
The fraction in the range [0..1] of the signal will be receivable.

References WsfEM_XmtrRcvr::mBandwidth, and WsfEM_XmtrRcvr::mFrequency.

◆ GetCommInteractorCount()

size_t WsfEM_Rcvr::GetCommInteractorCount ( ) const
inline

Get the number of potentially interacting communications transmitters.

References mCommInteractors.

◆ GetCommInteractorEntry()

WsfEM_Xmtr * WsfEM_Rcvr::GetCommInteractorEntry ( unsigned int aIndex) const
inline

Get the i'th potentially interacting communications transmitter.

Parameters
aIndexThe index of the desired entry in the rage [0 .. GetCommInteractorCount() - 1].
Note
The index should not be retained as it can change if AddInteractor() or RemoveInteractor() is called.

References mCommInteractors.

◆ GetComponents() [1/2]

ComponentList & WsfEM_Rcvr::GetComponents ( )
inline

◆ GetComponents() [2/2]

const ComponentList & WsfEM_Rcvr::GetComponents ( ) const
inline

◆ GetDetectionThreshold()

◆ GetFunction()

◆ GetInstantaneousBandwidth()

double WsfEM_Rcvr::GetInstantaneousBandwidth ( ) const
inline

Get the receiver bandwidth.

Returns
The receiver bandwidth (Hz).

◆ GetInteractorCount()

unsigned int WsfEM_Rcvr::GetInteractorCount ( ) const
inline

Get the number of potentially interacting transmitters of any class.

Note
This is provided only for convenience of those that need to process all classes of transmitters. If you only need a specific class (comm, sensor or interferer), then use the appropriate class-specified methods.

◆ GetInteractorEntry()

WsfEM_Xmtr * WsfEM_Rcvr::GetInteractorEntry ( unsigned int aIndex) const

Get the i'th potentially interacting transmitter of any class.

Parameters
aIndexThe index of the desired entry in the rage [0 .. GetInteractorCount() - 1].
Note
The index should not be retained as it can change if AddInteractor() or RemoveInteractor() is called.
This is provided only for convenience of those that need to process all classes of transmitters. If you only need a specific class (comm, sensor or interferer), then use the appropriate class-specified methods.

References mCommInteractors, mInterferenceInteractors, and mSensorInteractors.

◆ GetInterferenceInteractorCount()

size_t WsfEM_Rcvr::GetInterferenceInteractorCount ( ) const
inline

◆ GetInterferenceInteractorEntry()

WsfEM_Xmtr * WsfEM_Rcvr::GetInterferenceInteractorEntry ( size_t aIndex) const
inline

Get the i'th potentially interacting interference transmitter.

Parameters
aIndexThe index of the desired entry in the rage [0 .. GetInterferenceInteractorCount() - 1].
Note
The index should not be retained as it can change if AddInteractor() or RemoveInteractor() is called.

References mInterferenceInteractors.

Referenced by WsfRF_Jammer::ComputeTotalJammerEffects(), WsfEW_SensorComponent::EW_Beam::DetectJamStrobes(), and WsfEW_SensorComponent::EW_Mode::UpdateFalseTargetInteractors().

◆ GetName()

std::string WsfEM_Rcvr::GetName ( ) const
inline

◆ GetNoiseFigure()

double WsfEM_Rcvr::GetNoiseFigure ( ) const
inline

Get the noise figure

Returns
Noise figure (Linear)

Referenced by WsfXIO_ObjectInfoLoad::Load_EM_Rcvr().

◆ GetNoiseMultiplier()

double WsfEM_Rcvr::GetNoiseMultiplier ( ) const
inline

Get the noise power level

Returns
The current noise multiplier (absolute ratio, NOT dB)
Note
This is the multiplier that is used in SNR calculations.

Referenced by WsfEW_RepeaterEffect::UpdateGainFactors().

◆ GetNoisePower()

◆ GetPolarizationEffect()

double WsfEM_Rcvr::GetPolarizationEffect ( WsfEM_Types::Polarization aPolarization) const

Get effect of receiving a signal of a specified polarization. This method returns the fraction of the incoming signal that can be received as a function of its polarization. For example, if the receiver is defined to process horizontally polarized signals and it receives a horizontally polarized signal then the fraction will be 1.0. However if it receives a vertically polarized signal then the fraction will be 0.0;

Parameters
aPolarizationThe polarization of the signal being received.
Returns
The fraction in the range [0..1] of the signal will be receivable.

References WsfEM_Types::cPOL_COUNT, WsfEM_Types::cPOL_DEFAULT, and WsfEM_XmtrRcvr::mPolarization.

◆ GetReceiveLineLoss()

double WsfEM_Rcvr::GetReceiveLineLoss ( ) const
inline

◆ GetScriptClassName()

const char * WsfEM_Rcvr::GetScriptClassName ( ) const
inlineoverride

◆ GetSensorInteractorCount()

size_t WsfEM_Rcvr::GetSensorInteractorCount ( ) const
inline

Get the number of potentially interacting sensor transmitters.

References mSensorInteractors.

◆ GetSensorInteractorEntry()

WsfEM_Xmtr * WsfEM_Rcvr::GetSensorInteractorEntry ( size_t aIndex) const
inline

Get the i'th potentially interacting sensor transmitter.

Parameters
aIndexThe index of the desired entry in the rage [0 .. GetSensorInteractorCount() - 1].
Note
The index should not be retained as it can change if AddInteractor() or RemoveInteractor() is called.

References mSensorInteractors.

◆ Initialize()

bool WsfEM_Rcvr::Initialize ( WsfSimulation & aSimulation)
overridevirtual

◆ IsNoisePowerExplicit()

bool WsfEM_Rcvr::IsNoisePowerExplicit ( ) const
inline

Return the source of the noise power

Returns
true if noise power was defined in the input file

◆ ProcessInput()

◆ ProcessInputBlock()

bool WsfEM_Rcvr::ProcessInputBlock ( UtInput & aInput)
virtual

A convenience method to check for and process a 'receiver/end_receiver' block.

References ProcessInput().

Referenced by WsfEW_SLB_Effect::ProcessInput(), and WsfEW_SLC_Effect::ProcessInput().

◆ RemoveInteractor()

bool WsfEM_Rcvr::RemoveInteractor ( WsfEM_Xmtr * aXmtrPtr)
virtual

Remove the specified transmitter from the list of potential interactors. This method is typically called by WsfEM_Manager whenever a transmitter is deactivated.

Parameters
aXmtrPtrThe transmitter to be removed.

Reimplemented in WsfPassiveSensor::PassiveRcvr.

References WsfEM_Xmtr::cXF_COMM, WsfEM_Xmtr::cXF_INTERFERER, WsfEM_Xmtr::cXF_SENSOR, WsfEM_Xmtr::GetFunction(), mCommInteractors, mInterferenceInteractors, mSensorInteractors, and UpdateIndices().

Referenced by UpdateInteractions().

◆ SetAntennaOhmicLoss()

void WsfEM_Rcvr::SetAntennaOhmicLoss ( double aAntennaOhmicLoss)

Set the antenna ohmic loss. This is used to determine the system noise temperature and the receiver noise.

Parameters
aAntennaOhmicLossThe antenna ohmic loss factor [1..).
Note
A value of 0 may be given, which effectively indicates the value is 'not defined'. If both antenna ohmic loss and receive line loss are 'not defined' then the system noise temperature is assumed to be 290 degK and the noise figure is just a multiplier. If either or both values are given, the system noise temperature will be computed, with 'not defined' values being given the value of 1.

References UpdateNoisePower().

Referenced by ProcessInput().

◆ SetBandwidth()

void WsfEM_Rcvr::SetBandwidth ( double aBandwidth)
overridevirtual

Set the receiver operating bandwidth.

Parameters
aBandwidthThe receiver operating bandwidth (Hz).

Reimplemented from WsfEM_XmtrRcvr.

References WsfEM_XmtrRcvr::mBandwidth, WsfEM_XmtrRcvr::mExplicitBandwidth, and UpdateNoisePower().

Referenced by WsfLASER_RcvrComponent::Initialize(), WsfPassiveSensor::PassiveRcvr::Initialize(), and WsfPassiveSensor::PassiveRcvr::TuneFrequencyBand().

◆ SetDetectionThreshold()

void WsfEM_Rcvr::SetDetectionThreshold ( double aDetectionThreshold)
inline

Set the threshold required for detection.

Parameters
aDetectionThresholdThe minimum detectable signal-to-noise (absolute ratio, NOT dB)

Referenced by ProcessInput().

◆ SetFrequency()

void WsfEM_Rcvr::SetFrequency ( double aFrequency)
overridevirtual

Set the operating frequency.

Parameters
aFrequencyThe operating frequency (Hz)

Reimplemented from WsfEM_XmtrRcvr.

References WsfEM_XmtrRcvr::mFrequency.

Referenced by WsfPassiveSensor::PassiveRcvr::Initialize(), and WsfPassiveSensor::PassiveRcvr::TuneFrequencyBand().

◆ SetInstantaneousBandwidth()

void WsfEM_Rcvr::SetInstantaneousBandwidth ( double aInstantaneousBandwidth)

Set the receiver instantaneous bandwidth.

Parameters
aInstantaneousBandwidthThe receiver instantaneous bandwidth (Hz).

References WsfEM_XmtrRcvr::mBandwidth, WsfEM_XmtrRcvr::mExplicitBandwidth, and UpdateNoisePower().

Referenced by ProcessInput().

◆ SetNoiseFigure()

void WsfEM_Rcvr::SetNoiseFigure ( double aNoiseFigure)

Set the receiver noise figure. This is used to determine the system noise temperature and the receiver noise.

Parameters
aNoiseFigureThe receiver noise figure (absolute, not dB).
Note
If either the antenna ohmic loss or receive line loss is specified, the system noise temperature, Ts, will be computed and the noise power will be computed as k * Ts * B. If neither is specified, the noise power will be computed as k * T0 * B * Fn.

References UpdateNoisePower().

Referenced by ProcessInput().

◆ SetNoiseMultiplier()

void WsfEM_Rcvr::SetNoiseMultiplier ( double aNoiseMultiplier)
inline

Set the noise multiplier

Parameters
aNoiseMultiplierThe noise multiplier (absolute ratio, NOT dB)

Referenced by WsfRF_Jammer::ComputeSingleJammerEffect(), and WsfRF_Jammer::ComputeTotalJammerEffects().

◆ SetNoisePower()

void WsfEM_Rcvr::SetNoisePower ( double aNoisePower)

Set the noise power level

Parameters
aNoisePowerNoise power level (Watts)

References UpdateNoisePower().

Referenced by WsfSAR_Sensor::SAR_Mode::Calibrate(), and ProcessInput().

◆ SetPolarization()

void WsfEM_Rcvr::SetPolarization ( WsfEM_Types::Polarization aPolarization)
overridevirtual

Set the polarization of the receive antenna.

Parameters
aPolarizationThe polarization.

Reimplemented from WsfEM_XmtrRcvr.

References WsfEM_Types::cPOL_COUNT, WsfEM_Types::cPOL_DEFAULT, and WsfEM_XmtrRcvr::mPolarization.

◆ SetPolarizationEffect()

void WsfEM_Rcvr::SetPolarizationEffect ( WsfEM_Types::Polarization aPolarization,
double aFraction )

Set the polarization effect for a specified polarization.

Parameters
aPolarizationThe polarization for which the factor applies.
aFractionThe effect for the specified polarization in the range [0..1]

References WsfEM_Types::cPOL_COUNT, and WsfEM_Types::cPOL_DEFAULT.

Referenced by ProcessInput().

◆ SetReceiveLineLoss()

void WsfEM_Rcvr::SetReceiveLineLoss ( double aReceiveLineLoss)

Set the receive line loss. This is used to determine the system noise temperature and the receiver noise.

Parameters
aReceiveLineLossThe line loss factor [1..).
Note
A value of 0 may be given, which effectively indicates the value is 'not defined'. If both antenna ohmic loss and receive line loss are 'not defined' then the system noise temperature is assumed to be 290 degK and the noise figure is just a multiplier. If either or both values are given, the system noise temperature will be computed, with 'not defined' values being given the value of 1.

References UpdateNoisePower().

Referenced by ProcessInput().

◆ SignalChangeCallback()

void WsfEM_Rcvr::SignalChangeCallback ( double aSimTime,
size_t aTargetIndex )
virtual

A targets transmitter to which this receiver is listening has changed requiring a target update.

Parameters
aSimTimeThe current simulation time.
aTargetIndexThe target representing the transmission change.
Note
See WsfEM_Xmtr::AddListener for a discussion of listeners.

Reimplemented in WsfPassiveSensor::PassiveRcvr.

◆ UpdateIndices()

void WsfEM_Rcvr::UpdateIndices ( )
protected

Update indices used by GetInteractorCount() and GetInteractorEntry(). This method must be called whenever the interactor lists are modified.

References mCommInteractors, mInterferenceInteractors, and mSensorInteractors.

Referenced by AddInteractor(), Deactivate(), and RemoveInteractor().

◆ UpdateInteractions()

void WsfEM_Rcvr::UpdateInteractions ( WsfEM_Xmtr * aXmtrPtr)
virtual

Update the potential interaction list for the associated transmitter.

This method is typically called by WsfEM_Manager to maintain the list of transmitters that can potentially interact with this receiver. This uses the CanInteractWith() method to determine if the receiver can interact with the transmitter.

Parameters
aXmtrPtrThe transmitter to be evaluated.

References AddInteractor(), WsfEM_Xmtr::AllowInteractionWith(), CanInteractWith(), and RemoveInteractor().

Referenced by WsfEM_Manager::UpdateRcvr().

◆ UpdateNoisePower()

void WsfEM_Rcvr::UpdateNoisePower ( double aPulseWidth = 0.0)

Update the noise power from other values if one hasn't been explicitly provided.

If a noise power has not been explicitly provided by SetNoisePower() then this routine will calculate the noise power based on:

noise_power = k * Ts * B

  • k is the Boltzmann constant
  • Ts is the system noise temperature (nominally 290 degrees Kelvin)
  • B is the bandwidth in Hertz.
Parameters
aPulseWidthIf the noise power must be calculated and if the instantaneous bandwidth or bandwidth hasn't been defined AND these values are less than zero, then the instantaneous bandwidth and bandwidth will be assumed to be (1 / this value).

References ComputeSystemNoiseTemperature(), WsfEM_Antenna::cSCAN_EL, WsfArticulatedPart::cSLEW_EL, WsfEM_XmtrRcvr::GetBeamTilt(), WsfArticulatedPart::GetMaxElSlew(), WsfArticulatedPart::GetMinElSlew(), WsfArticulatedPart::GetPitch(), WsfArticulatedPart::GetSlewMode(), WsfArticulatedPart::GetTilt(), WsfEM_XmtrRcvr::mAntennaPtr, WsfEM_XmtrRcvr::mBandwidth, WsfEM_XmtrRcvr::mExplicitBandwidth, and WsfEM_XmtrRcvr::mFrequency.

Referenced by Initialize(), SetAntennaOhmicLoss(), SetBandwidth(), SetInstantaneousBandwidth(), SetNoiseFigure(), SetNoisePower(), and SetReceiveLineLoss().

Member Data Documentation

◆ mCommInteractors

◆ mInterferenceInteractors

◆ mSensorInteractors


The documentation for this class was generated from the following files:
Copyrights Multiple, All Rights Reserved