WSF
WsfEM_SurfaceClutterTable.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 WSFEM_SURFACECLUTTERTABLE_HPP
13#define WSFEM_SURFACECLUTTERTABLE_HPP
14
15#include "wsf_export.h"
16
17#include <memory>
18#include <vector>
19
20#include "TblLookup.hpp"
21#include "UtEntity.hpp"
22class UtInput;
23#include "WsfEM_Clutter.hpp"
25class WsfEM_Environment;
26
34{
35public:
36 enum Type
37 {
38 cUNDEFINED = 0, //<! The table type is not defined.
39 cCONSTANT, //<! A "dummy" table filled with a predefined constant value.
40 cGENERIC, //<! A range-elevation-clutter table with that is independent of bearing angle.
41 cSITE_SPECIFIC //<! A table that is dependent on range, bearing, and elevation.
42 };
43
46
47 static WsfEM_Clutter* ObjectFactory(const std::string& aTypeName);
48
49 WsfEM_Clutter* Clone() const override;
50
51 bool ProcessInput(UtInput& aInput) override;
52
54 Type GetType() const { return mType; }
55
56 double ComputeClutterPower(WsfEM_Interaction& aInteraction, WsfEnvironment& aEnvironment, double aProcessingFactor) override;
57
58protected:
61
62private:
64 void CreateConstantTable(double value);
65
67 void AddAltitudeEntry(double aAltitude,
68 std::vector<double>& aRanges,
69 std::vector<double>& aBearings,
70 std::vector<double>& aClutters);
71
73 void AddAltitudeEntry(double aAltitude, std::vector<double>& aRanges, std::vector<double>& aClutters);
74
75 bool Load(UtInput& aInput);
76
77 struct AltitudeEntry
78 {
79 double mAltitude; //<! Altitude independent value
80 TblIndVarU<double> mRanges; //<! Range independent values
81 TblIndVarU<double> mBearings; //<! The set of bearings for which the clutter is measured
82 //<! (not used if table type is GENERIC).
83 TblDepVar1<double> mClutters1; //<! the clutter table f(altitude, range)
84 TblDepVar2<double> mClutters2; //<! the clutter table f(altitude, range, bearing)
85 TblLookupLU<double> mRangeLookup;
86 TblLookupLU<double> mBearingLookup;
87 };
88
90 class ClutterTable : public std::vector<AltitudeEntry*>
91 {
92 public:
93 virtual ~ClutterTable();
94 };
95
96 std::shared_ptr<ClutterTable> mAltitudesPtr;
97
98 ClutterTable& mAltitudes;
99
100 Type mType;
101 double mConstantClutter;
102
103 // The following are used to compute accurate ground ranges between the target and receiver.
104 UtEntity mReceiver;
105 UtEntity mTarget;
106};
107
108#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
void Load(PakI &aBuff, WsfXIO_PlatformPartInfo *&aPtr)
Definition WsfXIO_ObjectInfo.cpp:345
An abstract class for computing clutter power.
Definition WsfEM_Clutter.hpp:25
WsfEM_Clutter & operator=(const WsfEM_Clutter &aRhs)
Definition WsfEM_Clutter.cpp:32
WsfEM_Clutter * Clone() const override=0
WsfEM_Clutter()
Constructor.
Definition WsfEM_Clutter.cpp:18
bool ProcessInput(UtInput &aInput) override
Definition WsfEM_Clutter.cpp:53
virtual double ComputeClutterPower(WsfEM_Interaction &aInteraction, WsfEnvironment &aEnvironment, double aProcessingFactor)=0
Definition WsfEM_Interaction.hpp:68
Definition WsfEM_SurfaceClutterTable.hpp:34
WsfEM_SurfaceClutterTable()
Definition WsfEM_SurfaceClutterTable.cpp:31
Type GetType() const
Return the table type.
Definition WsfEM_SurfaceClutterTable.hpp:54
Type
Definition WsfEM_SurfaceClutterTable.hpp:37
@ cCONSTANT
Definition WsfEM_SurfaceClutterTable.hpp:39
@ cGENERIC
Definition WsfEM_SurfaceClutterTable.hpp:40
@ cUNDEFINED
Definition WsfEM_SurfaceClutterTable.hpp:38
@ cSITE_SPECIFIC
Definition WsfEM_SurfaceClutterTable.hpp:41
Definition WsfEnvironment.hpp:37
Type
Definition P6DofVehicleData.hpp:182
Copyrights Multiple, All Rights Reserved