WSF
WsfESA_NX_AntennaPattern.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 WSFESA_NX_ANTENNAPATTERN_HPP
13#define WSFESA_NX_ANTENNAPATTERN_HPP
14
15#include <map>
16
17class UtInput;
18
19#include "WsfAntennaPattern.hpp"
21#include "WsfObject.hpp"
22
34
36{
37public:
39 {
40 double X_Ratio;
41 double Y_Ratio;
42 };
43
44 using ArraySplitRatios = std::map<int, ArraySubDivideRatios>;
45
47 {
48 public:
50 ESA_NX_Data(const ESA_NX_Data& aSrc) = default;
51 ~ESA_NX_Data() override = default;
52
53 bool ProcessInput(WsfAntennaPattern& aAntennaPattern, UtInput& aInput) override;
54 bool Initialize(WsfAntennaPattern& aAntennaPattern) override;
55
56 void GetArraySplitRatios(unsigned int aBeamCount, double& aX_SplitRatio, double& aY_SplitRatio);
57
60
63
65 };
66
68 ~WsfESA_NX_AntennaPattern() override = default;
69
70 static WsfAntennaPattern* ObjectFactory(const std::string& aTypeName);
71
72 WsfAntennaPattern* Clone() const override;
73
74 bool Initialize(WsfSimulation* aSimulationPtr) override;
75
76 void SetAntennaBeamCount(unsigned int aBeamCount) override;
77
82 double GetEdgeAngleX() const { return NX_Data()->mEdgeAngleX; }
83 double GetEdgeAngleY() const { return NX_Data()->mEdgeAngleY; }
84 double GetElementSpacingX() const { return NX_Data()->mdX; }
85 double GetElementSpacingY() const { return NX_Data()->mdY; }
86 int GetNumberElementsX() const { return NX_Data()->mNX; }
87 int GetNumberElementsY() const { return NX_Data()->mNY; }
92 double GetTaylorDataN_BarX() const { return NX_Data()->mTaylorData.mN_BarX; }
93 double GetTaylorDataN_BarY() const { return NX_Data()->mTaylorData.mN_BarY; }
94 int GetPhaseNumBits() const { return NX_Data()->mPhaseNumBits; }
95 int GetAmpNumBits() const { return NX_Data()->mAmpNumBits; }
97
98protected:
99 ESA_NX_Data* NX_Data() const { return dynamic_cast<ESA_NX_Data*>(GetData()); }
100
102
105
106 double ComputeDirectivityGain(double aFrequency, double aEBS_Az, double aEBS_El) const override;
107
108 void ResizeArray() override;
109 void AdjustElementLocations() override;
110
111private:
112 WsfSimulation* mSimulationPtr;
113
115 unsigned int mAntennaBeamCount;
117};
118
119#endif
WsfAntennaPattern()
Definition WsfAntennaPattern.cpp:25
Definition WsfESA_AntennaPattern.hpp:67
WeightingFun mDistribution
The weighting function to be applied.
Definition WsfESA_AntennaPattern.hpp:107
int mPhaseNumBits
Quantization of the steering phase.
Definition WsfESA_AntennaPattern.hpp:117
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
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
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
@ cWT_Taylor
Definition WsfESA_AntennaPattern.hpp:45
@ cWT_Uniform
Definition WsfESA_AntennaPattern.hpp:46
ESA_Data * GetData() const
Definition WsfESA_AntennaPattern.hpp:170
WsfESA_AntennaPattern(ESA_Data *aEsaData=nullptr)
Definition WsfESA_AntennaPattern.cpp:30
Definition WsfESA_NX_AntennaPattern.hpp:47
bool ProcessInput(WsfAntennaPattern &aAntennaPattern, UtInput &aInput) override
Definition WsfESA_NX_AntennaPattern.cpp:169
ESA_NX_Data()
Definition WsfESA_NX_AntennaPattern.cpp:158
bool Initialize(WsfAntennaPattern &aAntennaPattern) override
Definition WsfESA_NX_AntennaPattern.cpp:223
double mEdgeAngleX
The elevation lean angle of the area, effectively create a trapezoid (radians).
Definition WsfESA_NX_AntennaPattern.hpp:59
double mEdgeAngleY
Definition WsfESA_NX_AntennaPattern.hpp:62
ESA_NX_Data(const ESA_NX_Data &aSrc)=default
void GetArraySplitRatios(unsigned int aBeamCount, double &aX_SplitRatio, double &aY_SplitRatio)
The azimuth lean angle of the area, effectively create a trapezoid (radians).
Definition WsfESA_NX_AntennaPattern.cpp:228
ArraySplitRatios mArraySplitRatios
Map of beam count to beam splitting ratios.
Definition WsfESA_NX_AntennaPattern.hpp:64
Definition WsfESA_NX_AntennaPattern.hpp:36
static WsfAntennaPattern * ObjectFactory(const std::string &aTypeName)
Definition WsfESA_NX_AntennaPattern.cpp:38
bool IsDistributionUniform() const
Definition WsfESA_NX_AntennaPattern.hpp:89
ESA_NX_Data * NX_Data() const
Definition WsfESA_NX_AntennaPattern.hpp:99
double GetTaylorDataSidelobeLevelY() const
Definition WsfESA_NX_AntennaPattern.hpp:91
bool IsDistributionTaylor() const
Definition WsfESA_NX_AntennaPattern.hpp:88
std::map< int, ArraySubDivideRatios > ArraySplitRatios
Definition WsfESA_NX_AntennaPattern.hpp:44
~WsfESA_NX_AntennaPattern() override=default
WsfAntennaPattern * Clone() const override
Definition WsfESA_NX_AntennaPattern.cpp:49
void ResizeArray() override
Definition WsfESA_NX_AntennaPattern.cpp:93
int GetNumberElementsX() const
Definition WsfESA_NX_AntennaPattern.hpp:86
double GetTaylorDataSidelobeLevelX() const
Definition WsfESA_NX_AntennaPattern.hpp:90
double GetElementSpacingX() const
Definition WsfESA_NX_AntennaPattern.hpp:84
double GetTaylorDataN_BarY() const
Definition WsfESA_NX_AntennaPattern.hpp:93
double GetEdgeAngleX() const
Definition WsfESA_NX_AntennaPattern.hpp:82
int GetPhaseNumBits() const
Definition WsfESA_NX_AntennaPattern.hpp:94
int GetAmpNumBits() const
Definition WsfESA_NX_AntennaPattern.hpp:95
bool Initialize(WsfSimulation *aSimulationPtr) override
Definition WsfESA_NX_AntennaPattern.cpp:58
double GetElementSpacingY() const
Definition WsfESA_NX_AntennaPattern.hpp:85
double GetTaylorDataN_BarX() const
Definition WsfESA_NX_AntennaPattern.hpp:92
int GetNumberElementsY() const
Definition WsfESA_NX_AntennaPattern.hpp:87
WsfESA_NX_AntennaPattern & operator=(const WsfESA_NX_AntennaPattern &aRhs)=delete
Assignment is not supported.
void SetAntennaBeamCount(unsigned int aBeamCount) override
Definition WsfESA_NX_AntennaPattern.cpp:80
void AdjustElementLocations() override
Definition WsfESA_NX_AntennaPattern.cpp:114
double ComputeDirectivityGain(double aFrequency, double aEBS_Az, double aEBS_El) const override
Definition WsfESA_NX_AntennaPattern.cpp:146
WsfESA_NX_AntennaPattern()
Definition WsfESA_NX_AntennaPattern.cpp:20
double GetEdgeAngleY() const
Definition WsfESA_NX_AntennaPattern.hpp:83
The main controller for a simulation.
Definition WsfSimulation.hpp:109
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
int mN_BarY
Definition WsfESA_AntennaPattern.hpp:78
double mSidelobeLevelX
Azimuth sidelobe level used for weighting functions (ratio).
Definition WsfESA_AntennaPattern.hpp:71
Definition WsfESA_NX_AntennaPattern.hpp:39
double Y_Ratio
Definition WsfESA_NX_AntennaPattern.hpp:41
double X_Ratio
Definition WsfESA_NX_AntennaPattern.hpp:40
Copyrights Multiple, All Rights Reserved