WSF
WsfEM_XmtrRcvr Class Reference

#include <WsfEM_XmtrRcvr.hpp>

Inheritance diagram for WsfEM_XmtrRcvr:
Collaboration diagram for WsfEM_XmtrRcvr:

Public Types

using AntennaPatternList = std::vector<std::pair<WsfAntennaPattern*, double>>
 Vector of pairs of antenna pattern pointer and associated lower frequency bounds.

Public Member Functions

 WsfEM_XmtrRcvr (WsfEM_Antenna *aAntennaPtr=nullptr)
 WsfEM_XmtrRcvr (const WsfEM_XmtrRcvr &aSrc, WsfEM_Antenna *aAntennaPtr)
virtual ~WsfEM_XmtrRcvr ()
WsfPlatformGetPlatform () const
WsfArticulatedPartGetArticulatedPart () const
virtual bool Initialize (WsfSimulation &aSimulation)
virtual bool ProcessInput (UtInput &aInput)
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)
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

Special functions for receivers.

By default receivers disable the use of the attenuation_model and propagation_model, as interactions that involve a transmitter use models stored on the transmitter. For interactions where the signal source is not a transmitter, it is still useful to have these objects. Models that want to enabled them may do so...

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
void SetAttenuationInputEnabled (bool aEnabled)
 Enable or disable 'attenuation_model' input.
void SetPropagationInputEnabled (bool aEnabled)
 Enable or disable 'propagation_model' input.

Antenna methods.

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)

Debugging methods

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)
static void AssociateSystems (WsfEM_XmtrRcvr *aSystem1Ptr, WsfEM_XmtrRcvr *aSystem2Ptr)

Mode Association and Index methods.

The use of these methods is completely optional. Complex systems may use these to identify the context in which a a specific xmtr/rcvr exists (e.g.: a particular xmtr/rcvr may represent 'beam x' in 'mode y'). Some observers (the DIS observer in particular) make use of the information if it is available.

Note
These are purely optional! Users of the 'Get' methods should be careful!
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)
virtual void SetFrequency (double aFrequency)
virtual void SetBandwidth (double aBandwidth)
void SetInternalLoss (double aInternalLoss)
virtual void SetPolarization (WsfEM_Types::Polarization aPolarization)

Additional Inherited Members

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)

Detailed Description

This is the base class for WsfEM_Xmtr and WsfEM_Rcvr. It encapsulates the common attributes of a transmitter or a receiver (antenna position, gain patterns, etc).

Member Typedef Documentation

◆ AntennaPatternList

using WsfEM_XmtrRcvr::AntennaPatternList = std::vector<std::pair<WsfAntennaPattern*, double>>

Vector of pairs of antenna pattern pointer and associated lower frequency bounds.

Constructor & Destructor Documentation

◆ WsfEM_XmtrRcvr() [1/2]

◆ WsfEM_XmtrRcvr() [2/2]

◆ ~WsfEM_XmtrRcvr()

WsfEM_XmtrRcvr::~WsfEM_XmtrRcvr ( )
virtual

Member Function Documentation

◆ AddAntennaPattern()

bool WsfEM_XmtrRcvr::AddAntennaPattern ( WsfAntennaPattern * aAntennaPatternPtr,
WsfEM_Types::Polarization aPolarization,
double aFrequency )

Add the antenna pattern to the list with the associated lower frequency bound.

Parameters
aAntennaPatternPtrPointer to the antenna pattern.
aFrequencyThe lower frequency bound of the antenna pattern.
aPolarizationThe polarization of the antenna pattern. Defaults to DEFAULT
Returns
True if the insert was successful, False if a pattern associated with the frequency already exists.

References WsfEM_Types::cPOL_DEFAULT, mPatternTables, and mUsedExplicitPolarization.

Referenced by ProcessInput(), and SetAntennaPattern().

◆ AssociateSystems()

void WsfEM_XmtrRcvr::AssociateSystems ( WsfEM_XmtrRcvr * aSystem1Ptr,
WsfEM_XmtrRcvr * aSystem2Ptr )
static

Indicate that two systems (typically a transmitter/receiver pair) are 'associated'. Certain parameters that haven't been defined in one system are automatically copied from the associated system during initialization.

References mAssociatePtr, and WsfEM_XmtrRcvr().

Referenced by WsfEM_Xmtr::SetLinkedReceiver().

◆ CheckMasking()

bool WsfEM_XmtrRcvr::CheckMasking ( ) const
inline

determine if horizon and terrain masking is to be checked

References mCheckMasking.

Referenced by WsfEM_Rcvr::CheckXmtrMasking().

◆ DebugEnabled()

