WSF
WsfChaffParcel Class Reference

#include <WsfChaffParcel.hpp>

Inheritance diagram for WsfChaffParcel:
Collaboration diagram for WsfChaffParcel:

Public Member Functions

 WsfChaffParcel ()
 WsfChaffParcel (const WsfChaffParcel &aSrc)
WsfChaffParceloperator= (const WsfChaffParcel &aSrc)=delete
 ~WsfChaffParcel () override=default
Public Member Functions inherited from WsfChaffParcelInterface
virtual ~WsfChaffParcelInterface ()=default
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)
Public Member Functions inherited from WsfSimpleComponentT< WsfPlatformComponent >
 WsfSimpleComponentT ()=default
 Empty constructor for serialization.
 WsfSimpleComponentT (int aRole, WsfStringId aName)
 WsfSimpleComponentT (int aRole)
 WsfSimpleComponentT (WsfStringId aName)
 WsfSimpleComponentT (const WsfSimpleComponentT &aSrc)
WsfSimpleComponentToperator= (const WsfSimpleComponentT &aRhs)
 ~WsfSimpleComponentT () override=default
WsfStringId GetComponentName () const override
const int * GetComponentRoles () const override
Public Member Functions inherited from WsfComponentT< WsfPlatform >
 WsfComponentT ()
 WsfComponentT (const WsfComponentT &) noexcept
WsfComponentToperator= (const WsfComponentT &) noexcept
 ~WsfComponentT () override=default
virtual void ComponentParentChanged (ParentType *aParentPtr)
ParentTypeGetComponentParent () const
void SetComponentParent (ParentType *aParentPtr)
Public Member Functions inherited from WsfComponent
virtual ~WsfComponent ()=default
virtual int GetComponentInitializationOrder () const
template<typename T>
bool QueryInterfaceT (T *&aRolePtr)
bool ComponentHasRole (int aRole)
 Returns true if the component has the specified role.
virtual bool PreInitialize (double aSimTime)
virtual bool Initialize2 (double aSimTime)
virtual void PreInput ()
Public Member Functions inherited from WsfNamed
 WsfNamed ()
 WsfNamed (WsfStringId aName)
 WsfNamed (const WsfNamed &)=default
WsfNamedoperator= (const WsfNamed &)=default
virtual ~WsfNamed ()=default
const std::string & GetName () const
WsfStringId GetNameId () const
void SetName (WsfStringId aName)

Component infrastructure methods

WsfComponentCloneComponent () const override
void * QueryInterface (int aRole) override
bool Initialize (double aSimTime) override
virtual double GetMaximumRCS (double aFrequency) const

WsfObject overrides

WsfObjectClone () const override
bool ProcessInput (UtInput &aInput) override

WsfChaffParcelInterface overrides

WsfPlatformGetPlatform () const override
double GetRadialSize () const override
void GetDropLocationWCS (double aDropLocationWCS[3]) const override
double GetRadarCrossSection (double aFrequency, const double aXmtrLocationWCS[3], const double aRcvrLocationWCS[3]) const
virtual bool InitializeType () const
void Update (double aSimTime)
bool IsExpired (double aSimTime)
void AddToCloud (std::shared_ptr< WsfChaffCloudInterface > &aCloudPtr)
virtual double GetMaximumRCS () const
static bool Find (WsfChaffParcel *&aParcelPtr, const WsfPlatform &aPlatform)
static void ClearMaxRcsCache ()

Additional Inherited Members

Public Types inherited from WsfObject
typedef std::vector< WsfStringIdTypeList
 The list of types returned by GetTypeList.
Public Types inherited from WsfComponentT< WsfPlatform >
typedef WsfPlatform ParentType
 This is needed to support the WsfComponentList template.
 WsfObject (const WsfObject &aSrc)
 Copy constructor (for Clone()).
int mRoles [2]

Detailed Description

Object that represents a parcel or cannister of chaff that is dispensed and forms a chaff cloud. Chaff parcels are treated as spherical, with a radius that grows exponentially to a max bloom diameter.

Constructor & Destructor Documentation

◆ WsfChaffParcel() [1/2]

WsfChaffParcel::WsfChaffParcel ( )

◆ WsfChaffParcel() [2/2]

WsfChaffParcel::WsfChaffParcel ( const WsfChaffParcel & aSrc)

◆ ~WsfChaffParcel()

WsfChaffParcel::~WsfChaffParcel ( )
overridedefault

Member Function Documentation

◆ AddToCloud()

void WsfChaffParcel::AddToCloud ( std::shared_ptr< WsfChaffCloudInterface > & aCloudPtr)

◆ ClearMaxRcsCache()

void WsfChaffParcel::ClearMaxRcsCache ( )
static

◆ Clone()

