15#include "wsf_export.h"
95 std::string
GetName()
const {
return "receiver"; }
107 virtual void Deactivate();
109 virtual double ComputeReceivedPower(
double aSourceAz,
113 double aReceivedPowerDensity,
116 double& aAntennaGain);
118 virtual double ComputeSignalToNoise(
double aReceivedSignalPower,
double aClutterPower,
double aReceivedInterferencePower);
124 virtual bool ProcessInputBlock(UtInput& aInput);
126 double GetBandwidthEffect(
double aSignalFreq,
double aSignalBW)
const;
163 void SetAntennaOhmicLoss(
double aAntennaOhmicLoss);
171 void SetBandwidth(
double aBandwidth)
override;
173 void SetFrequency(
double aFrequency)
override;
175 void SetInstantaneousBandwidth(
double aInstantaneousBandwidth);
177 void SetNoiseFigure(
double aNoiseFigure);
179 void SetNoisePower(
double aNoisePower);
185 void SetReceiveLineLoss(
double aReceiveLineLoss);
192 virtual bool CanInteractWith(
WsfEM_Xmtr* aXmtrPtr);
194 virtual void UpdateInteractions(
WsfEM_Xmtr* aXmtrPtr);
196 virtual bool AddInteractor(
WsfEM_Xmtr* aXmtrPtr);
198 virtual bool RemoveInteractor(
WsfEM_Xmtr* aXmtrPtr);
234 WsfEM_Xmtr* GetInteractorEntry(
unsigned int aIndex)
const;
237 virtual void SignalChangeCallback(
double aSimTime,
size_t aTargetIndex);
242 void UpdateNoisePower(
double aPulseWidth = 0.0);
244 static double ComputeSystemNoiseTemperature(
double aElevation,
245 double aAntennaOhmicLoss,
246 double aReceiveLineLoss,
256 void UpdateIndices();
268 void UpdatePolarizationEffects();
278 unsigned int mTotalInteractors;
279 unsigned int mCommBaseIndex;
280 unsigned int mSensorBaseIndex;
281 unsigned int mInterferenceBaseIndex;
287 double mInstantaneousBandwidth;
290 double mNoiseMultiplier;
291 double mAntennaOhmicLoss;
292 double mReceiveLineLoss;
293 double mDetectionThreshold;
294 bool mExplicitInstantaneousBandwidth;
295 bool mExplicitNoisePower;
297 bool mCheckXmtrMasking;
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfAntennaPattern.hpp:35
Definition WsfArticulatedPart.hpp:36
A component list that stores only components of a specified type.
Definition WsfComponentList.hpp:343
WsfComponentT()
Definition WsfComponent.hpp:124
virtual bool Initialize(double aSimTime)
Definition WsfComponent.cpp:45
virtual bool ProcessInput(UtInput &aInput)
Definition WsfComponent.cpp:100
Definition WsfEM_Antenna.hpp:49
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Manager.hpp:44
Definition WsfEM_Rcvr.hpp:38
virtual void RemoveInteractor(WsfEM_Xmtr *aXmtrPtr)
Definition WsfEM_Rcvr.cpp:52
virtual void AddInteractor(WsfEM_Xmtr *aXmtrPtr)
Definition WsfEM_Rcvr.cpp:45
Definition WsfEM_Rcvr.hpp:68
RcvrFunction GetFunction() const
Definition WsfEM_Rcvr.hpp:134
std::string GetName() const
Required to display error messages in WsfComponentFactoryList.
Definition WsfEM_Rcvr.hpp:95
const char * GetScriptClassName() const override
Definition WsfEM_Rcvr.hpp:103
WsfEM_Xmtr * GetCommInteractorEntry(unsigned int aIndex) const
Definition WsfEM_Rcvr.hpp:206
size_t GetInterferenceInteractorCount() const
Get the number of potentially interacting interference transmitters.
Definition WsfEM_Rcvr.hpp:209
void SetNoiseMultiplier(double aNoiseMultiplier)
Definition WsfEM_Rcvr.hpp:159
unsigned int GetInteractorCount() const
Definition WsfEM_Rcvr.hpp:227
const ComponentList & GetComponents() const
Definition WsfEM_Rcvr.hpp:100
size_t GetCommInteractorCount() const
Get the number of potentially interacting communications transmitters.
Definition WsfEM_Rcvr.hpp:201
double GetAntennaOhmicLoss()
Definition WsfEM_Rcvr.hpp:165
WsfEM_Xmtr * GetSensorInteractorEntry(size_t aIndex) const
Definition WsfEM_Rcvr.hpp:222
WsfEM_Xmtr * GetInterferenceInteractorEntry(size_t aIndex) const
Definition WsfEM_Rcvr.hpp:214
void SetDetectionThreshold(double aDetectionThreshold)
Definition WsfEM_Rcvr.hpp:169
WsfEM_Rcvr(RcvrFunction aFunction, WsfEM_Antenna *aAntennaPtr=nullptr)
Definition WsfEM_Rcvr.cpp:61
WsfEM_RcvrComponent Component
Even though this isn't a component, it must have a role in order to use component factories.
Definition WsfEM_Rcvr.hpp:74
bool CheckXmtrMasking()
Definition WsfEM_Rcvr.hpp:253
size_t GetSensorInteractorCount() const
Get the number of potentially interacting sensor transmitters.
Definition WsfEM_Rcvr.hpp:217
double GetInstantaneousBandwidth() const
Definition WsfEM_Rcvr.hpp:138
double GetNoiseMultiplier() const
Definition WsfEM_Rcvr.hpp:155
double GetReceiveLineLoss() const
Definition WsfEM_Rcvr.hpp:187
InteractorList mInterferenceInteractors
Definition WsfEM_Rcvr.hpp:264
InteractorList mSensorInteractors
Definition WsfEM_Rcvr.hpp:263
ComponentList & GetComponents()
Definition WsfEM_Rcvr.hpp:99
double GetNoisePower() const
Definition WsfEM_Rcvr.hpp:142
bool IsNoisePowerExplicit() const
Definition WsfEM_Rcvr.hpp:146
double GetDetectionThreshold() const
Definition WsfEM_Rcvr.hpp:130
InteractorList mCommInteractors
Definition WsfEM_Rcvr.hpp:262
std::vector< WsfEM_Xmtr * > InteractorList
Definition WsfEM_Rcvr.hpp:258
double GetNoiseFigure() const
Definition WsfEM_Rcvr.hpp:150
WsfComponentListT< WsfEM_RcvrComponent > ComponentList
Definition WsfEM_Rcvr.hpp:75
RcvrFunction
RcvrFunction defines the intended purpose of the receiver.
Definition WsfEM_Rcvr.hpp:80
@ cRF_SENSOR
Active or Semi-Active Sensing (narrowband or matched frequency sensing, e.g. radar).
Definition WsfEM_Rcvr.hpp:83
@ cRF_COMM
Communications.
Definition WsfEM_Rcvr.hpp:82
@ cRF_UNDEFINED
Undefined.
Definition WsfEM_Rcvr.hpp:81
@ cRF_PASSIVE_SENSOR
Passive Sensing (wideband sensing, etc.).
Definition WsfEM_Rcvr.hpp:84
@ cRF_INTERFERER
Interfering system.
Definition WsfEM_Rcvr.hpp:85
bool CheckMasking() const
determine if horizon and terrain masking is to be checked
Definition WsfEM_XmtrRcvr.hpp:166
WsfEM_XmtrRcvr(WsfEM_Antenna *aAntennaPtr=nullptr)
Definition WsfEM_XmtrRcvr.cpp:40
Definition WsfEM_Xmtr.hpp:55
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Polarization
Polarization of the electromagnetic wave.
Definition WsfEM_Types.hpp:21
@ cPOL_COUNT
Number of polarizations.
Definition WsfEM_Types.hpp:29