ParametricXMLMieModel.h
Go to the documentation of this file.
1 
9 #ifndef _atm_ParametricXMLMieModel_h_
10 #define _atm_ParametricXMLMieModel_h_
11 
12 
13 #include <atm/VMieModel.h>
14 #include <vector>
15 
16 
17 namespace atm {
18 
20 
21  public:
23  virtual ~ParametricXMLMieModel() { }
24 
26  const utl::Point& xB,
27  const double angle,
28  const double distance,
29  const std::vector<double>& wLength) const;
30 
32  const utl::Point& xB,
33  const double angle,
34  const double distance,
35  const atm::AttenuationResult& mieAttenuation) const;
36 
38  const utl::Point& xFinal,
39  const std::vector<double>& wLength) const;
40 
41  double EvaluateMieScattering(const utl::Point& xA,
42  const utl::Point& xB,
43  const double angle,
44  const double distance,
45  const double wLength) const;
46 
47  double EvaluateMieScattering(const utl::Point& xA,
48  const utl::Point& xB,
49  const double angle,
50  const double distance,
51  const double wLength,
52  const double mieAttenuation) const;
53 
54  double EvaluateMieAttenuation(const utl::Point& xInit,
55  const utl::Point& xFinal,
56  const double wLength) const;
57 
58  double GetVerticalAerosolOpticalDepth(const unsigned int eyeId,
59  const double altitude) const;
60 
61  double GetAttenuationLength(const utl::Point& p,
62  const double wLength) const;
63 
64  //virtual utl::TabulatedFunctionErrors GetAttenuationLength(const utl::Point& p,
65  //const std::vector<double>& wLength) const = 0;
66 
67  double EvaluateScatteringAngle(const utl::Point& p,
68  const double angle,
69  const double wLength) const;
70 
71  void Init();
72 
73  void SetHorizAttLength(const double lMix) { fLMix = lMix; }
74  double GetHorizAttLength() const { return fLMix; }
75 
76  void SetMixHeight(const double hMix) { fHMix = hMix; }
77  double GetMixHeight() const { return fHMix; }
78 
79  void SetScaleHeight(const double hScl) { fHScl = hScl; }
80  double GetScaleHeight() const { return fHScl; }
81 
82  void SetAngstromCoeff(const double gamma) { fGamma = gamma; }
83  double GetAngstromCoeff() const { return fGamma; }
84 
85  void SetGroundHeightASL(const double hGnd) { fHGnd = hGnd; }
86  double GetGroundHeightASL() const { return fHGnd; }
87 
88  bool HasData() const { return true; }
89 
90  private:
92  double fLMix;
93  double fLMixError;
94 
96  double fHMix;
97  double fHMixError;
98 
100  double fHScl;
101  double fHSclError;
102 
104  double fGamma;
105  double fGammaError;
106 
108  double fHGnd;
109 
111  typedef struct PFParameters {
112  double f;
113  double fError;
114  double g;
115  double gError;
116  } PFParameters;
117 
119 
121  };
122 
123 }
124 
125 
126 #endif
127 
128 // Configure (x)emacs for this file ...
129 // Local Variables:
130 // mode: c++
131 // compile-command: "make -C .. -k"
132 // End:
double GetAttenuationLength(const utl::Point &p, const double wLength) const
Horizontal attenuation length (inverse of extinction coefficient). Grows with altitude as aerosol dis...
Base class for a Mie Model.
Definition: VMieModel.h:38
Point object.
Definition: Point.h:32
double fHScl
Scale height of the aerosol &quot;entrainment layer&quot; above the mixing layer.
virtual ~ParametricXMLMieModel()
Destructor - should be virtual for base classes.
void SetAngstromCoeff(const double gamma)
double fGamma
Angstrom exponent of the aerosol scattering wavelength dependence.
void SetMixHeight(const double hMix)
Class holding the output of the ScatteringResult function.
double fHGnd
Prevailing ground height used in the aerosol model.
double GetVerticalAerosolOpticalDepth(const unsigned int eyeId, const double altitude) const
Calculate VAOD at some altitude (w.r.t. sea level) above a given eye.
REGISTER_MODEL(atm::VMieModel,"ParametricXML", ParametricXMLMieModel)
double EvaluateScatteringAngle(const utl::Point &p, const double angle, const double wLength) const
Calculation is done independent of the position and wavelength.
void SetHorizAttLength(const double lMix)
double fHMix
Mixing layer height (w.r.t. prevailing ground level).
void SetGroundHeightASL(const double hGnd)
double fLMix
Mixing layer (i.e., ground-level) horizontal attenuation length.
atm::AttenuationResult EvaluateMieAttenuation(const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const
Calculate the aerosol attenuation between two points.
struct atm::ParametricXMLMieModel::PFParameters PFParameters
Phase function table (modified Henyey-Greenstein function).
Class for computing aerosol scattering and attenuation using simple parameterizations.
bool HasData() const
True if a data source is for the given model.
atm::ScatteringResult EvaluateMieScattering(const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const std::vector< double > &wLength) const
Aerosol scattering fraction in a wavelength band.
Class describing the Atmospheric attenuation.
void SetScaleHeight(const double hScl)
Phase function table (modified Henyey-Greenstein function).

, generated on Tue Sep 26 2023.