12#ifndef WSFOPTICALATTENUATION_HPP
13#define WSFOPTICALATTENUATION_HPP
15#include "wsf_mil_export.h"
21#include "UtAtmosphere.hpp"
37 Segment(
float aRangeLimit,
float aA,
float aB)
85 :
Table(aSegmentRefs, aSegments)
111 double aAtmosphericAttenuation,
112 UtAtmosphere::AtmosphereType aAtmosphereType);
128 double ComputeSimpleAttenuation(
double aAltitude1,
double aAltitude2,
double aGroundRange);
130 double ComputeCompactAttenuation(
double aAltitude,
131 double aElevationAngle,
133 double aEffectiveEarthRadius,
134 const Table* aTablePtr);
136 void ComputePathAttenuation(
double& aSumAlphaR,
138 double aElevationAngle,
141 double aAirSlantRange,
142 double aEffectiveEarthRadius,
143 const Table* aTablePtr);
145 const Table* FindInternalTable(
const std::string& aTableName)
const;
151 void ProcessQueryCommand(UtInput& aInput);
154 void LoadExternalTable(UtInput& aInput,
const std::string& aTableFileName);
156 void OpticalPathConversion(UtInput& aInput);
160 void SpectralDataConversion(UtInput& aInput);
162 void ProcessAltitude(std::ofstream& aCodeOfs,
163 std::ofstream& aTableOfs,
164 std::ofstream& aPlotOfs,
166 const std::vector<double>& aRangeValues,
167 const std::vector<double>& aTransmittanceValues,
169 std::vector<SegmentRef>& aSegmentRefs,
170 std::vector<Segment>& aSegments,
171 double aMaximumAbsoluteError,
172 double aMaximumRelativeError,
173 int aMaximumSegmentCount)
const;
175 void GenerateSegments(
const std::vector<double>& aRangeValues,
176 const std::vector<double>& aTransmittanceValues,
177 const std::vector<double>& aAlphaValues,
178 const std::vector<double>& aLnRangeValues,
179 const std::vector<double>& aLnAlphaValues,
180 double aMaximumAbsoluteError,
181 double aMaximumRelativeError,
182 int aMaximumSegmentCount,
183 bool aOnlyUseConstantAlpha,
184 std::vector<Segment>& aSegments)
const;
186 size_t TestStraightLineFit(
const std::vector<double>& aRangeValues,
187 const std::vector<double>& aTransmittanceValues,
192 double aMaximumAbsoluteError,
193 double aMaximumRelativeError)
const;
195 void StraightLineFit(
const std::vector<double>& aX,
196 const std::vector<double>& aY,
203 double& aChi2)
const;
214 int mAtmosphereModel;
220 double mAdjustmentFactor;
223 const Table* mTablePtr;
226 std::shared_ptr<TableX> mExternalTablePtr;
232 double mSimpleAttenuation;
233 UtAtmosphere mAtmosphere;
WsfEM_Attenuation()
Definition WsfEM_Attenuation.cpp:25
virtual double ComputeAttenuationFactor(WsfEM_Interaction &aInteraction, WsfEnvironment &aEnvironment, WsfEM_Interaction::Geometry aGeometry)
Definition WsfEM_Attenuation.cpp:94
virtual bool Initialize(WsfEM_XmtrRcvr *aXmtrRcvrPtr)
Definition WsfEM_Attenuation.cpp:48
bool ProcessInput(UtInput &aInput) override
Definition WsfEM_Attenuation.cpp:66
WsfEM_Attenuation * Clone() const override=0
Definition WsfEM_Interaction.hpp:68
Geometry
Definition WsfEM_Interaction.hpp:93
Definition WsfEM_XmtrRcvr.hpp:42
Definition WsfEnvironment.hpp:37
Definition WsfOpticalAttenuation.hpp:50
SegmentRef(float aAltitude, unsigned int aIndex)
Definition WsfOpticalAttenuation.hpp:57
SegmentRef()
Definition WsfOpticalAttenuation.hpp:52
unsigned int mIndex
Definition WsfOpticalAttenuation.hpp:64
float mAltitude
Definition WsfOpticalAttenuation.hpp:63
Definition WsfOpticalAttenuation.hpp:29
float mB
Definition WsfOpticalAttenuation.hpp:46
float mA
Definition WsfOpticalAttenuation.hpp:45
float mRangeLimit
Definition WsfOpticalAttenuation.hpp:44
Segment()
Definition WsfOpticalAttenuation.hpp:31
Segment(float aRangeLimit, float aA, float aB)
Definition WsfOpticalAttenuation.hpp:37
const char * mTableNamePtr
Definition WsfOpticalAttenuation.hpp:105
const Table * mTablePtr
Definition WsfOpticalAttenuation.hpp:106
TableRef(const char *aTableNamePtr, const Table *aTablePtr)
Definition WsfOpticalAttenuation.hpp:99
~TableX() override
Definition WsfOpticalAttenuation.hpp:89
TableX(const SegmentRef *aSegmentRefs, const Segment *aSegments)
Definition WsfOpticalAttenuation.hpp:84
Definition WsfOpticalAttenuation.hpp:68
const SegmentRef * mSegmentRefs
Definition WsfOpticalAttenuation.hpp:77
Table(const SegmentRef *aSegmentRefs, const Segment *aSegments)
Definition WsfOpticalAttenuation.hpp:70
const Segment * mSegments
Definition WsfOpticalAttenuation.hpp:78
~WsfOpticalAttenuation() override=default
static std::function< WsfEM_Attenuation *(const std::string &)> GetObjectFactory(WsfScenario &aScenario)
Definition WsfOpticalAttenuation.cpp:149
WsfOpticalAttenuation(const WsfScenario &aScenario)
Definition WsfOpticalAttenuation.cpp:90
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111