WSF
WsfEM_FastMultipath Class Reference

Fast multipath propagation model. More...

#include <WsfEM_FastMultipath.hpp>

Inheritance diagram for WsfEM_FastMultipath:
Collaboration diagram for WsfEM_FastMultipath:

Public Member Functions

 WsfEM_FastMultipath ()
 WsfEM_FastMultipath (const WsfEM_FastMultipath &aSrc)
WsfEM_FastMultipathoperator= (const WsfEM_FastMultipath &aRhs)=delete
 ~WsfEM_FastMultipath () override
WsfEM_PropagationClone () 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 TypeListGetTypeList () const
bool IsA_TypeOf (WsfStringId aType) const
WsfObjectoperator= (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_PropagationObjectFactory (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< WsfStringIdTypeList
 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

Detailed Description

Fast multipath propagation model.

Constructor & Destructor Documentation

◆ WsfEM_FastMultipath() [1/2]

WsfEM_FastMultipath::WsfEM_FastMultipath ( )

◆ WsfEM_FastMultipath() [2/2]

WsfEM_FastMultipath::WsfEM_FastMultipath ( const WsfEM_FastMultipath & aSrc)

References WsfEM_FastMultipath().

◆ ~WsfEM_FastMultipath()

WsfEM_FastMultipath::~WsfEM_FastMultipath ( )
override

Member Function Documentation

◆ Clone()

WsfEM_Propagation * WsfEM_FastMultipath::Clone ( ) const
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().

◆ ComputePropagationFactor()

◆ ComputeReflectionCoefficient()

void WsfEM_FastMultipath::ComputeReflectionCoefficient ( double aGrazingAngle,
const std::complex< double > & aEpsilon,
WsfEM_Types::Polarization aPolarization,
double & aMagnitude,
double & aPhaseShift )
static

Compute the magnitude and phase shift of a reflected signal.

Parameters
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=().

◆ ComputeReflectionGain()

double WsfEM_FastMultipath::ComputeReflectionGain ( WsfEM_XmtrRcvr * aXmtrRcvrPtr,
const WsfEM_Interaction::BeamData & aBeamData,
const WsfEM_Interaction::RelativeData & aRelTgtLoc,
double aDepressionAngle,
double aFrequency,
WsfEM_Types::Polarization aPolarization )
virtual

Compute the antenna gain in the direction of the reflection point.

Parameters
aXmtrRcvrPtrPointer to the transmitter/receiver.
aBeamDataThe beam pointing data.
aRelTgtLocThe position of the target relative to the antenna.
aDepressionAngleThe elevation angle of the reflection point relative to the horizontal plane. This should be negative to represent that it is below the horizontal plane.
aFrequencyThe frequency of the signal (Hz)
aPolarizationThe 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=().

◆ ComputeReflectionGeometry()

bool WsfEM_FastMultipath::ComputeReflectionGeometry ( double aEarthRadius,
double aAntHeight,
double aTgtSlantRange,
double aTgtElevation,
double & aAntToRefSlantRange,
double & aRefToTgtSlantRange,
double & aAntElevationAngle,
double & aGrazingAngle,
double & aPathLengthDifference )
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.

Parameters
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.
Returns
true if successfully computed or false if either the antenna or target is below the ground.

Referenced by ComputePropagationFactor(), and operator=().

◆ GetSoilDielectricConstant()

void WsfEM_FastMultipath::GetSoilDielectricConstant ( double aFrequency,
double aMoistureFraction,
std::complex< double > & aDielectricConstant )
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.

Parameters
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=().

◆ ObjectFactory()

WsfEM_Propagation * WsfEM_FastMultipath::ObjectFactory ( const std::string & aTypeName)
static

◆ operator=()

◆ ProcessInput()

bool WsfEM_FastMultipath::ProcessInput ( UtInput & aInput)
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'.

Parameters
aInputa reference to a UtInput object.
Returns
'true' if the command was one recognized by the class or 'false' if not.
Exceptions
UtInput::ExceptionBase(or an object derived from it) if the command was recognized but contains some sort of error.
Note
If a derived class does not recognize the command (i.e.: the return value is false) then it should call the base class ProcessInput method. This chain should continue until either the command is recognized or the top-level base class is encountered.

Reimplemented from WsfObject.

References WsfEM_Propagation::ProcessInput(), SetSoilMoistureFraction(), and SetSurfaceRoughness().

◆ SetSoilMoistureFraction()

void WsfEM_FastMultipath::SetSoilMoistureFraction ( double aSoilMoistureFraction)

Referenced by operator=(), and ProcessInput().

◆ SetSurfaceRoughness()

void WsfEM_FastMultipath::SetSurfaceRoughness ( double aSurfaceRoughness)

Referenced by operator=(), and ProcessInput().


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