WsfObject * WsfChaffParcel::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 WsfObject.

References WsfChaffParcel(), and WsfObject::WsfObject().

◆ CloneComponent()

WsfComponent * WsfChaffParcel::CloneComponent ( ) const
overrideprotectedvirtual

Clones a component. May return null if component does not support clone.

Implements WsfComponent.

◆ Find()

bool WsfChaffParcel::Find ( WsfChaffParcel *& aParcelPtr,
const WsfPlatform & aPlatform )
static

◆ GetDropLocationWCS()

void WsfChaffParcel::GetDropLocationWCS ( double aDropLocationWCS[3]) const
overridevirtual

◆ GetMaximumRCS() [1/2]

double WsfChaffParcel::GetMaximumRCS ( ) const
virtual

Referenced by GetRadarCrossSection().

◆ GetMaximumRCS() [2/2]

double WsfChaffParcel::GetMaximumRCS ( double aFrequency) const
protectedvirtual

◆ GetPlatform()

WsfPlatform * WsfChaffParcel::GetPlatform ( ) const
inlineoverridevirtual

◆ GetRadarCrossSection()

double WsfChaffParcel::GetRadarCrossSection ( double aFrequency,
const double aXmtrLocationWCS[3],
const double aRcvrLocationWCS[3] ) const

Calculates the chaff parcel RCS based on the maximum scatterer RCS for a dispersed cloud viewed broadside (defined in mFreqMaxRCS_Table) and the bistatic presented area of the chaff cloud as seen by the transmitter and receiver. References: Schleher, Introduction to Electronic Warfare, pp 185-191

Parameters
aFrequencyThe frequency of the transmitter (in Hz)
aXmtrLocationWCSLocation of the transmitter in WCS frame
aRcvrLocationWCSLocation of the receiver in WCS frame
Returns
Radar cross section of parcel

References GetMaximumRCS(), and WsfObject::GetTypeId().

◆ GetRadialSize()

double WsfChaffParcel::GetRadialSize ( ) const
inlineoverridevirtual

◆ Initialize()

bool WsfChaffParcel::Initialize ( double aSimTime)
overrideprotectedvirtual

Perform phase 1 initialization. This is called by WsfPlatform::Initialize() during phase 1 initialization of the platform. The component should complete validation of input data that could not be done by ProcessInput, as well as any other functions to prepare for simulation use (subject to the next paragraph).

The order in which components are initialized is defined by GetComponentInitializationOrder. In general a component implementation of this method should not be dependent on the state of another component, i.e.: it should not assume that the other components Initialize() method has been called. If such a dependency exists one should use Initialize2() if possible, or specify a value GetComponentInitializationOrder to force things to initialize in a particular order.

Parameters
aSimTimeThe current simulation time.
Returns
true if successful or false if unsuccessful (bad input data, etc.)
Note
This method should NOT add any other components to the platform. This MUST be done in PreInitialize().

Reimplemented from WsfComponent.

References GetPlatform(), and WsfComponent::Initialize().

◆ InitializeType()

bool WsfChaffParcel::InitializeType ( ) const
virtual

◆ IsExpired()

bool WsfChaffParcel::IsExpired ( double aSimTime)

To improve run time performance, chaff parcels are removed from the simulation once they are no longer needed. Parcels are removed if they hit the ground. Otherwise, they are retained for a maximum time given by mExpirationTime

References WsfObject::GetName(), GetPlatform(), and WsfObject::GetType().

◆ operator=()

WsfChaffParcel & WsfChaffParcel::operator= ( const WsfChaffParcel & aSrc)
delete

References WsfChaffParcel().

◆ ProcessInput()

bool WsfChaffParcel::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.

◆ QueryInterface()

void * WsfChaffParcel::QueryInterface ( int aRole)
overrideprotectedvirtual

Requests a component's role interface. A component can support one or more roles.

Parameters
aRoleThe role whose interface is to be returned.
Returns
A pointer to the object if it supports the indicated role, or 'null' if it does not. Usage: WsfProcessor* procPtrOrNull = (WsfProcessor*)componentPtr->QueryComponentInterface(cWSF_COMPONENT_PROCESSOR);

Implements WsfComponent.

◆ Update()

void WsfChaffParcel::Update ( double aSimTime)

Chaff physical parameters are computed as follows:

  1. The chaff mean radial size is computed as an exponential growth to the value of DMAX/2, where DMAX is the the characteristic diameter of scatters in parcel at time infinity. Chaff parcels are treated as spherical.
  2. The mean radial speed is calculated as an exponential decay from the value DMAX/2/TAUD, where TAUD is the parcel's radial size expansion time constant (i.e., it is the first derivative of the mean radial size)
  3. Chaff decelerates with a constant acceleration value until it comes to rest

References GetPlatform().


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