WSF
WsfAntennaPattern.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 WSFANTENNAPATTERN_HPP
13#define WSFANTENNAPATTERN_HPP
14
15#include "wsf_export.h"
16
17#include <memory>
18#include <mutex>
19
20#include "TblLookup.hpp"
21class UtInput;
22#include "UtReferenceTracked.hpp"
23#include "WsfObject.hpp"
24class WsfSimulation;
25
33
35{
36public:
37 static const char* cTYPE_KIND;
38
40 {
41 public:
42 TblIndVarU<double> mFrequency;
43 TblDepVar1<double> mAdjustment;
44 };
45
46 class WSF_EXPORT BaseData : public UtReferenceCounted
47 {
48 public:
49 BaseData();
50 BaseData(const BaseData& aSrc) = default;
51 ~BaseData() override = default;
52
53 virtual bool ProcessInput(WsfAntennaPattern& aPattern, UtInput& aInput);
54 virtual bool Initialize(WsfAntennaPattern& aAntennaPattern);
55
56 virtual double GetGain(double aFrequency, double aTargetAz, double aTargetEl, double aEBS_Az, double aEBS_El);
57
58 virtual double PerformGainAdjustment(double aFrequency, double aGain);
59
60 virtual void InitializeAverageGain(double aFrequency);
61
64
67
70
74
76
79 std::recursive_mutex mAvgGainMutex;
80 std::vector<double> mAvgGain;
84 };
85
87 WsfAntennaPattern(BaseData* aBasePtr);
88 ~WsfAntennaPattern() override;
89
90 WsfAntennaPattern* Clone() const override;
91
92 const char* GetScriptClassName() const override { return "WsfAntennaPattern"; }
93
94 virtual double GetGain(double aFrequency, double aTargetAz, double aTargetEl, double aEBS_Az, double aEBS_El);
95
96 WSF_DEPRECATED virtual double GetAzimuthBeamwidth(double aFrequency) const final;
97 virtual double GetAzimuthBeamwidth(double aFrequency, double aEBS_Azimuth, double aEBS_Elevation) const;
98 WSF_DEPRECATED virtual double GetElevationBeamwidth(double aFrequency) const final;
99 virtual double GetElevationBeamwidth(double aFrequency, double aEBS_Azimuth, double aEBS_Elevation) const;
100
101 virtual double GetMinimumGain() const;
102 virtual double GetPeakGain(double aFrequency) const;
103 virtual const GainAdjustmentTable& GetGainAdjustmentTable() const;
104 virtual double GetGainAdjustment() const;
105
106 virtual bool Initialize(WsfSimulation* aSimulationPtr);
107
108 bool ProcessInput(UtInput& aInput) override;
109
110 virtual double
111 GetGainThresholdFraction(double aGainThreshold, double aPeakGain, double aMinAz, double aMaxAz, double aFrequency);
112
113 virtual void SetAntennaBeamCount(unsigned int aBeamCount){};
114
115protected:
118
121 // std::shared_ptr<BaseData> mSharedDataPtr;
122
124
125 virtual double ApplyEBS(double aBeamwidth, double aEBS_Az, double aEBS_El) const;
126};
127
128#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
Definition WsfAntennaPattern.hpp:47
virtual void InitializeAverageGain(double aFrequency)
Initialize the average gain table if not already initialized.
Definition WsfAntennaPattern.cpp:401
double mGainAdjustment
A simple gain adjustment.
Definition WsfAntennaPattern.hpp:66
double mMinimumGain
The minimum gain that should be returned by any antenna pattern.
Definition WsfAntennaPattern.hpp:63
~BaseData() override=default
GainAdjustmentTable mGainAdjustmentTable
Frequency-dependent gain adjustment table.
Definition WsfAntennaPattern.hpp:69
virtual double GetGain(double aFrequency, double aTargetAz, double aTargetEl, double aEBS_Az, double aEBS_El)
Definition WsfAntennaPattern.cpp:376
bool mInitialized
Definition WsfAntennaPattern.hpp:73
std::vector< double > mAvgGain
Definition WsfAntennaPattern.hpp:80
bool mAvgGainInitialized
Definition WsfAntennaPattern.hpp:77
double mSampledPeakGain
The peak gain of the sample. This SHOULD be the peak gain of the pattern.
Definition WsfAntennaPattern.hpp:82
std::recursive_mutex mAvgGainMutex
Definition WsfAntennaPattern.hpp:79
bool mShowAvgGain
Definition WsfAntennaPattern.hpp:78
virtual double PerformGainAdjustment(double aFrequency, double aGain)
Definition WsfAntennaPattern.cpp:384
BaseData()
Definition WsfAntennaPattern.cpp:286
BaseData(const BaseData &aSrc)=default
virtual bool Initialize(WsfAntennaPattern &aAntennaPattern)
Definition WsfAntennaPattern.cpp:364
Definition WsfAntennaPattern.hpp:40
TblDepVar1< double > mAdjustment
Definition WsfAntennaPattern.hpp:43
TblIndVarU< double > mFrequency
Definition WsfAntennaPattern.hpp:42
Definition WsfAntennaPattern.hpp:35
const char * GetScriptClassName() const override
Definition WsfAntennaPattern.hpp:92
BaseData * mSharedDataPtr
Definition WsfAntennaPattern.hpp:123
WsfAntennaPattern()
Definition WsfAntennaPattern.cpp:25
virtual double ApplyEBS(double aBeamwidth, double aEBS_Az, double aEBS_El) const
Definition WsfAntennaPattern.cpp:84
static const char * cTYPE_KIND
Definition WsfAntennaPattern.hpp:37
virtual void SetAntennaBeamCount(unsigned int aBeamCount)
Definition WsfAntennaPattern.hpp:113
WsfAntennaPattern & operator=(const WsfAntennaPattern &aRhs)
WsfObject()
This is the constructor for the WsfObject class.
Definition WsfObject.cpp:88
virtual WsfObject * Clone() const =0
virtual bool ProcessInput(UtInput &aInput)
Definition WsfObject.cpp:140
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Copyrights Multiple, All Rights Reserved