WSF
WsfStandardAcousticSignature.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 WSFSTANDARDACOUSTICSIGNATURE_HPP
13#define WSFSTANDARDACOUSTICSIGNATURE_HPP
14
15#include "wsf_mil_export.h"
16
17#include <memory>
18#include <vector>
19
20#include "TblLookup.hpp"
22
24
26{
27public:
28 static WsfAcousticSignature* ObjectFactory(const std::string& aTypeName);
29
31
33
34 WsfAcousticSignature* Clone() const override;
35
36 bool InitializeType() override;
37
38 std::vector<WsfStringId> GetStateNames() const override;
39
40 bool ProcessInput(UtInput& aInput) override;
41
42 double GetNoisePressure(WsfStringId aStateId, double aFrequency) override;
43
44 std::pair<double, double> GetNoisePressureLimits(WsfStringId aStateId) const override;
45
46 // The standard acoustic signature does not currently implement Az/El lookup
47 double GetNoisePressure(WsfStringId aStateId, double aFrequency, double aTgtToRcvrAz, double aTgtToRcvrEl) override
48 {
49 return GetNoisePressure(aStateId, aFrequency);
50 }
51
52 // This is used by WsfAcousticSensor to create an internal table.
53 // note: The signature is assumed to have no requirement to be attached to a platform. Thus,
54 // Initialize(simTime, platformPtr) does not have to be called.
55 bool AddStateEntry(WsfStringId aStateId, std::vector<double>& aFreqVector, std::vector<double>& aSigVector)
56 {
57 return mSharedDataPtr->AddStateEntry(aStateId, aFreqVector, aSigVector);
58 }
59
61 class Table
62 {
63 public:
64 TblIndVarU<double> mFreqs;
65 TblDepVar1<double> mSigs;
66 TblLookupLUX<double> mFreqLookup;
67 };
68
70 class State
71 {
72 public:
73 State(WsfStringId aStateId, Table& aTable);
74
77
79 };
80
81 using StateIndex = std::vector<State>::size_type;
82
83 const std::vector<State>& GetStates() const;
84
85private:
86 class SharedData
87 {
88 public:
89 SharedData();
90 ~SharedData();
91
92 bool InitializeType(WsfObject& aBase);
93
94 bool IsA_ValidState(WsfStringId aId) const;
95
96 bool ProcessInput(UtInput& aInput, WsfObject& aBase);
97
98 bool AddStateEntry(WsfStringId aStateId, std::vector<double>& aFreqVector, std::vector<double>& aSigVector);
99
100 bool AssignDefaultTable(State& aState);
101
102 WsfStringId mCurrentStateId;
103 double mCorrectionFactor;
104 StateIndex mDefaultStateIndex;
105 std::vector<State> mStates;
106 };
107
108 std::shared_ptr<SharedData> mSharedDataPtr;
109};
110
111#endif
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
WsfAcousticSignature * Clone() const override=0
WsfAcousticSignature()=default
virtual double GetNoisePressure(WsfStringId aStateId, double aFrequency)=0
virtual std::pair< double, double > GetNoisePressureLimits(WsfStringId aStateId) const
Definition WsfAcousticSignature.cpp:22
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
bool ProcessInput(UtInput &aInput) override
Definition WsfSignature.cpp:74
virtual bool InitializeType()
Definition WsfSignature.cpp:40
virtual std::vector< WsfStringId > GetStateNames() const
get the list of all valid states belonging to the signature
Definition WsfSignature.hpp:43
virtual bool IsA_ValidState(WsfStringId aId) const
Definition WsfSignature.cpp:62
A 'State' represents all of the tables for a given signature state.
Definition WsfStandardAcousticSignature.hpp:71
WsfStringId mStateId
The string ID of the state name.
Definition WsfStandardAcousticSignature.hpp:76
State(WsfStringId aStateId, Table &aTable)
Definition WsfStandardAcousticSignature.cpp:343
Table mSigTable
Definition WsfStandardAcousticSignature.hpp:78
A 'Table' represents the signature.
Definition WsfStandardAcousticSignature.hpp:62
TblIndVarU< double > mFreqs
Definition WsfStandardAcousticSignature.hpp:64
TblDepVar1< double > mSigs
Definition WsfStandardAcousticSignature.hpp:65
TblLookupLUX< double > mFreqLookup
Definition WsfStandardAcousticSignature.hpp:66
const std::vector< State > & GetStates() const
Definition WsfStandardAcousticSignature.cpp:150
static WsfAcousticSignature * ObjectFactory(const std::string &aTypeName)
Factory method called by WsfAcousticSignatureTypes.
Definition WsfStandardAcousticSignature.cpp:25
bool ProcessInput(UtInput &aInput) override
Definition WsfStandardAcousticSignature.cpp:84
static WsfAcousticSignature * CreateDefaultType()
Called by WsfAcousticSignatureTypes to create the default type to be used on platform if none provide...
Definition WsfStandardAcousticSignature.cpp:38
std::vector< State >::size_type StateIndex
Definition WsfStandardAcousticSignature.hpp:81
double GetNoisePressure(WsfStringId aStateId, double aFrequency, double aTgtToRcvrAz, double aTgtToRcvrEl) override
Definition WsfStandardAcousticSignature.hpp:47
bool InitializeType() override
Definition WsfStandardAcousticSignature.cpp:67
bool AddStateEntry(WsfStringId aStateId, std::vector< double > &aFreqVector, std::vector< double > &aSigVector)
Definition WsfStandardAcousticSignature.hpp:55
WsfStandardAcousticSignature()
Definition WsfStandardAcousticSignature.cpp:52
Copyrights Multiple, All Rights Reserved