bool WsfEM_XmtrRcvr::DebugEnabled ( ) const
inline

Determine if debugging is enabled.

References mDebugEnabled.

◆ DisableMaskingCheck()

void WsfEM_XmtrRcvr::DisableMaskingCheck ( )
inline

disables the checking of horizon and terrain masking (retained for compatibility)

References mCheckMasking.

Referenced by wsf::comm::ComponentHW_Subsurface::ComponentHW_Subsurface(), and wsf::comm::ComponentHW_Subsurface::ComponentHW_Subsurface().

◆ GetAntenna()

WsfEM_Antenna * WsfEM_XmtrRcvr::GetAntenna ( ) const
inline

Get the pointer associated geometry object.

References mAntennaPtr.

Referenced by WsfEM_Manager::ActivateRcvr(), WsfEM_Manager::ActivateXmtr(), wsf::RadarSensorErrorModel::ApplyMeasurementErrors(), wsf::StandardSensorErrorModel::ApplyMeasurementErrors(), WsfPassiveSensor::PassiveMode::AttemptToDetect(), WsfEW_SensorComponent::AttemptToDetectFalseTarget(), WsfSensorResult::BeginGenericInteraction(), WsfSensorResult::BeginOneWayInteraction(), WsfSensorResult::BeginOneWayInteraction(), WsfSensorResult::BeginTwoWayInteraction(), WsfSensorResult::BeginTwoWayOTH_Interaction(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), WsfOpticalEnvironment::ComputeBackgroundRadiance(), WsfEM_SurfaceClutter::ComputeClutterPower(), WsfEM_ALARM_Geometry::ComputeGeometry(), WsfEM_FastMultipath::ComputePropagationFactor(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), WsfEM_FastMultipath::ComputeReflectionGain(), AntennaPlotFunction::Execute(), WsfBeamDirector::GetAzFOV(), WsfBeamDirector::GetElFOV(), WsfFalseTargetBlip::GetReferenceJammerToRadarRange(), WsfChaffRadarSignature::GetSignature(), wsf::BistaticErrorModel::GetSphericalErrorStdDev(), SAM_LaunchComputerGenerator::Initialize(), WsfEM_SurfaceClutter::Initialize(), WsfLASER_RcvrComponent::Initialize(), WsfRF_Jammer::JammerBeam::Initialize(), WsfEM_Interaction::MaskedByHorizon(), WsfEM_Interaction::MaskedByHorizon(), WsfEM_Interaction::MaskedByHorizon(), WsfDisPlatform::MessageTransmitted(), wsf::event::utils::PrintEM_BeamData(), wsf::event::utilsCSV::PrintEM_BeamData(), wsf::event::utils::PrintEM_RelXmtrRcvrData(), wsf::event::utilsCSV::PrintEM_RelXmtrRcvrData(), WsfDisInterface::UpdateBeamFromXmtr(), WsfExtEmission::UpdateBeamLimits(), WsfEW_RepeaterEffect::UpdateEffects(), WsfEW_RPJ_Effect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), WsfEW_SLB_Effect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), WsfEW_FalseTargetEffect::UpdateFT(), WsfEW_FalseTargetEffect::UpdateJammerPulseDensity(), WsfEW_SimpleFT_Effect::UpdateJammerPulseDensity(), WsfDisInterface::UpdateSystemFromSensor(), WsfMilDisInterface::UpdateSystemFromWeapon(), WsfJamStrobeDetector::UpdateTrack(), WsfSensorMode::UpdateTrack(), WsfTRIMSIM_SensorComponent::UpdateTrack(), WsfSensorMode::UpdateTrackPosition(), WsfDisInterface::UpdateXmtrFromBeam(), WsfMilDisInterface::UpdateXmtrFromBeam(), WsfRF_Jammer::WithinFieldOfView(), WsfRF_Jammer::WithinFieldOfView(), WsfSensor::WithinFieldOfView(), WsfSensor::WithinFieldOfView(), WsfWeapon::WithinFieldOfView(), and WsfWeapon::WithinFieldOfView().

◆ GetAntennaGain()

double WsfEM_XmtrRcvr::GetAntennaGain ( WsfEM_Types::Polarization aPolarization,
double aFrequency,
double aTargetAz,
double aTargetEl,
double aEBS_Az,
double aEBS_El )
virtual

Get the antenna gain at the specified azimuth and elevation.

