12#ifndef WSFESAANTENNAPATTERN_HPP
13#define WSFESAANTENNAPATTERN_HPP
15#include "wsf_mil_export.h"
20#include "UtRandom.hpp"
128 void ProcessTaylorWeightingInput(UtInput& aInput);
140 double GetGain(
double aFrequency,
double aTargetAz,
double aTargetEl,
double aEBS_Az,
double aEBS_EL)
override;
142 double GetAzimuthBeamwidth(
double aFrequency,
double aEBS_Azimuth,
double aEBS_Elevation)
const override;
143 double GetElevationBeamwidth(
double aFrequency,
double aEBS_Azimuth,
double aEBS_Elevation)
const override;
144 double GetPeakGain(
double aFrequency)
const override;
172 virtual double ComputeDirectivityGain(
double aFrequency,
double aEBS_Az,
double aEBS_El)
const;
174 virtual double ComputeElementGain(
double aFrequency,
double aAzAngle,
double aElAngle)
const;
176 virtual double ComputeElementFactor(
double aFrequency,
double aEBS_Az,
double aEBS_El,
double aAzAngle,
double aElAngle)
const;
180 virtual void ResizeArray();
181 virtual void AdjustApertureElements(ut::Random& aRandom);
182 virtual void AdjustElementLocations();
184 void ComputeFailedModulesWeights(ut::Random& aRandom);
206 double ComputeArrayFactor(
double aFrequency,
double aEBS_Az,
double aEBS_El,
double aAzAngle,
double aElAngle)
const;
208 void ComputeDistributionWeights();
209 virtual double ComputeApertureEfficiency();
210 double ComputeQuantizationError(
int aNumBits,
double aRangePerBit,
double aValue)
const;
212 double ComputeGain(
double aFrequency,
double aAzAngle,
double aElAngle,
double aEBS_Az,
double aEBS_El)
const;
UtStringId WsfStringId
WsfStringId – the same thing as UtStringId.
Definition WsfStringId.hpp:23
Definition WsfAntennaPattern.hpp:47
WsfAntennaPattern * Clone() const override
Definition WsfAntennaPattern.cpp:57
WsfAntennaPattern()
Definition WsfAntennaPattern.cpp:25
bool ProcessInput(UtInput &aInput) override
Definition WsfAntennaPattern.cpp:214
virtual WSF_DEPRECATED double GetElevationBeamwidth(double aFrequency) const final
Definition WsfAntennaPattern.cpp:139
virtual bool Initialize(WsfSimulation *aSimulationPtr)
Definition WsfAntennaPattern.cpp:203
virtual double GetGain(double aFrequency, double aTargetAz, double aTargetEl, double aEBS_Az, double aEBS_El)
Definition WsfAntennaPattern.cpp:72
virtual double GetPeakGain(double aFrequency) const
Definition WsfAntennaPattern.cpp:172
virtual WSF_DEPRECATED double GetAzimuthBeamwidth(double aFrequency) const final
Definition WsfAntennaPattern.cpp:113
Definition WsfESA_AntennaPattern.hpp:67
WeightingFun mDistribution
The weighting function to be applied.
Definition WsfESA_AntennaPattern.hpp:107
WsfStringId mElementPatternTypeId
Definition WsfESA_AntennaPattern.hpp:122
bool mBackBaffled
Definition WsfESA_AntennaPattern.hpp:103
double mLengthY
Input Y-axis length of the array in meters.
Definition WsfESA_AntennaPattern.hpp:99
int mPhaseNumBits
Quantization of the steering phase.
Definition WsfESA_AntennaPattern.hpp:117
LatticeType mLatticeType
The lattice type (i.e. shape) for element location calculations.
Definition WsfESA_AntennaPattern.hpp:120
~ESA_Data() override=default
double mdX
X-axis element spacing in meters.
Definition WsfESA_AntennaPattern.hpp:96
int mNY
Input Y-axis number of elements.
Definition WsfESA_AntennaPattern.hpp:101
double mFailedRatio
Back baffled array flag, minimum gain is used if Azimuth angles outside +-90 degs.
Definition WsfESA_AntennaPattern.hpp:105
ESA_Data()
Definition WsfESA_AntennaPattern.cpp:654
bool mDebug
Definition WsfESA_AntennaPattern.hpp:125
double mLengthX
Input X-axis length of the array in meters.
Definition WsfESA_AntennaPattern.hpp:98
double mScanExponentX
Azimuth exponent for azimuth distribution function - NOT USED.
Definition WsfESA_AntennaPattern.hpp:114
int mNX
Input X-axis number of elements.
Definition WsfESA_AntennaPattern.hpp:100
TaylorWeightingData mTaylorData
Taylor sidelobe level control data.
Definition WsfESA_AntennaPattern.hpp:109
ESA_Data(const ESA_Data &aSrc)=default
double mdY
Y-axis element spacing in meters.
Definition WsfESA_AntennaPattern.hpp:97
int mAmpNumBits
Quantization of the amplitude weighting.
Definition WsfESA_AntennaPattern.hpp:118
double mScanExponentY
Elevation exponent for elevation distribution function - NOT USED.
Definition WsfESA_AntennaPattern.hpp:115
Definition WsfESA_AntennaPattern.hpp:34
int GetNumberElementsX() const
Definition WsfESA_AntennaPattern.hpp:152
double mLengthY
Current Y-axis length of the array in meters.
Definition WsfESA_AntennaPattern.hpp:189
double mApertureEffY
Definition WsfESA_AntennaPattern.hpp:201
double GetTaylorDataSidelobeLevelY() const
Definition WsfESA_AntennaPattern.hpp:157
double mLengthX
Current X-axis length of the array in meters.
Definition WsfESA_AntennaPattern.hpp:188
WeightingFun
Definition WsfESA_AntennaPattern.hpp:43
@ cWT_Taylor
Definition WsfESA_AntennaPattern.hpp:45
@ cWT_Uniform
Definition WsfESA_AntennaPattern.hpp:46
@ cWT_None
Definition WsfESA_AntennaPattern.hpp:44
double GetTaylorDataN_BarX() const
Definition WsfESA_AntennaPattern.hpp:158
std::vector< double > WeightVec
Definition WsfESA_AntennaPattern.hpp:64
bool IsDistributionTaylor() const
Definition WsfESA_AntennaPattern.hpp:154
static WsfAntennaPattern * ObjectFactory(const std::string &aTypeName)
Definition WsfESA_AntennaPattern.cpp:76
std::vector< Element > ElementVec
Definition WsfESA_AntennaPattern.hpp:63
double GetTaylorDataSidelobeLevelX() const
Definition WsfESA_AntennaPattern.hpp:156
ESA_Data * GetData() const
Definition WsfESA_AntennaPattern.hpp:170
double mApertureEffX
Definition WsfESA_AntennaPattern.hpp:200
int mNX
Current X-axis number of elements.
Definition WsfESA_AntennaPattern.hpp:190
int mNY
Current Y-axis number of elements.
Definition WsfESA_AntennaPattern.hpp:191
int GetAmpNumBits() const
Definition WsfESA_AntennaPattern.hpp:161
bool IsDistributionUniform() const
Definition WsfESA_AntennaPattern.hpp:155
LatticeType
Definition WsfESA_AntennaPattern.hpp:37
@ cLT_TRIANGLULAR
Definition WsfESA_AntennaPattern.hpp:39
@ cLT_RECTANGLULAR
Definition WsfESA_AntennaPattern.hpp:38
double GetElementSpacingY() const
Definition WsfESA_AntennaPattern.hpp:151
WsfESA_AntennaPattern & operator=(const WsfESA_AntennaPattern &aRhs)=delete
Assignment is not supported.
void SetESA_DataPtr(ESA_Data *aESA_DataPtr)
Definition WsfESA_AntennaPattern.hpp:178
ElementVec mElements
Current vector of elements used for pattern calculations.
Definition WsfESA_AntennaPattern.hpp:187
WeightVec mWeightVecX
Definition WsfESA_AntennaPattern.hpp:194
double GetElementSpacingX() const
Definition WsfESA_AntennaPattern.hpp:150
double mApertureEff
Definition WsfESA_AntennaPattern.hpp:198
WeightVec mWeightVecY
Calculated aperture efficiency.
Definition WsfESA_AntennaPattern.hpp:195
int GetPhaseNumBits() const
Definition WsfESA_AntennaPattern.hpp:160
double GetTaylorDataN_BarY() const
Definition WsfESA_AntennaPattern.hpp:159
WsfAntennaPattern * mElementPatternPtr
Definition WsfESA_AntennaPattern.hpp:203
int GetNumberElementsY() const
Definition WsfESA_AntennaPattern.hpp:153
WsfESA_AntennaPattern(ESA_Data *aEsaData=nullptr)
Definition WsfESA_AntennaPattern.cpp:30
The main controller for a simulation.
Definition WsfSimulation.hpp:109
Definition WsfESA_AntennaPattern.hpp:70
double mSidelobeLevelY
Elevation sidelobe level used for weighting functions (ratio).
Definition WsfESA_AntennaPattern.hpp:72
int mN_BarX
Elevation n-bar parameter for Taylor Sidelobe control (n-bar = num sidelobes controlled + 1).
Definition WsfESA_AntennaPattern.hpp:75
void Clear()
Definition WsfESA_AntennaPattern.hpp:80
int mN_BarY
Definition WsfESA_AntennaPattern.hpp:78
double mSidelobeLevelX
Azimuth sidelobe level used for weighting functions (ratio).
Definition WsfESA_AntennaPattern.hpp:71
UtVec2d mNormal
Element normal direction (theta, phi) from the array's reference normal.
Definition WsfESA_AntennaPattern.hpp:60
double mWeight
The weighting array for distribution tapering and failed elements.
Definition WsfESA_AntennaPattern.hpp:59
UtVec3d mLocation
Current Vector of indexed 3D element locations used for pattern calculations.
Definition WsfESA_AntennaPattern.hpp:58
Element()
Definition WsfESA_AntennaPattern.hpp:51