Canoe
Comprehensive Atmosphere N' Ocean Engine
mwr_absorbers.hpp
Go to the documentation of this file.
1 
13 #ifndef SRC_OPACITY_MICROWAVE_MWR_ABSORBERS_HPP_
14 #define SRC_OPACITY_MICROWAVE_MWR_ABSORBERS_HPP_
15 
16 // C++
17 #include <string>
18 #include <vector>
19 
20 // opacity
21 #include <opacity/absorber.hpp>
22 
23 class MeshBlock;
24 
25 namespace GiantPlanets {
26 
27 class MwrAbsorberCIA : public Absorber {
28  public:
29  MwrAbsorberCIA() : Absorber("CIA") {}
30 
31  void CheckFail() const override;
32  Real GetAttenuation(Real wave1, Real wave2,
33  AirParcel const& var) const override;
34 };
35 
36 class MwrAbsorberNH3 : public Absorber {
37  public:
38  MwrAbsorberNH3() : Absorber("NH3") {}
39 
41  model_name_ = "Hanley09";
42  return *this;
43  }
45  model_name_ = "Bellotti16";
46  return *this;
47  }
49  model_name_ = "BellottiSwitch16";
50  return *this;
51  }
53  model_name_ = "Devaraj";
54  return *this;
55  }
57  model_name_ = "Radtran";
58  return *this;
59  }
60 
61  void CheckFail() const override;
62  Real GetAttenuation(Real wave1, Real wave2,
63  AirParcel const& var) const override;
64 };
65 
66 class MwrAbsorberPH3 : public Absorber {
67  public:
68  MwrAbsorberPH3() : Absorber("PH3") {}
69 
71  model_name_ = "Radtran";
72  return *this;
73  }
75  model_name_ = "Hoffman";
76  return *this;
77  }
78 
79  Real GetAttenuation(Real wave1, Real wave2, AirParcel const& var) const;
80 };
81 
82 class MwrAbsorberH2O : public Absorber {
83  public:
85  MwrAbsorberH2O() : Absorber("H2O") {}
86 
88  model_name_ = "deBoer";
89  return *this;
90  }
92  model_name_ = "Waters";
93  return *this;
94  }
96  model_name_ = "Goodman";
97  return *this;
98  }
100  model_name_ = "Karpowicz";
101  return *this;
102  }
103 
104  void CheckFail() const override;
105  Real GetAttenuation(Real wave1, Real wave2,
106  AirParcel const& var) const override;
107 };
108 
109 class MwrAbsorberH2S : public Absorber {
110  public:
111  MwrAbsorberH2S() : Absorber("H2S") {}
112 
113  Real GetAttenuation(Real wave1, Real wave2, AirParcel const& var) const;
114 };
115 
117  public:
118  MwrAbsorberElectron() : Absorber("Electron") {}
119 
121  model_name_ = "AppletonHartree";
122  return *this;
123  }
124 
126  model_name_ = "ChengLi";
127  return *this;
128  }
130  model_name_ = "Reference";
131  return *this;
132  }
133 
134  Real GetAttenuation(Real wave1, Real wave2, AirParcel const& var) const;
135 };
136 
137 } // namespace GiantPlanets
138 
139 #endif // SRC_OPACITY_MICROWAVE_MWR_ABSORBERS_H_
base class of all absorbers
Definition: absorber.hpp:25
std::string model_name_
absorption model model
Definition: absorber.hpp:64
void CheckFail() const override
This function fails if the check fails.
Real GetAttenuation(Real wave1, Real wave2, AirParcel const &var) const override
Get attenuation coefficient [1/m].
MwrAbsorberElectron & SetModelChengLi()
MwrAbsorberElectron & SetModelReference()
Real GetAttenuation(Real wave1, Real wave2, AirParcel const &var) const
Get attenuation coefficient [1/m].
MwrAbsorberElectron & SetModelAppletonHartree()
MwrAbsorberH2O & SetModelGoodman()
MwrAbsorberH2O & SetModeldeBoer()
MwrAbsorberH2O & SetModelKarpowicz()
void CheckFail() const override
This function fails if the check fails.
MwrAbsorberH2O & SetModelWaters()
Real GetAttenuation(Real wave1, Real wave2, AirParcel const &var) const override
Get attenuation coefficient [1/m].
Real GetAttenuation(Real wave1, Real wave2, AirParcel const &var) const
Get attenuation coefficient [1/m].
void CheckFail() const override
This function fails if the check fails.
MwrAbsorberNH3 & SetModelHanley()
Real GetAttenuation(Real wave1, Real wave2, AirParcel const &var) const override
Get attenuation coefficient [1/m].
MwrAbsorberNH3 & SetModelDevaraj()
MwrAbsorberNH3 & SetModelBellotti()
MwrAbsorberNH3 & SetModelRadtran()
MwrAbsorberNH3 & SetModelBellottiSwitch()
MwrAbsorberPH3 & SetModelRadtran()
MwrAbsorberPH3 & SetModelHoffman()
Real GetAttenuation(Real wave1, Real wave2, AirParcel const &var) const
Get attenuation coefficient [1/m].