HumidAirRayleighModel.h
Go to the documentation of this file.
1 
12 #ifndef _atm_HumidAirRayleighModel_h_
13 #define _atm_HumidAirRayleighModel_h_
14 
15 #include <atm/VRayleighModel.h>
16 #include <vector>
17 
18 namespace atm {
19 
20  class ScatteringResult;
21  class AttenuationResult;
22 
33 
34  public:
35 
37 
38  virtual ~HumidAirRayleighModel() { }
39 
41  const utl::Point& xA,
42  const utl::Point& xB,
43  const double angle,
44  const double distance,
45  const std::vector<double>& wLength) const;
46 
48  const utl::Point& xA,
49  const utl::Point& xB,
50  const double angle,
51  const double distance,
52  const AttenuationResult& raylAtt) const;
53 
55  const utl::Point& xInit,
56  const utl::Point& xFinal,
57  const std::vector<double>& wLength) const;
58 
59  double EvaluateRayleighScattering(const utl::Point& xA,
60  const utl::Point& xB,
61  const double angle,
62  const double distance,
63  double wLength) const;
64 
65  double EvaluateRayleighScattering(const utl::Point& xA,
66  const utl::Point& xB,
67  const double angle,
68  const double distance,
69  const double raylAtt,
70  double wLength) const;
71 
72  double EvaluateRayleighAttenuation(const utl::Point& xInit,
73  const utl::Point& xFinal,
74  double wLength) const;
75 
77  double GetAttenuationLength(const utl::Point& p,
78  const double wLength) const;
79 
80  double EvaluateScatteringAngle(const utl::Point& p,
81  const double angle,
82  const double wLength) const;
83 
84  bool HasData() const {
85  return true;
86  }
87 
88  void Init();
89 
90  private:
91 
93 
94  double KingFactor(const double wl,
95  const double pressure,
96  const double vaporPressure) const;
97 
98  double RayleighCrossSection(const double wl,
99  const double refIndex,
100  const double temperature,
101  const double pressure,
102  const double vaporPressure) const;
103 
105  };
106 
107 } // atm
108 
109 
110 #endif // _atm_HumidAirRayleighModel_h_
111 
bool HasData() const
True if a data source is for the given model.
Model for Rayleigh scattering and attenuation in a humid atmosphere.
Point object.
Definition: Point.h:32
REGISTER_MODEL(atm::VRayleighModel,"HumidAir", HumidAirRayleighModel)
double GetAttenuationLength(const utl::Point &p, const double wLength) const
Attenuation in units of length [1/scattering coefficient].
double EvaluateScatteringAngle(const utl::Point &p, const double angle, const double wLength) const
Base class for an Rayleigh Model.
Class holding the output of the ScatteringResult function.
atm::AttenuationResult EvaluateRayleighAttenuation(const utl::Point &xInit, const utl::Point &xFinal, const std::vector< double > &wLength) const
Calculate the Rayleigh attenuation between two points for a vector of wavelengths.
double RayleighCrossSection(const double wl, const double refIndex, const double temperature, const double pressure, const double vaporPressure) const
atm::ScatteringResult EvaluateRayleighScattering(const utl::Point &xA, const utl::Point &xB, const double angle, const double distance, const std::vector< double > &wLength) const
Calculate the fraction of Rayleigh scattering photons in the beam.
double KingFactor(const double wl, const double pressure, const double vaporPressure) const
Class describing the Atmospheric attenuation.

, generated on Tue Sep 26 2023.