NonParametricXMLMieModel.h
Go to the documentation of this file.
1 
9 #ifndef _atm_NonParametricXMLMieModel_h_
10 #define _atm_NonParametricXMLMieModel_h_
11 
12 #include <atm/VMieModel.h>
13 #include <utl/ShadowPtr.h>
14 #include <utl/TabulatedFunction.h>
15 
16 #include <vector>
17 
18 namespace atm {
19 
21 
22  public:
25 
27  const utl::Point& xB,
28  const double angle,
29  const double distance,
30  const std::vector<double>& wLength) const;
31 
33  const utl::Point& xB,
34  const double angle,
35  const double distance,
36  const atm::AttenuationResult& mieAttenuation) const;
37 
39  const utl::Point& xFinal,
40  const std::vector<double>& wLength) const;
41 
42  double EvaluateMieScattering(const utl::Point& xA,
43  const utl::Point& xB,
44  const double angle,
45  const double distance,
46  const double wLength) const;
47 
48  double EvaluateMieScattering(const utl::Point& xA,
49  const utl::Point& xB,
50  const double angle,
51  const double distance,
52  const double wLength,
53  const double mieAttenuation) const;
54 
55  double EvaluateMieAttenuation(const utl::Point& xInit,
56  const utl::Point& xFinal,
57  const double wLength) const;
58 
59  double GetVerticalAerosolOpticalDepth(const unsigned int eyeId,
60  const double altitude) const;
61 
62  double GetAttenuationLength(const utl::Point& p,
63  const double wLength) const;
64 
65  double EvaluateScatteringAngle(const utl::Point& p,
66  const double angle,
67  const double wLength) const;
68 
69  void Init();
70 
71  bool HasData() const { return true; }
72 
74  void SetOpticalDepth(const utl::TabulatedFunction& vaod, const utl::TabulatedFunction& alpha);
75 
77  typedef std::vector<double> PhaseFunction;
78 
80  void SetPhaseFunction(const PhaseFunction& phaseFunc);
81  private:
82 
85 
88 
91 
93  double fGamma;
94  double fGammaError;
95 
97  };
98 
99 }
100 
101 #endif
102 
std::vector< double > PhaseFunction
Phase function table (arbitrary angular binning between 0, 180 degrees)
Base class for a Mie Model.
Definition: VMieModel.h:38
Point object.
Definition: Point.h:32
Class to hold collection (x,y) points and provide interpolation between them.
double GetAttenuationLength(const utl::Point &p, const double wLength) const
Horizontal attenuation length (inverse of extinction coefficient). Grows with altitude as aerosol dis...
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.
utl::ShadowPtr< utl::TabulatedFunction > fAlphaVsHeight
Aerosol extinction coefficient vs. height.
Class holding the output of the ScatteringResult function.
double EvaluateScatteringAngle(const utl::Point &p, const double angle, const double wLength) const
Calculation is done independent of the position and wavelength.
REGISTER_MODEL(atm::VMieModel,"NonParametricXML", NonParametricXMLMieModel)
double fGamma
Angstrom exponent of the aerosol scattering wavelength dependence.
utl::ShadowPtr< utl::TabulatedFunction > fVAODVsHeight
Vertical aerosol optical depth vs. height.
void SetPhaseFunction(const PhaseFunction &phaseFunc)
Override the XML config phase function, which should be a function of arbitrary binning from 0 to 180...
virtual ~NonParametricXMLMieModel()
Destructor - should be virtual for base classes.
atm::AttenuationResult EvaluateMieAttenuation(const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const
Calculate the aerosol attenuation between two points.
double GetVerticalAerosolOpticalDepth(const unsigned int eyeId, const double altitude) const
Calculate VAOD at some altitude (w.r.t. sea level) above a given eye.
bool HasData() const
True if a data source is for the given model.
void SetOpticalDepth(const utl::TabulatedFunction &vaod, const utl::TabulatedFunction &alpha)
Override the XML config aerosol profile (use a function of height above sea level) ...
Class describing the Atmospheric attenuation.
PhaseFunction fPF
Phase function table (arbitrary angular binning between 0, 180 degrees)

, generated on Tue Sep 26 2023.