WSF
WsfEM_ITU_Attenuation.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 WSFEM_ITU_ATTENUATION_HPP
13#define WSFEM_ITU_ATTENUATION_HPP
14
15#include "wsf_export.h"
16
17#include <functional>
18#include <vector>
19
20#include "UtAtmosphere.hpp"
21#include "WsfEM_Attenuation.hpp"
22#include "WsfEM_Types.hpp"
23
34{
35public:
36 WsfEM_ITU_Attenuation(const UtAtmosphere& aAtm);
39 WsfEM_Attenuation* Clone() const override;
40
41 static std::function<WsfEM_Attenuation*(const std::string&)> GetObjectFactory(WsfScenario& aScenario);
42
43 bool ProcessInput(UtInput& aInput) override;
44
45 bool AcceptsInlineBlockInput() const override { return true; }
46
47 // Override of base class method.
49 WsfEnvironment& aEnvironment,
50 WsfEM_Interaction::Geometry aGeometry) override;
51
52 double ComputeAttenuationFactor(double aRange,
53 double aElevation,
54 double aAltitude,
55 double aFrequency,
56 WsfEM_Types::Polarization aPolarization,
57 double aEarthRadiusMultiplier,
58 WsfEnvironment& aEnvironment);
59
60 static double
61 ComputeGasSpecificAttenuation(double aFrequency, double aPressure, double aTemperature, double aWaterVaporDensity);
62
63 static double ComputeCloudSpecificAttenuation(double aFrequency, double aTemperature, double aWaterDensity);
64
65 static double ComputeRainSpecificAttenuation(double aFrequency, WsfEM_Types::Polarization aPolarization, double aRainRate);
66
67 static void PlotGasFigure1();
68 static void PlotGasFigure2();
69 static void PlotGasFigure3();
70
71 static void PlotCloudFigure1();
72
73private:
74 static void ComputeAtmosphereData(UtAtmosphere& aAtmosphere,
75 double aAltitude,
76 double& aPressure,
77 double& aTemperature,
78 double& aWaterVaporDensity);
79
80 void GenerateTable(double aFrequency, WsfEM_Types::Polarization aPolarization, WsfEnvironment& aEnvironment);
81
83 UtAtmosphere mAtmosphere;
84
86 double mFrequency;
87
89 struct Point
90 {
91 double mAltitude;
92 double mGamma;
93 };
94 std::vector<Point> mGammaTable;
95};
96
97#endif
#define WSF_EXPORT
Definition WsfXIO_Export.hpp:35
WsfEM_Attenuation()
Definition WsfEM_Attenuation.cpp:25
virtual double ComputeAttenuationFactor(WsfEM_Interaction &aInteraction, WsfEnvironment &aEnvironment, WsfEM_Interaction::Geometry aGeometry)
Definition WsfEM_Attenuation.cpp:94
bool ProcessInput(UtInput &aInput) override
Definition WsfEM_Attenuation.cpp:66
WsfEM_Attenuation * Clone() const override=0
WsfEM_ITU_Attenuation & operator=(const WsfEM_ITU_Attenuation &aRhs)=delete
bool AcceptsInlineBlockInput() const override
Definition WsfEM_ITU_Attenuation.hpp:45
WsfEM_ITU_Attenuation(const UtAtmosphere &aAtm)
Definition WsfEM_ITU_Attenuation.cpp:72
static std::function< WsfEM_Attenuation *(const std::string &)> GetObjectFactory(WsfScenario &aScenario)
Definition WsfEM_ITU_Attenuation.cpp:64
Definition WsfEM_Interaction.hpp:68
Geometry
Definition WsfEM_Interaction.hpp:93
Definition WsfEnvironment.hpp:37
Contains the data required to create a simulation, and acts as the entry point for input file process...
Definition WsfScenario.hpp:111
Polarization
Polarization of the electromagnetic wave.
Definition WsfEM_Types.hpp:21
Copyrights Multiple, All Rights Reserved