WSF
WsfEM_ALARM_Clutter.hpp
Go to the documentation of this file.
1// ****************************************************************************
2// CUI//REL TO USA ONLY
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 WSFEM_ALARM_CLUTTER_HPP
13#define WSFEM_ALARM_CLUTTER_HPP
14
15#include <string>
16#include <vector>
17
18#include "TblLookup.hpp"
21#include "WsfEM_Clutter.hpp"
22#include "WsfEM_Interaction.hpp"
23#include "WsfEnvironment.hpp"
24class WsfEM_Xmtr;
25class WsfEM_XmtrRcvr;
26
29{
30public:
31 enum
32 {
34 }; // land covers (deprecated; move to private)
35 enum
36 {
38 }; // land forms (deprecated; move to private
39 enum
40 {
42 }; // clutter statistics (deprecated; move to private)
43
46
49 ~WsfEM_ALARM_Clutter() override = default;
50
51 static WsfEM_Clutter* ObjectFactory(const std::string& aTypeName);
52
53 static void ResetState();
54
55 WsfEM_Clutter* Clone() const override;
56
57 bool Initialize(WsfEM_Rcvr* aRcvrPtr) override;
58
59 bool ProcessInput(UtInput& aInput) override;
60
61 double ComputeClutterPower(WsfEM_Interaction& aInteraction, WsfEnvironment& aEnvironment, double aProcessingFactor) override;
62
63 double GetSigmaC() const { return sigmac; }
64 double GetDecayConstant() const { return decay_const; }
65
69 {
70 public:
72 : mIsEnabled(false)
73 , mNumRanges(0)
74 {
75 }
76
78 unsigned mNumRanges;
79 std::vector<double> mMinRange;
80 std::vector<double> mMaxRange;
81 std::vector<double> mSurfaceArea;
82 std::vector<double> mPowerAtRange;
83 std::vector<double> mPowerAtReceiver;
84 };
85
86 const LookSummary& GetLookSummary() { return mLookSummary; }
87 bool LookSummaryEnabled() { return mLookSummary.mIsEnabled; }
88
89protected:
91
92private:
93 enum
94 {
95 stat_mean = 1
96 };
97 enum
98 {
99 stat_stat = 2
100 };
101 enum
102 {
103 stat_max = 3
104 };
105 enum
106 {
107 stat_min = 4
108 };
109 enum
110 {
111 stat_numerical = 5
112 };
113
114 void MapEnvironment(WsfPlatform* aPlatformPtr, WsfEnvironment& aEnvironment, int& land_cover, int& land_form, bool& water_cover);
115 void clutter_signal_comp(double ctauo2,
116 double ctauo4,
117 double freqin,
118 int land_cover,
119 double radar_proc,
120 double ranget,
121 double rkfact,
122 double runamb,
123 double sitlam,
124 double sitphi,
125 double tarcon,
126 bool water_cover,
127 atmosphere& atm_data,
128 antenna& rx_ant,
129 antenna& tx_ant,
130 double& sigclt);
131
132 double get_reflectivity(const std::vector<double>& elvmsl,
133 double frequency,
134 double radar_height,
135 int iprofl,
136 int land_cover,
137 double rkfact,
138 const std::vector<double>& rngter,
139 bool water_cover,
140 const std::vector<double>& xprofl,
141 const std::vector<double>& zprofl,
142 double epslnc); // mjm added elevation angle as parameter
143
144 double mitsig(int land_cover);
145
146 double cnasig(double freqin, double graze);
147
148 void set_random_seed(int new_seed) { iseed = new_seed; }
149
150 float uniform_random(int n);
151
152 void randu(int ix, int& iy, float& yfl);
153
154 std::string map_file;
155 double sigmac; // standard deviation (clutter freq spread)
156 double decay_const; // quadratic decay const
157 double reflectivity; // dbsm/dbsm for numerical
158 double reflectivity_delta; // dbsm/dbsm reflectivity delta
159 double max_range; // meters
160 double az_max_angle_deg; // degrees
161 double az_angle_incr_deg; // degrees
162 double az_max_angle_rad; // radians
163 double az_angle_incr_rad; // radians
164 double cw_clutter_bin; // meters (from cw.f90)
165
166 int land_form;
167 int statistic_opt;
168 int random_seed;
169 int patch_count;
170 int iseed; // From random_number_mod.f90
171
172 bool clutter_sw;
173 bool map_sw;
174
175 bool mUseBeamwidthForIncrement;
176
177 bool mUseMIT_LL_DataTables; // true if to use MIT-LL data tables
178 bool mPolarizationVertical; // true if the transmitter signal is vertically polarized.
179 WsfEnvironment::LandCover mWSF_LandCover; // land cover from WSF environment
180 WsfEnvironment::LandFormation mWSF_LandForm; // land form from WSF environment
181 WsfEnvironment::SeaState mWSF_SeaState; // sea state from WSF environment
182
183 bool mUseSALRAM_DataTables;
184 LookSummary mLookSummary;
185 WsfSimulation* mSimulationPtr;
186 // Moved here to deal with statics
187 static int aprofile;
188 static bool uninit;
189 static std::vector<int> iend;
190 static std::vector<int> istart;
191 static std::vector<bool> visibl;
192 static std::vector<double> elvmsl;
193 static std::vector<double> rngter; // 0:
194 static std::vector<double> tanepp;
195 static std::vector<double> xprofl; // 0:
196 static std::vector<double> zprofl; // 0:
197};
198
199#endif
Definition WsfEM_ALARM_Antenna.hpp:23
Definition WsfEM_ALARM_Attenuation.hpp:25
Definition WsfEM_ALARM_Clutter.hpp:69
unsigned mNumRanges
Definition WsfEM_ALARM_Clutter.hpp:78
std::vector< double > mMinRange
Definition WsfEM_ALARM_Clutter.hpp:79
bool mIsEnabled
Definition WsfEM_ALARM_Clutter.hpp:77
LookSummary()
Definition WsfEM_ALARM_Clutter.hpp:71
std::vector< double > mPowerAtReceiver
Definition WsfEM_ALARM_Clutter.hpp:83
std::vector< double > mSurfaceArea
Definition WsfEM_ALARM_Clutter.hpp:81
std::vector< double > mMaxRange
Definition WsfEM_ALARM_Clutter.hpp:80
std::vector< double > mPowerAtRange
Definition WsfEM_ALARM_Clutter.hpp:82
Clutter model from ALARM.
Definition WsfEM_ALARM_Clutter.hpp:29
bool Initialize(WsfEM_Rcvr *aRcvrPtr) override
Definition WsfEM_ALARM_Clutter.cpp:202
~WsfEM_ALARM_Clutter() override=default
WsfEM_ALARM_Antenna::antenna antenna
Definition WsfEM_ALARM_Clutter.hpp:44
static WsfEM_Clutter * ObjectFactory(const std::string &aTypeName)
Factory method called by WsfEM_ClutterTypes.
Definition WsfEM_ALARM_Clutter.cpp:166
WsfEM_ALARM_Attenuation::atmosphere atmosphere
Definition WsfEM_ALARM_Clutter.hpp:45
WsfEM_ALARM_Clutter()
Definition WsfEM_ALARM_Clutter.cpp:95
WsfEM_Clutter * Clone() const override
Definition WsfEM_ALARM_Clutter.cpp:195
@ max_forms
Definition WsfEM_ALARM_Clutter.hpp:37
double GetSigmaC() const
Definition WsfEM_ALARM_Clutter.hpp:63
double GetDecayConstant() const
Definition WsfEM_ALARM_Clutter.hpp:64
bool ProcessInput(UtInput &aInput) override
Definition WsfEM_ALARM_Clutter.cpp:341
@ max_covers
Definition WsfEM_ALARM_Clutter.hpp:33
const LookSummary & GetLookSummary()
Definition WsfEM_ALARM_Clutter.hpp:86
WsfEM_ALARM_Clutter & operator=(const WsfEM_ALARM_Clutter &)=delete
static void ResetState()
Reset all global/static data to default values.
Definition WsfEM_ALARM_Clutter.cpp:179
@ max_stat_opts
Definition WsfEM_ALARM_Clutter.hpp:41
bool LookSummaryEnabled()
Definition WsfEM_ALARM_Clutter.hpp:87
double ComputeClutterPower(WsfEM_Interaction &aInteraction, WsfEnvironment &aEnvironment, double aProcessingFactor) override
Definition WsfEM_ALARM_Clutter.cpp:471
WsfEM_Clutter()
Constructor.
Definition WsfEM_Clutter.cpp:18
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_Rcvr.hpp:68
Definition WsfEM_XmtrRcvr.hpp:42
Definition WsfEM_Xmtr.hpp:55
Definition WsfEnvironment.hpp:37
LandCover
Definition WsfEnvironment.hpp:42
SeaState
Definition WsfEnvironment.hpp:80
LandFormation
Definition WsfEnvironment.hpp:63
Copyrights Multiple, All Rights Reserved