Parameters
aPolarizationThe polarization of the signal being transmitted or received.
aFrequencyThe frequency of the signal being transmitted or received (Hertz)
aTargetAzThe azimuth of the target with respect to the beam boresight (radians)
aTargetElThe elevation of the target with respect to the beam boresight (radians)
aEBS_AzThe azimuth of the beam boresight with respect to the antenna face (radians). (see note below).
aEBS_ElThe elevation of the beam boresight with respect to the antenna face (radians). (see note below).
Returns
The antenna gain as an absolute value (not dBi).
Note
The arguments 'aEBS_Az' and 'aEBS_El' are only used if electronic beam steering is used.

References WsfEM_Antenna::cEBS_NONE, GetAntennaPattern(), WsfAntennaPattern::GetGain(), WsfAntennaPattern::GetMinimumGain(), and mAntennaPtr.

Referenced by WsfSAR_Sensor::SAR_Mode::Calibrate(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), WsfEM_Xmtr::ComputeRadiatedPower(), WsfEM_Rcvr::ComputeReceivedPower(), WsfPassiveSensor::PassiveRcvr::ComputeReceivedPower(), WsfEM_FastMultipath::ComputeReflectionGain(), WsfEW_SimpleFT_Effect::UpdateEffects(), and WsfDisEmission::UpdateXmtr().

◆ GetAntennaPattern()

WsfAntennaPattern * WsfEM_XmtrRcvr::GetAntennaPattern ( WsfEM_Types::Polarization aPolarization,
double aFrequency ) const

Return the antenna pattern for the supplied polarization and frequency.

Parameters
aPolarizationThe polarization of the signal.
aFrequencyThe frequency of the signal.
Returns
Pointer to the antenna gain pattern or nullptr if there is no associated pattern.

References mPatternTables.

Referenced by WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), GetAntennaGain(), GetAzimuthBeamwidth(), GetElevationBeamwidth(), GetMinimumAntennaGain(), GetPeakAntennaGain(), WsfEW_RepeaterEffect::UpdateEffects(), WsfDisInterface::UpdateSystemFromSensor(), and WsfMilDisInterface::UpdateSystemFromWeapon().

◆ GetAntennaPatternList()

const WsfEM_XmtrRcvr::AntennaPatternList * WsfEM_XmtrRcvr::GetAntennaPatternList ( WsfEM_Types::Polarization aPolarization) const

Return the list of antenna patterns for a specified polarization.

Parameters
aPolarizationThe polarization for whose antenna patterns are being requested.
Returns
The pointer to the vector of the associated antenna pattern list.
Note
The return value is zero for non-default polarization if no pattern was explicitly loaded.
This method was created to allow External Services access to the antenna patterns. It should not be considered part of the public interface as it is exposing data that was once 'private'. Use at your own risk.

References WsfEM_Types::cPOL_DEFAULT, mPatternTables, and mUsedExplicitPolarization.

◆ GetArticulatedPart()

◆ GetAttenuationModel()

WsfEM_Attenuation * WsfEM_XmtrRcvr::GetAttenuationModel ( ) const
inline

Get the pointer to the attenuation model (if one is defined).

Note
Only valid after initialization.

References mAttenuationPtr.

◆ GetAttenuationModelType()

WsfStringId WsfEM_XmtrRcvr::GetAttenuationModelType ( ) const
inline

Return the type of the attenuation model (if one is defined).

References mAttenuationType.

◆ GetAzimuthBeamwidth() [1/2]

◆ GetAzimuthBeamwidth() [2/2]

double WsfEM_XmtrRcvr::GetAzimuthBeamwidth ( double aEBS_Azimuth,
double aEBS_Elevation ) const
virtual

Get the azimuth beamwidth of the first antenna pattern found.

Parameters
aEBS_AzimuthThe Electronic Beamwidth Steering in terms of Azimuth (radians)
aEBS_ElevationThe Electronic Beamwidth Steering in terms of Elevation (radians)
Returns
Azimuth beamwidth (radians)

References WsfEM_Types::cPOL_DEFAULT, GetAntennaPattern(), WsfAntennaPattern::GetAzimuthBeamwidth(), and mFrequency.

◆ GetBandwidth()

◆ GetBeamTilt()

double WsfEM_XmtrRcvr::GetBeamTilt ( ) const
inline

Get the angle of the boresight of the antenna gain pattern above/below (+/-) the antenna boresight. Note that this is used primarily to model stacked beam radar systems.

References mBeamTilt.

Referenced by WsfEM_Antenna::ComputeBeamPosition(), and WsfEM_Rcvr::UpdateNoisePower().

◆ GetEarthRadiusMultiplier()

double WsfEM_XmtrRcvr::GetEarthRadiusMultiplier ( ) const
inline

Get the earth radius multiplier (to account for diffraction).

Returns
The earth radius multiplier (default 1)
Note
This is only for passive systems where there is not a corresponding transmitter object.

