WSF
WsfEW_PulseEffect.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI
3//
4// The Advanced Framework for Simulation, Integration, and Modeling (AFSIM)
5//
6// Copyright 2003-2015 The Boeing Company. All rights reserved.
7//
8// The use, dissemination or disclosure of data in this file is subject to
9// limitation or restriction. See accompanying README and LICENSE for details.
10// ****************************************************************************
11
12#ifndef WSFEW_PULSEEFFECT_HPP
13#define WSFEW_PULSEEFFECT_HPP
14
15#include "wsf_mil_export.h"
16
17#include <iosfwd>
18#include <map>
19#include <vector>
20
21class UtInput;
22
23class WsfEW_EA;
24class WsfEW_EP;
25#include "WsfEM_Interaction.hpp"
26#include "WsfEM_Rcvr.hpp"
27#include "WsfEW_Effect.hpp"
28#include "WsfEW_PowerEffect.hpp"
29
30
32
33class WSF_MIL_EXPORT WsfEW_PulseEffect : public WsfEW_PowerEffect
34{
35public:
38 ~WsfEW_PulseEffect() override = default;
39 WsfEW_Effect* Clone() const override;
40 bool Initialize(WsfSimulation& aSimulation) override;
41 bool ProcessInput(UtInput& aInput) override;
42
43 void UpdateEffects(double aSimTime,
44 const WsfEM_Interaction& aTargetInteraction,
45 const WsfEM_Interaction& aJammerToTgtInteraction,
46 const ut::optional<WsfEM_Interaction>& aTgtToJammerInteraction,
47 WsfEW_Effects& aEW_Effects,
48 WsfEW_Effect* aEW_EffectPtr = nullptr) override;
49
52 void SetPulseDensityFactor(double aPulseDensityFactor) { mPulseDensityFactor = aPulseDensityFactor; }
53
56 void SetJammingPulseDensity(double aJammingPulseDensity) { mJammingPulseDensity = aJammingPulseDensity; }
57
60 double GetJammingPulseDensity() const override { return mJammingPulseDensity; }
61 double GetJammingPulseDensity(WsfEM_Xmtr* aXmtrPtr) const override;
62
63 virtual void UpdateJammerPulseDensity(WsfEM_Xmtr* aJammerXmtrPtr, WsfEM_Xmtr* aRadarXmtrPtr);
64
66
67
68 double GetJammerPulseDensity(WsfStringId aSystemTypeId) const;
69 virtual void SetJammerPulseDensity(WsfStringId aSystemTypeId, double aJammerPulseDensity, bool aIsExplicit = false);
70 bool ExplicitJPD(WsfStringId aSystemTypeId);
72
73protected:
74 class WSF_MIL_EXPORT PulseData : public WsfEW_PowerEffect::PowerData
75 {
76 public:
77 PulseData();
78 PulseData& operator=(const PulseData&) = delete;
79 ~PulseData() override = default;
80
81 bool ProcessInput(UtInput& aInput) override;
82 bool Initialize(WsfSimulation& aSimulation) override;
83
84 EW_EffectData* Clone() const override;
85
86 void Reset() override;
87
88 bool ExplicitJPD() const { return mExplicitJPD; }
89 double GetJammerPulseDensity() const { return mJammerPulseDensity; }
90 void SetJammerPulseDensity(double aJammerPulseDensity, bool aIsExplicit = false);
91
92 protected:
93 PulseData(const PulseData& aSrc) = default;
94
95 private:
96 double mJammerPulseDensity;
97 bool mExplicitJPD;
98 };
99
101
103
104 EffectData* NewEffectData() override { return new PulseData(); }
105 EffectData* PropagateEffectDataPtr(WsfStringId aSystemTypeId) override;
107
108private:
109 using PulseDataMap =
110 std::map<WsfStringId, PulseData*>;
111 PulseDataMap mPulseDataMap;
112
114 double mPulseDensityFactor;
115
116 double mJammingPulseDensity;
117};
118
119#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Xmtr.hpp:55
Definition WsfEW_EA.hpp:37
Definition WsfEW_EP.hpp:36
Base effect data used to derive from in inheriting effect classes.
Definition WsfEW_Effect.hpp:317
Definition WsfEW_Effect.hpp:45
virtual double GetJammingPulseDensity() const
Definition WsfEW_Effect.hpp:299
Definition WsfEW_Effects.hpp:41
Definition WsfEW_PowerEffect.hpp:78
EffectData * PropagateEffectDataPtr(WsfStringId aSystemTypeId) override
Definition WsfEW_PowerEffect.cpp:486
bool Initialize(WsfSimulation &aSimulation) override
Definition WsfEW_PowerEffect.cpp:53
bool ProcessInput(UtInput &aInput) override
Definition WsfEW_PowerEffect.cpp:66
WsfEW_Effect * Clone() const override
Definition WsfEW_PowerEffect.cpp:47
WsfEW_PowerEffect()
Definition WsfEW_PowerEffect.cpp:30
void UpdateEffects(double aSimTime, const WsfEM_Interaction &aTargetInteraction, const WsfEM_Interaction &aJammerToTgtInteraction, const ut::optional< WsfEM_Interaction > &aTgtToJammerInteraction, WsfEW_Effects &aEW_Effects, WsfEW_Effect *aEW_EffectPtr=nullptr) override
Definition WsfEW_PowerEffect.cpp:393
Definition WsfEW_PulseEffect.hpp:75
PulseData(const PulseData &aSrc)=default
bool ExplicitJPD() const
Definition WsfEW_PulseEffect.hpp:88
PulseData()
Definition WsfEW_PulseEffect.cpp:177
void Reset() override
Definition WsfEW_PulseEffect.cpp:216
~PulseData() override=default
double GetJammerPulseDensity() const
Definition WsfEW_PulseEffect.hpp:89
PulseData & operator=(const PulseData &)=delete
void SetJammingPulseDensity(double aJammingPulseDensity)
Definition WsfEW_PulseEffect.hpp:56
EffectData * NewEffectData() override
Definition WsfEW_PulseEffect.hpp:104
WsfEW_PulseEffect & operator=(const WsfEW_PulseEffect &)=delete
virtual void SetJammerPulseDensity(WsfStringId aSystemTypeId, double aJammerPulseDensity, bool aIsExplicit=false)
Definition WsfEW_PulseEffect.cpp:156
WsfEW_PulseEffect()
Definition WsfEW_PulseEffect.cpp:24
void SetPulseDensityFactor(double aPulseDensityFactor)
Definition WsfEW_PulseEffect.hpp:52
double GetJammingPulseDensity() const override
Definition WsfEW_PulseEffect.hpp:60
~WsfEW_PulseEffect() override=default
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Copyrights Multiple, All Rights Reserved