|
WSF
|
Fast multipath propagation model. More...
#include <WsfEM_FastMultipath.hpp>


Public Member Functions | |
| WsfEM_FastMultipath () | |
| WsfEM_FastMultipath (const WsfEM_FastMultipath &aSrc) | |
| WsfEM_FastMultipath & | operator= (const WsfEM_FastMultipath &aRhs)=delete |
| ~WsfEM_FastMultipath () override | |
| WsfEM_Propagation * | Clone () const override |
| double | ComputePropagationFactor (WsfEM_Interaction &aInteraction, WsfEnvironment &aEnvironment) override |
| virtual double | ComputeReflectionGain (WsfEM_XmtrRcvr *aXmtrRcvrPtr, const WsfEM_Interaction::BeamData &aBeamData, const WsfEM_Interaction::RelativeData &aRelTgtLoc, double aDepressionAngle, double aFrequency, WsfEM_Types::Polarization aPolarization) |
| bool | ProcessInput (UtInput &aInput) override |
| void | SetSoilMoistureFraction (double aSoilMoistureFraction) |
| void | SetSurfaceRoughness (double aSurfaceRoughness) |
| Public Member Functions inherited from WsfEM_Propagation | |
| WsfEM_Propagation () | |
| Constructor. | |
| ~WsfEM_Propagation () override=default | |
| const char * | GetScriptClassName () const override |
| bool | DebugEnabled () const |
| Is 'debug' enabled? | |
| virtual bool | Initialize (WsfEM_XmtrRcvr *aXmtrRcvrPtr) |
| virtual bool | Initialize (WsfEM_Xmtr *aXmtrPtr) |
| bool | ProcessInput (UtInput &aInput) override |
| virtual bool | IsNullModel () const |
| Public Member Functions inherited from WsfObject | |
| WsfObject () | |
| This is the constructor for the WsfObject class. | |
| ~WsfObject () override | |
| This is the destructor for the WsfObject class. | |
| const char * | GetScriptClassName () const override |
| const std::string & | GetType () const |
| WsfStringId | GetTypeId () const |
| Get the string ID of the 'type' of the object. | |
| void | SetType (WsfStringId aType) |
| const std::string & | GetBaseType () const |
| WsfStringId | GetBaseTypeId () const |
| const TypeList & | GetTypeList () const |
| bool | IsA_TypeOf (WsfStringId aType) const |
| WsfObject & | operator= (const WsfObject &aRhs) |
| Assignment operator. | |
| template<typename T> | |
| void | Serialize (T &aBuff) |
| For XIO (de)serialization. | |
| const std::string & | GetName () const |
| WsfStringId | GetNameId () const |
| void | SetName (WsfStringId aName) |
Static Public Member Functions | |
| static WsfEM_Propagation * | ObjectFactory (const std::string &aTypeName) |
| Factory method called by WsfEM_PropagationTypes. | |
| static void | ComputeReflectionCoefficient (double aGrazingAngle, const std::complex< double > &aDielectricConstant, WsfEM_Types::Polarization aPolarization, double &aMagnitude, double &aPhaseShift) |
| static bool | ComputeReflectionGeometry (double aEarthRadius, double aAntHeight, double aTgtSlantRange, double aTgtElevation, double &aAntToRefSlantRange, double &aRefToTgtSlantRange, double &aDepressionAngle, double &aGrazingAngle, double &aPathLengthDifference) |
| static void | GetSoilDielectricConstant (double aFrequency, double aMoistureFraction, std::complex< double > &aDielectricConstant) |
Additional Inherited Members | |
| Public Types inherited from WsfObject | |
| typedef std::vector< WsfStringId > | TypeList |
| The list of types returned by GetTypeList. | |
| Protected Member Functions inherited from WsfEM_Propagation | |
| WsfEM_Propagation (const WsfEM_Propagation &aSrc) | |
| Copy constructor. | |
| WsfObject (const WsfObject &aSrc) | |
| Copy constructor (for Clone()). | |
| Protected Attributes inherited from WsfEM_Propagation | |
| bool | mDebugEnabled |
Fast multipath propagation model.
| WsfEM_FastMultipath::WsfEM_FastMultipath | ( | ) |
Referenced by Clone(), ObjectFactory(), operator=(), and WsfEM_FastMultipath().
| WsfEM_FastMultipath::WsfEM_FastMultipath | ( | const WsfEM_FastMultipath & | aSrc | ) |
References WsfEM_FastMultipath().
|
override |
|
overridevirtual |
Return a copy of this object. Must be implemented by all derived types. If cloning is impossible, a WsfUncloneableException should be thrown.
Implements WsfEM_Propagation.
References WsfEM_FastMultipath(), and WsfEM_Propagation::WsfEM_Propagation().
|
overridevirtual |
Compute the propagation factor for the current interaction.
| aInteraction | The current interaction. |
| aEnvironment | The environment (sea state, land formation, land coverage). |
Implements WsfEM_Propagation.
References ComputeReflectionCoefficient(), ComputeReflectionGain(), ComputeReflectionGeometry(), WsfEM_Rcvr::cRF_PASSIVE_SENSOR, WsfEM_XmtrRcvr::GetAntenna(), WsfEM_XmtrRcvr::GetEarthRadiusMultiplier(), WsfEM_XmtrRcvr::GetFrequency(), WsfEM_Rcvr::GetFunction(), WsfEM_Antenna::GetHeight(), WsfEM_XmtrRcvr::GetPolarization(), WsfEM_Interaction::GetReceiver(), GetSoilDielectricConstant(), WsfEM_Interaction::GetTransmitter(), WsfEM_Interaction::LocationData::mAlt, WsfEM_Interaction::RelativeData::mEl, WsfEM_Interaction::BeamData::mGain, WsfEM_Interaction::LocationData::mLocWCS, WsfEM_Interaction::RelativeData::mRange, WsfEM_Interaction::mRcvrBeam, WsfEM_Interaction::mRcvrLoc, WsfEM_Interaction::mRcvrToTgt, WsfEM_Interaction::mXmtrBeam, and WsfEM_Interaction::mXmtrToTgt.
|
static |
Compute the magnitude and phase shift of a reflected signal.
| aGrazingAngle | [input] The grazing angle (radians) |
| aEpsilon | [input] The relative dielectric constant of the soil. |
| aPolarization | [input] The polarization of the signal. |
| aMagnitude | [output] The magnitude of the complex reflection coefficient. |
| aPhaseShift | [output] The phase shift (radians) of the complex reflection coefficient. |
References WsfEM_Types::cPOL_VERTICAL, and gamma.
Referenced by ComputePropagationFactor(), and operator=().
|
virtual |
Compute the antenna gain in the direction of the reflection point.
| aXmtrRcvrPtr | Pointer to the transmitter/receiver. |
| aBeamData | The beam pointing data. |
| aRelTgtLoc | The position of the target relative to the antenna. |
| aDepressionAngle | The elevation angle of the reflection point relative to the horizontal plane. This should be negative to represent that it is below the horizontal plane. |
| aFrequency | The frequency of the signal (Hz) |
| aPolarization | The polarization of the signal |
References WsfEM_Antenna::ComputeBeamAspect(), WsfEM_Antenna::ConvertNED_VectorToWCS(), WsfEM_Antenna::ConvertWCS_VectorToNED(), WsfEM_XmtrRcvr::GetAntenna(), WsfEM_XmtrRcvr::GetAntennaGain(), WsfEM_Interaction::BeamData::mEBS_Az, WsfEM_Interaction::BeamData::mEBS_El, WsfEM_Interaction::RelativeData::mUnitVecWCS, and WsfEM_Interaction::BeamData::mWCS_ToBeamTransform.
Referenced by ComputePropagationFactor(), and operator=().
|
static |
Compute the reflection geometry for a smooth, spherical earth.
This method determines the reflection point using the algorithm defined in chapter 6 of:
"Radar Range-Performance Analysis", Lamont V. Blake, 1986, Artech House, Inc.
| aEarthRadius | [input] The effective earth radius (a_e in the algorithm) |
| aAntHeight | [input] Antenna above MSL (meters). (h_1 in the algorithm). |
| aTgtSlantRange | [input] The slant range from the antenna to the target (R_d in the algorithm). |
| aTgtElevation | [input] The elevation angle of the target relative to the horizontal plane at the antenna. (theta_d in the algorithm). |
| aAntToRefSlantRange | [output] The slant range from the antenna to the reflection point. (R_1 in the algorithm). |
| aRefToTgtSlantRange | [output] The slant range from the reflection point to the target. (R_2 in the algorithm). |
| aAntElevationAngle | [output] The angle between the horizontal plane at the antenna and the ray from the antenna to the reflection point. This is always negative to indicate that it is BELOW. (theta_r in the algorithm). |
| aGrazingAngle | [output] The angle between the reflection path and the horizontal at the reflection point. (psi in the algorithm). |
| aPathLengthDifference | [output] The difference in the path length for the direct and reflected path. |
Referenced by ComputePropagationFactor(), and operator=().
|
static |
Determines the relative dielectric constant of soil as a function of the radar frequency and the moisture content by volume of the soil.
The tabular data below and the notation used in the subroutine are contained on pages 14 and 15 of 'Radar Propagation at Low Altitudes,' by M. L. Meeks, Artech House, Inc., Dedham, Massachusetts, 1982.
| aFrequency | [input] Frequency in Hertz. |
| aMoistureFraction | [input] The moisture content by volume of the soil [0..1]. |
| aDielectricConstant | [output] The complex relative dielectric constant. |
Referenced by ComputePropagationFactor(), and operator=().
|
static |
Factory method called by WsfEM_PropagationTypes.
References WsfEM_FastMultipath(), and WsfEM_Propagation::WsfEM_Propagation().
Referenced by operator=(), and WsfEM_PropagationTypes::WsfEM_PropagationTypes().
|
delete |
|
overridevirtual |
Process input from a generic source.
Examine the current input command. If it is NOT one of the commands recognized by this class then it simply returns 'false'. If it is one of the commands recognized by this class then it processes the command and returns 'true'.
| aInput | a reference to a UtInput object. |
| UtInput::ExceptionBase | (or an object derived from it) if the command was recognized but contains some sort of error. |
Reimplemented from WsfObject.
References WsfEM_Propagation::ProcessInput(), SetSoilMoistureFraction(), and SetSurfaceRoughness().
| void WsfEM_FastMultipath::SetSoilMoistureFraction | ( | double | aSoilMoistureFraction | ) |
Referenced by operator=(), and ProcessInput().
| void WsfEM_FastMultipath::SetSurfaceRoughness | ( | double | aSurfaceRoughness | ) |
Referenced by operator=(), and ProcessInput().