References mEarthRadiusMultiplier.

Referenced by WsfEM_Interaction::BeginOneWayInteraction(), WsfEM_ITU_Attenuation::ComputeAttenuationFactor(), WsfEM_ALARM_Geometry::ComputeGeometry(), WsfEM_FastMultipath::ComputePropagationFactor(), Utility::CueSensorToTarget(), WsfEM_Interaction::MaskedByHorizon(), and WsfEW_FalseTargetEffect::UpdateFT().

◆ GetElevationBeamwidth() [1/2]

◆ GetElevationBeamwidth() [2/2]

double WsfEM_XmtrRcvr::GetElevationBeamwidth ( double aEBS_Azimuth,
double aEBS_Elevation ) const
virtual

Get the elevation beamwidth of the first antenna pattern found.

Parameters
aEBS_AzimuthThe Electronic Beamwidth Steering in terms of Azimuth (radians)
aEBS_ElevationThe Electronic Beamwidth Steering in terms of Elevation (radians)
Returns
Elevation beamwidth (radians)

References WsfEM_Types::cPOL_DEFAULT, GetAntennaPattern(), WsfAntennaPattern::GetElevationBeamwidth(), and mFrequency.

◆ GetEM_Manager()

WsfEM_Manager * WsfEM_XmtrRcvr::GetEM_Manager ( ) const

◆ GetFrequency()

double WsfEM_XmtrRcvr::GetFrequency ( ) const
inline

Get the EM operating frequency.

Returns
The current operating frequency (Hz).

References mFrequency.

