WSF
WsfEW_SLC_Effect.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_SLC_EFFECT_HPP
13#define WSFEW_SLC_EFFECT_HPP
14
15#include "wsf_mil_export.h"
16
17#include <iosfwd>
18#include <map>
19#include <vector>
20
21class UtInput;
22
24class WsfEM_Antenna;
25class WsfEM_Rcvr;
26class WsfEW_EA;
27class WsfEW_EP;
28class WsfEW_Effect;
29#include "WsfEW_PowerEffect.hpp"
30
32
33class WSF_MIL_EXPORT WsfEW_SLC_Effect : public WsfEW_PowerEffect
34{
35public:
37 {
38 double mCancelationValue; // The cancellation value for this jammer.
39 int mChannelsCanceled; // The number of channels this jammer is occupying.
40 double mJammerToNoise; // The calculated JNR (main antenna beam, i.e. NOT auxiliary antenna).
41 double mSLC_DegradeFactor; // The degradation factor for this jammer.
42 double mPolModSwitchRate; // The polarization modulation switch rate/frequency for this jammer if applicable.
43
44 void Reset()
45 {
48 mJammerToNoise = 0.0;
51 }
52 };
53
54 // Jammer Id to Jammer cancellation data
55 using CancelationMap = std::map<unsigned int, CancelationData>;
56 using JNR_To_CR_PairVec = std::vector<std::pair<double, double>>;
57 using CancelationTable = std::map<int, JNR_To_CR_PairVec>;
58
61 ~WsfEW_SLC_Effect() override;
62 WsfEW_Effect* Clone() const override;
63 bool Initialize(WsfSimulation& aSimulation) override;
64 bool ProcessInput(UtInput& aInput) override;
65
72
80
81 void ApplyUnmitigatedEffect(WsfEW_Effects& aEW_Effects) const override;
82
83 void ApplyMitigatedEffect(WsfEW_Effect* aEW_EffectPtr, WsfEW_Effects& aEW_Effects) const override;
84
85 void UpdateEffects(double aSimTime,
86 const WsfEM_Interaction& aTargetInteraction,
87 const WsfEM_Interaction& aJammerToTgtInteraction,
88 const ut::optional<WsfEM_Interaction>& aTgtToJammerInteraction,
89 WsfEW_Effects& aEW_Effects,
90 WsfEW_Effect* aEW_EffectPtr = nullptr) override;
91
92 void RemoveJammerXmtr(unsigned int aXmtrId) override;
93 void RemoveJammerXmtr(WsfEM_Xmtr* aJammerXmtrPtr) override;
94
97
98 virtual int GetNumberCancelers() const { return mNumberCancelers; }
99 virtual const CancelationTable& GetCancelationTable() const { return mCancelationTable; }
100 virtual double GetMainThresholds(unsigned int aIndex) const { return mMainThresholds[aIndex]; }
102
104
105 virtual double GetCancelationLockRatio() const { return mCancelationLockRatio; }
106 virtual WsfEM_Rcvr* GetAuxRcvrPtr() { return mAuxRcvrPtr; }
108
109protected:
111
112
113private:
114 bool AddCancelationRatio(int aNumCanceledJammers, double aJammerToNoiseRatio, double aCancelationRatio);
115 double GetCancelationRatio(int aNumCanceledJammers, double aJammerToNoiseRatio) const;
116 double GetCancelationFactor(int aNumCanceledJammers, double aJammerToNoiseRatio) const;
117
118 // Input data variables
119 WsfEM_Rcvr* mAuxRcvrPtr;
120 WsfEM_Antenna* mAuxAntennaPtr;
121 WsfAntennaPattern* mAuxAntennaPatternPtr;
122
123 double mAuxBeamTilt;
124 bool mExplicitAuxBeamTilt;
125
126 double mCancelationLockRatio;
127 double mMinimumPulseWidth;
128 double mLoopSettlingTime;
129 int mNumberCancelers;
130
131 double mAuxThresholds[2];
132 double mMainThresholds[2];
133
134 // bool mCalculateSaturatedCR;
135 CancelationMethod mCancelationMethod;
136
137 CancelationTable mCancelationTable;
138 bool mExplicitCancelationTable;
139
140 // Current/Updated data variables
141 CancelerState mCancelerState;
142 // double mAuxChannelJammerPower;
143 int mCanceledJammers;
144 CancelationMap mCancelationMap;
145};
146
147#endif
Definition WsfAntennaPattern.hpp:35
Definition WsfEM_Antenna.hpp:49
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Rcvr.hpp:68
Definition WsfEM_Xmtr.hpp:55
Definition WsfEW_EA.hpp:37
Definition WsfEW_EP.hpp:36
Definition WsfEW_Effect.hpp:45
virtual void RemoveJammerXmtr(unsigned int aXmtrId)
Definition WsfEW_Effect.cpp:399
Definition WsfEW_Effects.hpp:41
void ApplyUnmitigatedEffect(WsfEW_Effects &aEW_Effects) const override
Definition WsfEW_PowerEffect.cpp:72
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 ApplyMitigatedEffect(WsfEW_Effect *aEW_EffectPtr, WsfEW_Effects &aEW_Effects) const override
Definition WsfEW_PowerEffect.cpp:233
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
WsfEW_SLC_Effect applies Sidelobe Canceler (SLC) effects of radars.
Definition WsfEW_SLC_Effect.hpp:34
std::vector< std::pair< double, double > > JNR_To_CR_PairVec
Definition WsfEW_SLC_Effect.hpp:56
WsfEW_SLC_Effect()
Definition WsfEW_SLC_Effect.cpp:40
virtual const CancelationTable & GetCancelationTable() const
Definition WsfEW_SLC_Effect.hpp:99
virtual int GetNumberCancelers() const
Definition WsfEW_SLC_Effect.hpp:98
WsfEW_SLC_Effect & operator=(const WsfEW_SLC_Effect &)=delete
virtual double GetCancelationLockRatio() const
Definition WsfEW_SLC_Effect.hpp:105
virtual double GetMainThresholds(unsigned int aIndex) const
Definition WsfEW_SLC_Effect.hpp:100
CancelerState
Definition WsfEW_SLC_Effect.hpp:74
@ cOFF
canceler off
Definition WsfEW_SLC_Effect.hpp:75
@ cSTALLED
canceler stalled, no longer canceling
Definition WsfEW_SLC_Effect.hpp:78
@ cCANCELING
canceler functioning
Definition WsfEW_SLC_Effect.hpp:76
@ cMAINLOBE
Jammer signal in mainlobe or power in Aux is less than main.
Definition WsfEW_SLC_Effect.hpp:77
virtual WsfEM_Rcvr * GetAuxRcvrPtr()
Definition WsfEW_SLC_Effect.hpp:106
std::map< int, JNR_To_CR_PairVec > CancelationTable
Definition WsfEW_SLC_Effect.hpp:57
CancelationMethod
Definition WsfEW_SLC_Effect.hpp:67
@ cINCREMENTAL
Definition WsfEW_SLC_Effect.hpp:70
@ cNONE
Definition WsfEW_SLC_Effect.hpp:68
@ cSUM
Definition WsfEW_SLC_Effect.hpp:69
std::map< unsigned int, CancelationData > CancelationMap
Definition WsfEW_SLC_Effect.hpp:55
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfEW_SLC_Effect.hpp:37
double mPolModSwitchRate
Definition WsfEW_SLC_Effect.hpp:42
void Reset()
Definition WsfEW_SLC_Effect.hpp:44
double mJammerToNoise
Definition WsfEW_SLC_Effect.hpp:40
double mSLC_DegradeFactor
Definition WsfEW_SLC_Effect.hpp:41
double mCancelationValue
Definition WsfEW_SLC_Effect.hpp:38
int mChannelsCanceled
Definition WsfEW_SLC_Effect.hpp:39
Copyrights Multiple, All Rights Reserved