11#ifndef WSFCHAFFPARCEL_HPP
12#define WSFCHAFFPARCEL_HPP
14#include "wsf_nx_export.h"
17#include <unordered_map>
19#include "UtCloneablePtr.hpp"
57 double GetRadarCrossSection(
double aFrequency,
const double aXmtrLocationWCS[3],
const double aRcvrLocationWCS[3])
const;
61 virtual bool InitializeType()
const;
63 void Update(
double aSimTime);
64 bool IsExpired(
double aSimTime);
66 void AddToCloud(std::shared_ptr<WsfChaffCloudInterface>& aCloudPtr);
68 static void ClearMaxRcsCache();
70 virtual double GetMaximumRCS()
const;
80 virtual double GetMaximumRCS(
double aFrequency)
const;
83 std::shared_ptr<WsfChaffCloudInterface> mCloudPtr;
85 using MaxRcsCache = std::unordered_map<std::pair<WsfStringId, double>,
double>;
86 static MaxRcsCache sMaxRcsCache;
90 double mBloomDiameter;
91 double mExpansionTimeConstant;
94 double mTerminalVelocity;
95 double mDecelerationRate;
98 double mExpirationTime;
102 using CurvePtr = UtCloneablePtr<UtTable::Curve>;
103 CurvePtr mFreqMaxRCS_Table;
104 unsigned int mNumberDipoles;
108 double mDropLocationWCS[3];
109 double mDropVelocityWCS[3];
110 double mDropAccelerationWCS[3];
111 double mFreeFallVelocityWCS[3];
123class hash<
std::pair<WsfStringId, double>>
126 size_t operator()(
const std::pair<WsfStringId, double>& pair)
const
128 return WsfStringId()(pair.first) ^ std::hash<double>()(pair.second);
#define WSF_DECLARE_COMPONENT_ROLE_TYPE(TYPE, ROLE)
Definition WsfComponentRoles.hpp:44
@ cWSF_COMPONENT_CHAFF_PARCEL
Chaff parcel extension for WsfPlatform.
Definition WsfNonExportableComponentRoles.hpp:19
aObjectPtr Update(simTime)
WsfSimpleComponentT< WsfPlatformComponent > WsfSimplePlatformComponent
Definition WsfSimpleComponent.hpp:126
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfChaffParcelInterface.hpp:19
virtual void GetDropLocationWCS(double aDropLocationWCS[3]) const =0
Definition WsfChaffParcel.hpp:30
WsfChaffParcel()
Definition WsfChaffParcel.cpp:22
~WsfChaffParcel() override=default
WsfChaffParcel & operator=(const WsfChaffParcel &aSrc)=delete
WsfPlatform * GetPlatform() const override
Definition WsfChaffParcel.hpp:45
double GetRadialSize() const override
Definition WsfChaffParcel.hpp:46
ParentType * GetComponentParent() const
Definition WsfComponent.hpp:154
Definition WsfComponent.hpp:39
virtual bool Initialize(double aSimTime)
Definition WsfComponent.cpp:45
virtual WsfComponent * CloneComponent() const =0
virtual void * QueryInterface(int aRole)=0
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual WsfObject * Clone() const =0
virtual bool ProcessInput(UtInput &aInput)
Definition WsfObject.cpp:140
size_t operator()(const std::pair< WsfStringId, double > &pair) const
Definition WsfChaffParcel.hpp:126
Template specialization for wsf::comm::Address. Allows usage of Address in std::unordered_map/set.
Definition WsfCommAddress.hpp:185