Referenced by WsfPassiveSensor::PassiveBeam::AttemptToDetect(), WsfPassiveSensor::PassiveMode::AttemptToDetect(), WsfSurfaceWaveRadarSensor::RadarMode::AttemptToDetect(), WsfSAR_Sensor::SAR_Mode::Calibrate(), WsfSurfaceWaveRadarSensor::RadarMode::Calibrate(), WsfEM_Rcvr::CanInteractWith(), WsfPassiveSensor::PassiveRcvr::CanInteractWith(), WsfEM_Attenuation::ComputeAttenuationFactor(), WsfEM_ITU_Attenuation::ComputeAttenuationFactor(), WsfTabularAttenuation::ComputeAttenuationFactor(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfPassiveDetector::ComputeDetectability(), WsfPassiveSensor::PassiveMode::PassiveErrorModel::ComputeMeasurementErrors(), WsfEM_Noise::ComputeNoise(), WsfEM_ALARM_Propagation::ComputePropagationFactor(), WsfEM_FastMultipath::ComputePropagationFactor(), WsfEM_GroundWavePropagation::ComputePropagationFactor(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), WsfRF_Jammer::DeselectEA_Technique(), WsfRF_Jammer::JammerBeam::GetActiveSpotIndex(), WsfRadarSignature::GetValue(), WsfLASER_XmtrComponent::Initialize(), WsfPassiveSensor::PassiveRcvr::Initialize(), WsfXIO_ObjectInfoLoad::Load_EM_Rcvr(), WsfXIO_ObjectInfoLoad::Load_EM_Xmtr(), WsfDisPlatform::MessageTransmitted(), wsf::event::CommFrequencyChanged::Print(), wsf::event::CommFrequencyChanged::PrintCSV(), WsfMilDisInterface::RemoveXmtrs(), WsfRF_Jammer::SelectEA_Technique(), WsfRF_Jammer::SetEA_DeltaGainTechnique(), WsfRF_Jammer::StartJamming(), WsfRF_Jammer::StopJamming(), WsfDisInterface::UpdateBeamFromXmtr(), WsfEW_PulseSuppressEffect::UpdateEffects(), WsfEW_RepeaterEffect::UpdateEffects(), WsfEW_SimpleFT_Effect::UpdateEffects(), WsfEW_SLB_Effect::UpdateEffects(), WsfEW_SLC_Effect::UpdateEffects(), WsfRF_Jammer::UpdateJamming(), WsfDisInterface::UpdateSystemFromSensor(), WsfMilDisInterface::UpdateSystemFromWeapon(), and WsfDisEmission::UpdateXmtr().

◆ GetIndex()

◆ GetInternalLoss()

double WsfEM_XmtrRcvr::GetInternalLoss ( ) const
inline

Get the internal loss.

Returns
Internal loss (absolute ratio, NOT dB)
Note
This is a LOSS FACTOR (which is 1/GAIN). Therefore it should be greater than 1.

References mInternalLoss.

Referenced by WsfSAR_Sensor::SAR_Mode::Calibrate(), WsfSurfaceWaveRadarSensor::RadarMode::Calibrate(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfXIO_ObjectInfoLoad::Load_EM_Rcvr(), WsfXIO_ObjectInfoLoad::Load_EM_Xmtr(), WsfDisInterface::UpdateBeamFromXmtr(), and WsfDisEmission::UpdateXmtr().

◆ GetMinimumAntennaGain()

double WsfEM_XmtrRcvr::GetMinimumAntennaGain ( ) const
virtual

Return the minimum antenna gain of the first antenna pattern found.

Returns
The minimum antenna gain (absolute ratio, NOT dB)

References WsfEM_Types::cPOL_DEFAULT, GetAntennaPattern(), WsfAntennaPattern::GetMinimumGain(), and mFrequency.

Referenced by WsfRF_Repeater::CheckDetectAndUpdate().

◆ GetMode()

◆ GetPeakAntennaGain()

◆ GetPlatform()

WsfPlatform * WsfEM_XmtrRcvr::GetPlatform ( ) const

Convenience method to get the pointer to the associated platform.

Note
This is valid only after initialization.

References mAntennaPtr.

Referenced by WsfEmitterTypeReporting::AddEmitterReportState(), WsfPassiveSensor::PassiveMode::AddInteractor(), WsfRF_Jammer::JammerXmtr::AllowInteractionWith(), WsfOTH_RadarSensor::OTH_Beam::AttemptToDetect(), WsfRadarSensor::RadarBeam::AttemptToDetect(), WsfEM_Interaction::BeginGenericInteraction(), WsfEM_Interaction::BeginOneWayInteraction(), WsfEM_Interaction::BeginOneWayInteraction(), WsfEM_Interaction::BeginTwoWayInteraction(), WsfEM_Interaction::BeginTwoWayOTH_Interaction(), WsfPassiveSensor::PassiveMode::CanDetect(), WsfPassiveSensor::PassiveRcvr::CanInteractWith(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), WsfRF_Repeater::CheckDetectAndUpdate(), WsfEM_ALARM_Clutter::ComputeClutterPower(), WsfEM_SurfaceClutterTable::ComputeClutterPower(), WsfAcousticSensor::AcousticMode::ComputeDopplerTerm(), WsfEM_ALARM_Geometry::ComputeGeometry(), WsfAcousticSensor::AcousticMode::ComputeIncidenceAngle(), WsfEM_ALARM_Propagation::ComputePropagationFactor(), WsfPassiveSensor::PassiveBeam::ComputePSOS_Effects(), WsfPassiveSensor::PassiveMode::EmitterActiveCallback(), WsfEM_Attenuation::GetRangeElevationAltitude(), GetSimulation(), wsf::BistaticErrorModel::GetSphericalErrorStdDev(), WsfEM_ALARM_Clutter::Initialize(), WsfEM_RF_Type1Attenuation::Initialize(), WsfEM_SurfaceClutter::Initialize(), WsfEM_Xmtr::Initialize(), WsfFalseTarget::Initialize(), WsfLASER_CommXmtrComponent::Modulation::Initialize(), WsfRF_Jammer::JammerXmtr::Initialize(), WsfEM_Interaction::MaskedByHorizon(), WsfEM_Interaction::MaskedByHorizon(), WsfEM_Interaction::MaskedByHorizon(), WsfFalseTarget::PowerSufficiencyCheck(), wsf::event::utils::PrintEM_AbsXmtrRcvrData(), wsf::event::utilsCSV::PrintEM_AbsXmtrRcvrData(), WsfEW_Effect::ProcessMitigatedEffect(), WsfEW_Effect::ProcessUnmitigatedEffect(), WsfPassiveSensor::PassiveMode::RemoveInteractor(), WsfFalseTarget::Rescan(), WsfEW_Effect::ResetProtectionTypeFlag(), WsfEW_Effect::UpdateCurrentIds(), WsfDefaultFusion::UpdateLocalResultFromNonLocalResult(), WsfJamStrobeDetector::UpdateTrack(), WsfSensorMode::UpdateTrack(), WsfMilDisInterface::UpdateXmtrFromBeam(), UT_DEFINE_SCRIPT_METHOD(), UT_DEFINE_SCRIPT_METHOD(), UT_DEFINE_SCRIPT_METHOD(), UT_DEFINE_SCRIPT_METHOD(), UT_DEFINE_SCRIPT_METHOD(), and UT_DEFINE_SCRIPT_METHOD().

◆ GetPolarization()

◆ GetPropagationModel()

WsfEM_Propagation * WsfEM_XmtrRcvr::GetPropagationModel ( ) const
inline

Get the pointer to the propagation model (if one is defined).

Note
Only valid after initialization.

References mPropagationPtr.

Referenced by WsfEM_ALARM_Clutter::ComputeClutterPower().

◆ GetPropagationModelType()

WsfStringId WsfEM_XmtrRcvr::GetPropagationModelType ( ) const
inline

Return the type of the propagation model (if one is defined).

References mPropagationType.

◆ GetScriptClassName()

const char * WsfEM_XmtrRcvr::GetScriptClassName ( ) const
inlineoverride

◆ GetSimulation()

◆ GetWavelength()

double WsfEM_XmtrRcvr::GetWavelength ( ) const

◆ Initialize()

◆ IsBandwidthExplicit()

bool WsfEM_XmtrRcvr::IsBandwidthExplicit ( ) const
inline

Return the source of the bandwidth

Returns
true if bandwidth was defined in the input file

References mExplicitBandwidth.

◆ IsHorizonMaskingEnabled()

bool WsfEM_XmtrRcvr::IsHorizonMaskingEnabled ( ) const

determine if horizon masking is to be checked

References WsfEM_Interaction::cRCVR_HORIZON_MASKING, WsfEM_Interaction::cXMTR_HORIZON_MASKING, and mTerrainMaskingMode.

◆ IsTerrainMaskingEnabled()

bool WsfEM_XmtrRcvr::IsTerrainMaskingEnabled ( ) const

determine if terrain masking is to be checked

References WsfEM_Interaction::cRCVR_TERRAIN_MASKING, WsfEM_Interaction::cXMTR_TERRAIN_MASKING, and mTerrainMaskingMode.

◆ MaskingMode()

◆ ProcessInput()

◆ SetAntenna()

void WsfEM_XmtrRcvr::SetAntenna ( WsfEM_Antenna * aAntennaPtr)
inline

Set the pointer to the associated antenna object.

Parameters
aAntennaPtrPointer to the associated geometry object.
Note
The caller retains ownership of the geometry object as it may be shared with multiple transmitters and receivers.

References mAntennaPtr.

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

◆ SetAntennaBeamCount()

void WsfEM_XmtrRcvr::SetAntennaBeamCount ( unsigned int aBeamCount)
virtual

References mPatternTables.

◆ SetAntennaPattern()

bool WsfEM_XmtrRcvr::SetAntennaPattern ( WsfAntennaPattern * aAntennaPatternPtr,
WsfEM_Types::Polarization aPolarization,
double aFrequency )

Clear current list of antenna patterns and add the antenna pattern to the list with the associated polarization and lower frequency bound.

Parameters
aAntennaPatternPtrPointer to the antenna pattern.
aFrequencyThe lower frequency bound of the antenna pattern.
aPolarizationThe polarization of the antenna pattern. Defaults to DEFAULT
Returns
True if the insert was successful, False if a pattern associated with the frequency already exists.

References AddAntennaPattern().

Referenced by AntennaPlotFunction::Execute().

◆ SetAttenuationInputEnabled()

void WsfEM_XmtrRcvr::SetAttenuationInputEnabled ( bool aEnabled)
inline

Enable or disable 'attenuation_model' input.

Referenced by WsfEM_Rcvr::WsfEM_Rcvr().

◆ SetAttenuationModel()

void WsfEM_XmtrRcvr::SetAttenuationModel ( WsfEM_Attenuation * aAttenuationPtr)

Set the pointer to a new attenuation model. This provides a means to define a new model at run-time. This may be called only after Initialize.

Parameters
aAttenuationPtrPointer to the attenuation model, which may be null. The model must be initialized. Any existing model is deleted and this class assumes of the new model.

References mAttenuationPtr.

◆ SetAttenuationModelType()

void WsfEM_XmtrRcvr::SetAttenuationModelType ( WsfStringId aAttenuationType)
inline

Set the type of attenuation model to be used.

Note
Only valid before initialization.

References mAttenuationType.

◆ SetBandwidth()

void WsfEM_XmtrRcvr::SetBandwidth ( double aBandwidth)
virtual

Set the operating bandwidth.

Parameters
aBandwidthThe receiver operating bandwidth (Hz).

Reimplemented in WsfEM_Rcvr, and WsfEM_Xmtr.

Referenced by ProcessInput().

◆ SetBeamTilt()

void WsfEM_XmtrRcvr::SetBeamTilt ( double aBeamTilt)
inline

Set the angle of the boresight of the antenna gain pattern above/below (+/-) the antenna boresight.

References mBeamTilt.

Referenced by ProcessInput().

◆ SetCheckMasking()

void WsfEM_XmtrRcvr::SetCheckMasking ( bool aCheckMasking)
inline

enable/disable checking of horizon and terrain masking

References mCheckMasking.

◆ SetDebugEnabled()

void WsfEM_XmtrRcvr::SetDebugEnabled ( bool aDebugEnabled)
inline

Set the debug state.

Parameters
aDebugEnabledNew debug state

References mDebugEnabled.

◆ SetEarthRadiusMultiplier()

void WsfEM_XmtrRcvr::SetEarthRadiusMultiplier ( double aMultiplier)
inline

Set the earth radius multiplier (to account for diffraction).

Parameters
aMultiplierThe new earth radius multiplier.
Note
This is only for passive systems where there is not a corresponding transmitter object.

References mEarthRadiusMultiplier.

Referenced by wsf::comm::ComponentHW_Subsurface::ComponentHW_Subsurface(), wsf::comm::ComponentHW_Subsurface::ComponentHW_Subsurface(), WsfLASER_XmtrComponent::ComponentParentChanged(), ProcessInput(), and WsfEM_Xmtr::WsfEM_Xmtr().

◆ SetFrequency()

void WsfEM_XmtrRcvr::SetFrequency ( double aFrequency)
virtual

Set the operating frequency.

Parameters
aFrequencyThe operating frequency (Hz)

Reimplemented in WsfEM_Rcvr, and WsfEM_Xmtr.

Referenced by ProcessInput().

◆ SetIndex()

void WsfEM_XmtrRcvr::SetIndex ( size_t aIndex)
inline

Set the index of the xmtr/rcvr in the complex assembly.

References mIndex.

Referenced by WsfPassiveSensor::PassiveMode::Initialize(), and WsfRF_Jammer::JammerBeam::Initialize().

◆ SetInternalLoss()

void WsfEM_XmtrRcvr::SetInternalLoss ( double aInternalLoss)
inline

Set the internal loss.

Parameters
aInternalLossInternal loss (absolute ratio, NOT dB)
Note
This is a LOSS FACTOR (which is 1/GAIN). Therefore it should be greater than 1.

References mInternalLoss.

Referenced by ProcessInput().

◆ SetMaskingMode()

void WsfEM_XmtrRcvr::SetMaskingMode ( const std::string & aTerrainMaskingMode)

◆ SetMode()

void WsfEM_XmtrRcvr::SetMode ( WsfMode * aModePtr)
inline

Set the mode with which this xmtr/rcvr is associated.

Note
The caller retains ownership of the mode.
The value is not propagate across copy construction.

References mModePtr.

Referenced by WsfPassiveSensor::PassiveMode::Initialize(), and WsfRF_Jammer::JammerBeam::Initialize().

◆ SetPolarization()

void WsfEM_XmtrRcvr::SetPolarization ( WsfEM_Types::Polarization aPolarization)
virtual

Set the polarization of the receive antenna.

Parameters
aPolarizationThe polarization.

Reimplemented in WsfEM_Rcvr, and WsfEM_Xmtr.

Referenced by ProcessInput().

◆ SetPropagationInputEnabled()

void WsfEM_XmtrRcvr::SetPropagationInputEnabled ( bool aEnabled)
inline

Enable or disable 'propagation_model' input.

Referenced by WsfEM_Rcvr::WsfEM_Rcvr().

◆ SetPropagationModel()

void WsfEM_XmtrRcvr::SetPropagationModel ( WsfEM_Propagation * aPropagationPtr)

Set the pointer to the propagation model. This provides a means to define a new model at run-time. This may be called only after Initialize.

Parameters
aPropagationPtrPointer to the propagation model, which may be null. The model must be initialized. Any existing model is deleted and this class assumes of the new model.

References mPropagationPtr.

◆ SetPropagationModelType()

void WsfEM_XmtrRcvr::SetPropagationModelType ( WsfStringId aPropagationType)
inline

Set the type of propagation model to be used.

Note
Only valid before initialization.

References mPropagationType.

◆ UpdatePosition()

void WsfEM_XmtrRcvr::UpdatePosition ( double aSimTime)
virtual

Update the state of the object to reflect its position as of the supplied time.

Parameters
aSimTimeThe current simulation time.

References mAntennaPtr.

Referenced by WsfPassiveSensor::PassiveMode::AttemptToDetect(), wsf::comm::ComponentHW_JTIDS::CanReceiveFrom(), wsf::comm::ComponentHW::CanSendTo(), wsf::comm::ComponentHW_Subsurface::CanSendTo(), and WsfESM_Sensor::ESM_Mode::ComputeInterferenceEffect().

Member Data Documentation

◆ mAntennaPtr

WsfEM_Antenna* WsfEM_XmtrRcvr::mAntennaPtr
protected

◆ mAssociatePtr

WsfEM_XmtrRcvr* WsfEM_XmtrRcvr::mAssociatePtr
protected

Pointer to the transmitter/receiver which is associated to this receiver/transmitter. If two systems are linked then some unassigned values in one system will be implied from the other system. This makes user configuration a little easier.

Referenced by AssociateSystems(), Initialize(), WsfEM_XmtrRcvr(), and WsfEM_XmtrRcvr().

◆ mAttenuationPtr

WsfEM_Attenuation* WsfEM_XmtrRcvr::mAttenuationPtr
protected

Pointer to the atmospheric attenuation model.

Referenced by GetAttenuationModel(), Initialize(), SetAttenuationModel(), WsfEM_XmtrRcvr(), WsfEM_XmtrRcvr(), and ~WsfEM_XmtrRcvr().

◆ mAttenuationType

WsfStringId WsfEM_XmtrRcvr::mAttenuationType
protected

The type of the atmospheric attenuation model to be used.

Referenced by GetAttenuationModelType(), Initialize(), ProcessInput(), SetAttenuationModelType(), WsfEM_XmtrRcvr(), and WsfEM_XmtrRcvr().

◆ mBandwidth

◆ mBeamTilt

double WsfEM_XmtrRcvr::mBeamTilt
protected

The tilt angle of the boresight of the antenna gain pattern above/below (+/-) the antenna boresight. Note that this is primarily intended for modeling stack-beam radars. Other uses have not been examined.

Referenced by GetBeamTilt(), Initialize(), SetBeamTilt(), WsfEM_XmtrRcvr(), and WsfEM_XmtrRcvr().

◆ mCheckMasking

bool WsfEM_XmtrRcvr::mCheckMasking
protected

true if horizon and terrain masking enabled.

Referenced by CheckMasking(), DisableMaskingCheck(), ProcessInput(), SetCheckMasking(), WsfEM_XmtrRcvr(), and WsfEM_XmtrRcvr().

◆ mDebugEnabled

bool WsfEM_XmtrRcvr::mDebugEnabled
protected

◆ mEarthRadiusMultiplier

double WsfEM_XmtrRcvr::mEarthRadiusMultiplier
protected

◆ mExplicitBandwidth

bool WsfEM_XmtrRcvr::mExplicitBandwidth
protected

◆ mFrequency

◆ mIndex

size_t WsfEM_XmtrRcvr::mIndex
protected

The index of this xmtr/rcvr in a system which may be composed of multiple xmtr/rcvrs. See GetIndex/SetIndex for more information.

Referenced by GetIndex(), SetIndex(), WsfEM_XmtrRcvr(), and WsfEM_XmtrRcvr().

◆ mInternalLoss

◆ mModePtr

WsfMode* WsfEM_XmtrRcvr::mModePtr
protected

The mode with which the xmtr/rcvr is associated. This may be zero. (association is optional).

Referenced by GetMode(), SetMode(), WsfEM_XmtrRcvr(), and WsfEM_XmtrRcvr().

◆ mPatternTables

std::array<AntennaPatternList, WsfEM_Types::cPOL_COUNT> WsfEM_XmtrRcvr::mPatternTables {}
protected

Array of the polarization possibilities each containing a vector of Antenna pattern pointer/frequency pairs. If vector is empty, then there is no gain pattern and any gain is assumed to be 1.0

Referenced by AddAntennaPattern(), GetAntennaPattern(), GetAntennaPatternList(), Initialize(), ProcessInput(), SetAntennaBeamCount(), WsfEM_XmtrRcvr(), and ~WsfEM_XmtrRcvr().

◆ mPolarization

◆ mPropagationPtr

WsfEM_Propagation* WsfEM_XmtrRcvr::mPropagationPtr
protected

◆ mPropagationType

WsfStringId WsfEM_XmtrRcvr::mPropagationType
protected

The type of the propagation model to be used.

Referenced by GetPropagationModelType(), Initialize(), ProcessInput(), SetPropagationModelType(), WsfEM_XmtrRcvr(), and WsfEM_XmtrRcvr().

◆ mTerrainMaskingMode

unsigned int WsfEM_XmtrRcvr::mTerrainMaskingMode
protected

◆ mUsedExplicitPolarization

std::array<bool, WsfEM_Types::cPOL_COUNT> WsfEM_XmtrRcvr::mUsedExplicitPolarization {{false}}
protected

Array used to keep track of which explicitly declared patterns were loaded in the mPatternTables array

Referenced by AddAntennaPattern(), GetAntennaPatternList(), Initialize(), and WsfEM_XmtrRcvr().


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