ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_WSM6.H
Go to the documentation of this file.
1 #ifndef ERF_WSM6_H
2 #define ERF_WSM6_H
3 
4 #include <memory>
5 #include <string>
6 #include <vector>
7 
8 #include <AMReX_FArrayBox.H>
9 #include <AMReX_Geometry.H>
10 #include <AMReX_MultiFabUtil.H>
11 
12 #include "ERF_Constants.H"
14 #include "ERF_DataStruct.H"
15 #include "ERF_IndexDefines.H"
16 #include "ERF_MicrophysicsUtils.H"
17 #include "ERF_NullMoist.H"
19 
20 namespace MicVar_WSM6 {
21  enum {
22  rho = 0,
26  qv,
27  qc,
28  qi,
29  qr,
30  qs,
31  qg,
35  NumVars
36  };
37 }
38 
39 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
41  const amrex::Array4<const amrex::Real>& states,
42  const amrex::Array4<const amrex::Real>& base,
43  const amrex::Array4<amrex::Real>& rho,
44  const amrex::Array4<amrex::Real>& theta,
45  const amrex::Array4<amrex::Real>& tabs,
46  const amrex::Array4<amrex::Real>& pres,
47  const amrex::Array4<amrex::Real>& qv,
48  const amrex::Array4<amrex::Real>& qc,
49  const amrex::Array4<amrex::Real>& qi,
50  const amrex::Array4<amrex::Real>& qr,
51  const amrex::Array4<amrex::Real>& qs,
52  const amrex::Array4<amrex::Real>& qg,
53  const amrex::Real rdOcp,
54  const bool use_anelastic_reference_pressure,
55  const int i, const int j, const int k) noexcept
56 {
57  const amrex::Real rho_value = states(i,j,k,Rho_comp);
58  const amrex::Real rho_theta = states(i,j,k,RhoTheta_comp);
59  rho(i,j,k) = rho_value;
60  theta(i,j,k) = rho_theta / rho_value;
61  qv(i,j,k) = amrex::max(amrex::Real(0.0), states(i,j,k,RhoQ1_comp) / rho_value);
62  qc(i,j,k) = amrex::max(amrex::Real(0.0), states(i,j,k,RhoQ2_comp) / rho_value);
63  qi(i,j,k) = amrex::max(amrex::Real(0.0), states(i,j,k,RhoQ3_comp) / rho_value);
64  qr(i,j,k) = amrex::max(amrex::Real(0.0), states(i,j,k,RhoQ4_comp) / rho_value);
65  qs(i,j,k) = amrex::max(amrex::Real(0.0), states(i,j,k,RhoQ5_comp) / rho_value);
66  qg(i,j,k) = amrex::max(amrex::Real(0.0), states(i,j,k,RhoQ6_comp) / rho_value);
67 
68  const amrex::Real p0 = use_anelastic_reference_pressure
69  ? base(i,j,k,BaseState::p0_comp) : amrex::Real(0.0);
71  rho_value, rho_theta, qv(i,j,k), rdOcp,
72  use_anelastic_reference_pressure, p0);
73  tabs(i,j,k) = thermo.temperature;
74  pres(i,j,k) = thermo.pressure_pa;
75 }
76 
77 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
79  const amrex::Real rho,
80  const amrex::Real temperature,
81  const amrex::Real pressure,
82  const amrex::Real qv,
83  const amrex::Real configured_rdOcp,
84  const bool use_anelastic_reference_pressure) noexcept
85 {
86  return use_anelastic_reference_pressure
87  ? getThgivenTandP(temperature, pressure, configured_rdOcp)
88  : getThgivenRandT(rho, temperature, RdoCp, qv);
89 }
90 
91 AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE
93  const amrex::Array4<amrex::Real>& states,
94  const amrex::Array4<amrex::Real>& theta,
95  const amrex::Array4<const amrex::Real>& rho,
96  const amrex::Array4<const amrex::Real>& tabs,
97  const amrex::Array4<const amrex::Real>& pres,
98  const amrex::Array4<const amrex::Real>& qv,
99  const amrex::Array4<const amrex::Real>& qc,
100  const amrex::Array4<const amrex::Real>& qi,
101  const amrex::Array4<const amrex::Real>& qr,
102  const amrex::Array4<const amrex::Real>& qs,
103  const amrex::Array4<const amrex::Real>& qg,
104  const bool use_anelastic_reference_pressure,
105  const amrex::Real rdOcp,
106  const int i, const int j, const int k) noexcept
107 {
109  rho(i,j,k), tabs(i,j,k), pres(i,j,k), qv(i,j,k), rdOcp,
110  use_anelastic_reference_pressure);
111  theta(i,j,k) = theta_value;
112  states(i,j,k,RhoTheta_comp) = rho(i,j,k) * theta_value;
113  states(i,j,k,RhoQ1_comp) = rho(i,j,k) * amrex::max(amrex::Real(0), qv(i,j,k));
114  states(i,j,k,RhoQ2_comp) = rho(i,j,k) * amrex::max(amrex::Real(0), qc(i,j,k));
115  states(i,j,k,RhoQ3_comp) = rho(i,j,k) * amrex::max(amrex::Real(0), qi(i,j,k));
116  states(i,j,k,RhoQ4_comp) = rho(i,j,k) * amrex::max(amrex::Real(0), qr(i,j,k));
117  states(i,j,k,RhoQ5_comp) = rho(i,j,k) * amrex::max(amrex::Real(0), qs(i,j,k));
118  states(i,j,k,RhoQ6_comp) = rho(i,j,k) * amrex::max(amrex::Real(0), qg(i,j,k));
119 }
120 
121 class WSM6 : public NullMoist {
122  using FabPtr = std::shared_ptr<amrex::MultiFab>;
123 
124 public:
125  WSM6() {}
126  virtual ~WSM6() = default;
127 
128  void Define(SolverChoice& sc) override
129  {
131  m_rdOcp = sc.rdOcp;
133  m_axis = sc.ave_plane;
134  m_do_cond = (!sc.uses_shoc_family());
135  }
136 
137  // WSM6 module parameter constants (Fortran: parameter, private)
138  static constexpr amrex::Real dtcldcr = amrex::Real(120.0);
139  static constexpr amrex::Real n0r = amrex::Real(8.0e6);
140  static constexpr amrex::Real avtr = amrex::Real(841.9);
141  static constexpr amrex::Real bvtr = amrex::Real(0.8);
142  static constexpr amrex::Real r0 = amrex::Real(0.8e-5);
143  static constexpr amrex::Real peaut = amrex::Real(0.55);
144  static constexpr amrex::Real xncr = amrex::Real(3.0e8);
145  static constexpr amrex::Real xmyu = amrex::Real(1.718e-5);
146  static constexpr amrex::Real avts = amrex::Real(11.72);
147  static constexpr amrex::Real bvts = amrex::Real(0.41);
148  static constexpr amrex::Real lamdarmax = amrex::Real(8.0e4);
149  static constexpr amrex::Real lamdasmax = amrex::Real(1.0e5);
150  static constexpr amrex::Real dicon = amrex::Real(11.9);
151  static constexpr amrex::Real dimax = amrex::Real(500.0e-6);
152  static constexpr amrex::Real pfrz1 = amrex::Real(100.0);
153  static constexpr amrex::Real pfrz2 = amrex::Real(0.66);
154  static constexpr amrex::Real qcrmin = amrex::Real(1.0e-9);
155  static constexpr amrex::Real eacrc = amrex::Real(1.0);
156  static constexpr amrex::Real dens_snow = amrex::Real(100.0);
157  static constexpr amrex::Real qs0 = amrex::Real(6.0e-4);
158  static constexpr amrex::Real n0smax = amrex::Real(1.0e11);
159  static constexpr amrex::Real n0s = amrex::Real(2.0e6);
160  static constexpr amrex::Real alpha_wsm6 = amrex::Real(0.12);
161 
162  void Init(const amrex::MultiFab& cons_in,
163  const amrex::BoxArray& grids,
164  const amrex::Geometry& geom,
165  const amrex::Real& dt_advance,
166  std::unique_ptr<amrex::MultiFab>& z_phys_nd,
167  std::unique_ptr<amrex::MultiFab>& detJ_cc) override;
168 
169  void Set_dzmin(const amrex::Real dz_min) override { m_dzmin = dz_min; }
170 
171  void Copy_State_to_Micro(const amrex::MultiFab& cons_in) override;
172  void Copy_State_to_Micro(const amrex::MultiFab& cons_in,
173  const amrex::MultiFab* base_state);
174  void Copy_Micro_to_State(amrex::MultiFab& cons_in) override;
175 
176  void Update_Micro_Vars(amrex::MultiFab& cons_in,
177  const amrex::MultiFab* base_state) override;
178 
179  void Update_Micro_Vars(amrex::MultiFab& cons_in) override
180  {
181  Copy_State_to_Micro(cons_in);
182  }
183 
184  void Update_State_Vars(amrex::MultiFab& cons_in,
185  const amrex::MultiFab& /*z_phys_nd*/) override
186  {
187  Copy_Micro_to_State(cons_in);
188  }
189 
190  void Advance(const amrex::Real& dt_advance,
191  const SolverChoice& solverChoice) override;
192 
193  amrex::MultiFab* Qmoist_Ptr(const int& varIdx) override
194  {
196  return mic_fab_vars[MicVarMap[varIdx]].get();
197  }
198 
199  int Qmoist_Size() override { return m_qmoist_size; }
200  int Qstate_Moist_Size() override { return n_qstate_moist_size; }
202 
204  std::vector<int>& a_idx,
205  std::vector<std::string>& a_names) const override
206  {
207  a_idx = {0, 1, 2};
208  a_names = {"RainAccum", "SnowAccum", "GraupAccum"};
209  }
210 
212  Get_Surface_Precip_Accumulation_Ptrs (const int&) const override
213  {
215  sources.total = {mic_fab_vars[MicVar_WSM6::rain_accum].get(), rhoh2o / amrex::Real(1000.0)};
216  sources.snow = {mic_fab_vars[MicVar_WSM6::snow_accum].get(), rhoh2o / amrex::Real(1000.0)};
217  sources.graupel = {mic_fab_vars[MicVar_WSM6::graup_accum].get(), rhoh2o / amrex::Real(1000.0)};
218  return sources;
219  }
220 
221 private:
222  int m_qmoist_size = 3;
225 
226  amrex::Vector<int> MicVarMap;
227 
228  amrex::Geometry m_geom;
231  int nlev{0}, zlo{0}, zhi{0};
232  int m_axis{2};
233  bool m_do_cond{true};
235  MoistureType m_moisture_type{MoistureType::None};
236 
237  amrex::MultiFab* m_z_phys_nd{nullptr};
238  amrex::MultiFab* m_detJ_cc{nullptr};
239 
240  amrex::Array<FabPtr, MicVar_WSM6::NumVars> mic_fab_vars;
241 
242  // ---- WSM6 init coefficients (from mp_wsm6_init save variables) ----
243  // hail_opt-dependent (set in Initialize() based on m_hail_opt)
244  bool m_hail_opt{false};
246 
247  void initialize_coeffs();
248 
249  // Derived coefficients (computed in initialize_coeffs(), called from Init())
267 };
268 
269 namespace WSM6Ind {
270  enum {
271  // --- inout state (mirrors mp_wsm6_run arguments) ---
272  t = 0,
273  q,
274  qc,
275  qi,
276  qr,
277  qs,
278  qg,
280  p,
282 
283  // --- sedimentation working arrays ---
292 
293  // --- microphysics process rates ---
321 
322  // --- derived thermodynamic fields ---
324  xl,
334 
335  // --- multi-component arrays expanded from Fortran dimension(:,:,N) ---
336  // rh/qsat: N=2, w=over liquid(1), i=over ice(2) — matches Morrison qsatw/qsati
337  // slope/fall/qrs/falk/work1: N=3, _r=rain(1) _s=snow(2) _g=graupel(3)
338  // workdiff: w=liquid diffusion work1(1), i=ice diffusion work1(2) — separate from work1_r/s/g
339  rhw, rhi, // relative humidity: w=over liquid, i=over ice (Fortran rh(:,:,1/2))
340  qsatw, qsati, // saturation mixing ratio: w=over liquid, i=over ice (Fortran qsat(:,:,1/2))
348  work1_r, work1_s, work1_g, // fall speeds post slope_wsm6: 1=rain 2=snow 3=graupel
349  workdiffw, workdiffi, // diffusion denominators post slope_wsm6 call 2: w=liq i=ice
350 
351  NumInds
352  };
353 }
354 
355 #endif
constexpr amrex::Real RdoCp
Definition: ERF_Constants.H:41
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getThgivenTandP(const amrex::Real T, const amrex::Real P, const amrex::Real rdOcp)
Definition: ERF_EOS.H:18
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real getThgivenRandT(const amrex::Real rho, const amrex::Real T, const amrex::Real rdOcp, const amrex::Real qv=amrex::Real(0))
Definition: ERF_EOS.H:64
#define Rho_comp
Definition: ERF_IndexDefines.H:39
#define RhoQ4_comp
Definition: ERF_IndexDefines.H:48
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:40
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:46
#define RhoQ3_comp
Definition: ERF_IndexDefines.H:47
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:45
#define RhoQ6_comp
Definition: ERF_IndexDefines.H:50
#define RhoQ5_comp
Definition: ERF_IndexDefines.H:49
const Real rdOcp
Definition: ERF_InitCustomPert_ABL.H:72
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
Physical constants and tuning parameters used only by the moisture and cloud-physics code.
constexpr amrex::Real rhoh2o
Definition: ERF_MicrophysicsConstants.H:42
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE MicrophysicsThermoState diagnose_microphysics_thermo_state(const amrex::Real rho, const amrex::Real rho_theta, const amrex::Real qv, const amrex::Real rdOcp, const bool use_anelastic_reference_pressure, const amrex::Real p0) noexcept
Definition: ERF_MicrophysicsUtils.H:35
amrex::Real Real
Definition: ERF_ShocInterface.H:19
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void wsm6_copy_state_to_micro_cell(const amrex::Array4< const amrex::Real > &states, const amrex::Array4< const amrex::Real > &base, const amrex::Array4< amrex::Real > &rho, const amrex::Array4< amrex::Real > &theta, const amrex::Array4< amrex::Real > &tabs, const amrex::Array4< amrex::Real > &pres, const amrex::Array4< amrex::Real > &qv, const amrex::Array4< amrex::Real > &qc, const amrex::Array4< amrex::Real > &qi, const amrex::Array4< amrex::Real > &qr, const amrex::Array4< amrex::Real > &qs, const amrex::Array4< amrex::Real > &qg, const amrex::Real rdOcp, const bool use_anelastic_reference_pressure, const int i, const int j, const int k) noexcept
Definition: ERF_WSM6.H:40
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void wsm6_copy_micro_to_state_cell(const amrex::Array4< amrex::Real > &states, const amrex::Array4< amrex::Real > &theta, const amrex::Array4< const amrex::Real > &rho, const amrex::Array4< const amrex::Real > &tabs, const amrex::Array4< const amrex::Real > &pres, const amrex::Array4< const amrex::Real > &qv, const amrex::Array4< const amrex::Real > &qc, const amrex::Array4< const amrex::Real > &qi, const amrex::Array4< const amrex::Real > &qr, const amrex::Array4< const amrex::Real > &qs, const amrex::Array4< const amrex::Real > &qg, const bool use_anelastic_reference_pressure, const amrex::Real rdOcp, const int i, const int j, const int k) noexcept
Definition: ERF_WSM6.H:92
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real wsm6_theta_from_temperature_and_pressure(const amrex::Real rho, const amrex::Real temperature, const amrex::Real pressure, const amrex::Real qv, const amrex::Real configured_rdOcp, const bool use_anelastic_reference_pressure) noexcept
Definition: ERF_WSM6.H:78
Definition: ERF_NullMoist.H:10
void set_anelastic_reference_pressure_mode(const SolverChoice &sc)
Definition: ERF_NullMoist.H:155
Definition: ERF_WSM6.H:121
amrex::Real m_g5pbgo2
Definition: ERF_WSM6.H:261
std::shared_ptr< amrex::MultiFab > FabPtr
Definition: ERF_WSM6.H:122
amrex::Real m_roqimax
Definition: ERF_WSM6.H:255
amrex::Real m_dzmin
Definition: ERF_WSM6.H:230
amrex::Real m_rdOcp
Definition: ERF_WSM6.H:234
amrex::Real m_bvts3
Definition: ERF_WSM6.H:256
amrex::MultiFab * m_z_phys_nd
Definition: ERF_WSM6.H:237
amrex::Real m_rslopesbmax
Definition: ERF_WSM6.H:264
static constexpr amrex::Real avtr
Definition: ERF_WSM6.H:140
bool m_hail_opt
Definition: ERF_WSM6.H:244
static constexpr amrex::Real dicon
Definition: ERF_WSM6.H:150
amrex::Real m_rslopes2max
Definition: ERF_WSM6.H:265
amrex::Real m_rsloper2max
Definition: ERF_WSM6.H:265
amrex::Real m_bvtr1
Definition: ERF_WSM6.H:252
static constexpr amrex::Real qcrmin
Definition: ERF_WSM6.H:154
amrex::Real m_g4pbs
Definition: ERF_WSM6.H:257
amrex::Real m_g1pbg
Definition: ERF_WSM6.H:261
amrex::Real m_rslopermax
Definition: ERF_WSM6.H:263
amrex::MultiFab * m_detJ_cc
Definition: ERF_WSM6.H:238
amrex::Real m_pacrc
Definition: ERF_WSM6.H:259
static constexpr amrex::Real pfrz1
Definition: ERF_WSM6.H:152
void Qmoist_Restart_Vars(const SolverChoice &, std::vector< int > &a_idx, std::vector< std::string > &a_names) const override
Definition: ERF_WSM6.H:203
amrex::Real m_rsloperbmax
Definition: ERF_WSM6.H:264
amrex::Real m_g4pbg
Definition: ERF_WSM6.H:261
amrex::Real m_g5pbro2
Definition: ERF_WSM6.H:253
amrex::Real m_g3pbr
Definition: ERF_WSM6.H:253
amrex::Real m_bvtg1
Definition: ERF_WSM6.H:260
amrex::Real m_pi_wsm6
Definition: ERF_WSM6.H:250
amrex::Real m_bvts4
Definition: ERF_WSM6.H:256
static constexpr amrex::Real n0smax
Definition: ERF_WSM6.H:158
amrex::Real m_deng
Definition: ERF_WSM6.H:245
int zlo
Definition: ERF_WSM6.H:231
bool m_do_cond
Definition: ERF_WSM6.H:233
amrex::Real m_pidn0s
Definition: ERF_WSM6.H:259
static constexpr amrex::Real dimax
Definition: ERF_WSM6.H:151
int nlev
Definition: ERF_WSM6.H:231
int zhi
Definition: ERF_WSM6.H:231
static constexpr amrex::Real pfrz2
Definition: ERF_WSM6.H:153
int m_qmoist_size
Definition: ERF_WSM6.H:222
static constexpr amrex::Real alpha_wsm6
Definition: ERF_WSM6.H:160
int m_axis
Definition: ERF_WSM6.H:232
amrex::Real m_g3pbg
Definition: ERF_WSM6.H:261
amrex::Real m_pvtg
Definition: ERF_WSM6.H:262
int n_qstate_moist_size
Definition: ERF_WSM6.H:223
static constexpr amrex::Real lamdasmax
Definition: ERF_WSM6.H:149
amrex::Real m_bvtr6
Definition: ERF_WSM6.H:252
amrex::Real m_bvtr2
Definition: ERF_WSM6.H:252
amrex::Real m_qck1
Definition: ERF_WSM6.H:251
amrex::Real m_precg2
Definition: ERF_WSM6.H:262
amrex::Real m_bvts1
Definition: ERF_WSM6.H:256
amrex::Real m_pacrs
Definition: ERF_WSM6.H:258
amrex::Real m_precg1
Definition: ERF_WSM6.H:262
void Update_State_Vars(amrex::MultiFab &cons_in, const amrex::MultiFab &) override
Definition: ERF_WSM6.H:184
amrex::Real m_rsloper3max
Definition: ERF_WSM6.H:266
static constexpr amrex::Real n0s
Definition: ERF_WSM6.H:159
amrex::Real m_eacrr
Definition: ERF_WSM6.H:254
amrex::Real m_precr2
Definition: ERF_WSM6.H:255
void Init(const amrex::MultiFab &cons_in, const amrex::BoxArray &grids, const amrex::Geometry &geom, const amrex::Real &dt_advance, std::unique_ptr< amrex::MultiFab > &z_phys_nd, std::unique_ptr< amrex::MultiFab > &detJ_cc) override
Definition: ERF_InitWSM6.cpp:11
amrex::Real m_g1pbs
Definition: ERF_WSM6.H:257
amrex::Real m_lamdagmax
Definition: ERF_WSM6.H:245
static constexpr amrex::Real n0r
Definition: ERF_WSM6.H:139
MoistureType m_moisture_type
Definition: ERF_WSM6.H:235
amrex::Real m_n0g
Definition: ERF_WSM6.H:245
void Update_Micro_Vars(amrex::MultiFab &cons_in) override
Definition: ERF_WSM6.H:179
amrex::Real m_pidn0g
Definition: ERF_WSM6.H:262
void Define(SolverChoice &sc) override
Definition: ERF_WSM6.H:128
static constexpr amrex::Real dens_snow
Definition: ERF_WSM6.H:156
void initialize_coeffs()
Definition: ERF_InitWSM6.cpp:97
static constexpr amrex::Real dtcldcr
Definition: ERF_WSM6.H:138
amrex::Real m_rslopegmax
Definition: ERF_WSM6.H:263
amrex::Real m_bvtg2
Definition: ERF_WSM6.H:260
static constexpr amrex::Real bvts
Definition: ERF_WSM6.H:147
static constexpr amrex::Real r0
Definition: ERF_WSM6.H:142
amrex::Real m_g6pbr
Definition: ERF_WSM6.H:253
amrex::MultiFab * Qmoist_Ptr(const int &varIdx) override
Definition: ERF_WSM6.H:193
void Advance(const amrex::Real &dt_advance, const SolverChoice &solverChoice) override
Definition: ERF_AdvanceWSM6.cpp:844
amrex::Real m_pacrg
Definition: ERF_WSM6.H:262
amrex::Real m_precs2
Definition: ERF_WSM6.H:258
amrex::Real m_bvtg4
Definition: ERF_WSM6.H:260
void Copy_Micro_to_State(amrex::MultiFab &cons_in) override
Definition: ERF_UpdateWSM6.cpp:7
amrex::Real m_bvtr4
Definition: ERF_WSM6.H:252
int n_qstate_moist_numconc_size
Definition: ERF_WSM6.H:224
amrex::Real m_rslopeg3max
Definition: ERF_WSM6.H:266
amrex::Real m_bvts2
Definition: ERF_WSM6.H:256
amrex::Real m_pvts
Definition: ERF_WSM6.H:258
amrex::Real m_rslopegbmax
Definition: ERF_WSM6.H:264
static constexpr amrex::Real qs0
Definition: ERF_WSM6.H:157
amrex::Real m_bvtg3
Definition: ERF_WSM6.H:260
amrex::Geometry m_geom
Definition: ERF_WSM6.H:228
amrex::Real m_pidnc
Definition: ERF_WSM6.H:251
amrex::Real m_precs1
Definition: ERF_WSM6.H:258
amrex::Real dt
Definition: ERF_WSM6.H:229
amrex::Real m_g3pbs
Definition: ERF_WSM6.H:257
static constexpr amrex::Real lamdarmax
Definition: ERF_WSM6.H:148
int Qstate_Moist_Size() override
Definition: ERF_WSM6.H:200
static constexpr amrex::Real xncr
Definition: ERF_WSM6.H:144
static constexpr amrex::Real bvtr
Definition: ERF_WSM6.H:141
amrex::Real m_rslopesmax
Definition: ERF_WSM6.H:263
int Qstate_Moist_NumConc_Size() override
Definition: ERF_WSM6.H:201
amrex::Real m_avtg
Definition: ERF_WSM6.H:245
void Copy_State_to_Micro(const amrex::MultiFab &cons_in) override
amrex::Real m_qc0
Definition: ERF_WSM6.H:251
amrex::Real m_g4pbr
Definition: ERF_WSM6.H:253
virtual ~WSM6()=default
amrex::Vector< int > MicVarMap
Definition: ERF_WSM6.H:226
amrex::Real m_g1pbr
Definition: ERF_WSM6.H:253
amrex::Array< FabPtr, MicVar_WSM6::NumVars > mic_fab_vars
Definition: ERF_WSM6.H:240
WSM6()
Definition: ERF_WSM6.H:125
amrex::Real m_bvtg
Definition: ERF_WSM6.H:245
static constexpr amrex::Real peaut
Definition: ERF_WSM6.H:143
amrex::Real m_pvtr
Definition: ERF_WSM6.H:254
amrex::Real m_pacrr
Definition: ERF_WSM6.H:254
static constexpr amrex::Real avts
Definition: ERF_WSM6.H:146
amrex::Real m_precr1
Definition: ERF_WSM6.H:255
amrex::Real m_pidn0r
Definition: ERF_WSM6.H:259
static constexpr amrex::Real eacrc
Definition: ERF_WSM6.H:155
amrex::Real m_rslopes3max
Definition: ERF_WSM6.H:266
void Update_Micro_Vars(amrex::MultiFab &cons_in, const amrex::MultiFab *base_state) override
SurfacePrecipAccumulationSources Get_Surface_Precip_Accumulation_Ptrs(const int &) const override
Definition: ERF_WSM6.H:212
amrex::Real m_g5pbso2
Definition: ERF_WSM6.H:257
amrex::Real m_xlv1
Definition: ERF_WSM6.H:250
static constexpr amrex::Real xmyu
Definition: ERF_WSM6.H:145
amrex::Real m_rslopeg2max
Definition: ERF_WSM6.H:265
void Copy_State_to_Micro(const amrex::MultiFab &cons_in, const amrex::MultiFab *base_state)
void Set_dzmin(const amrex::Real dz_min) override
Definition: ERF_WSM6.H:169
amrex::Real m_bvtr3
Definition: ERF_WSM6.H:252
int Qmoist_Size() override
Definition: ERF_WSM6.H:199
@ p0_comp
Definition: ERF_IndexDefines.H:77
Definition: ERF_WSM6.H:20
@ qr
Definition: ERF_WSM6.H:29
@ qi
Definition: ERF_WSM6.H:28
@ theta
Definition: ERF_WSM6.H:23
@ qs
Definition: ERF_WSM6.H:30
@ qv
Definition: ERF_WSM6.H:26
@ qc
Definition: ERF_WSM6.H:27
@ rain_accum
Definition: ERF_WSM6.H:32
@ snow_accum
Definition: ERF_WSM6.H:33
@ rho
Definition: ERF_WSM6.H:22
@ graup_accum
Definition: ERF_WSM6.H:34
@ qg
Definition: ERF_WSM6.H:31
@ pres
Definition: ERF_WSM6.H:25
@ NumVars
Definition: ERF_WSM6.H:35
@ tabs
Definition: ERF_WSM6.H:24
Definition: ERF_WSM6.H:269
@ pigen
Definition: ERF_WSM6.H:294
@ pgacw
Definition: ERF_WSM6.H:312
@ paacw
Definition: ERF_WSM6.H:316
@ pgacr
Definition: ERF_WSM6.H:314
@ delz
Definition: ERF_WSM6.H:281
@ rslope2_s
Definition: ERF_WSM6.H:342
@ psacw
Definition: ERF_WSM6.H:309
@ rslopeb_s
Definition: ERF_WSM6.H:344
@ qrs_tmp_g
Definition: ERF_WSM6.H:345
@ psaut
Definition: ERF_WSM6.H:303
@ pseml
Definition: ERF_WSM6.H:319
@ prevp
Definition: ERF_WSM6.H:297
@ psacr
Definition: ERF_WSM6.H:311
@ den
Definition: ERF_WSM6.H:279
@ denqrs1
Definition: ERF_WSM6.H:329
@ rslope3_g
Definition: ERF_WSM6.H:343
@ qg
Definition: ERF_WSM6.H:278
@ fall_s
Definition: ERF_WSM6.H:347
@ workr
Definition: ERF_WSM6.H:288
@ pracw
Definition: ERF_WSM6.H:306
@ qsatw
Definition: ERF_WSM6.H:340
@ rslope2_g
Definition: ERF_WSM6.H:342
@ falk_r
Definition: ERF_WSM6.H:346
@ q
Definition: ERF_WSM6.H:273
@ n0sfac
Definition: ERF_WSM6.H:333
@ denqci
Definition: ERF_WSM6.H:332
@ pgaut
Definition: ERF_WSM6.H:304
@ rslope3_s
Definition: ERF_WSM6.H:343
@ workdiffi
Definition: ERF_WSM6.H:349
@ delz_tmp
Definition: ERF_WSM6.H:291
@ denqrs2
Definition: ERF_WSM6.H:330
@ qsati
Definition: ERF_WSM6.H:340
@ workdiffw
Definition: ERF_WSM6.H:349
@ psaci
Definition: ERF_WSM6.H:310
@ worka
Definition: ERF_WSM6.H:289
@ falkc
Definition: ERF_WSM6.H:285
@ pgevp
Definition: ERF_WSM6.H:299
@ work2
Definition: ERF_WSM6.H:326
@ pgacs
Definition: ERF_WSM6.H:315
@ rslope2_r
Definition: ERF_WSM6.H:342
@ psdep
Definition: ERF_WSM6.H:300
@ xl
Definition: ERF_WSM6.H:324
@ rslope_r
Definition: ERF_WSM6.H:341
@ work1_g
Definition: ERF_WSM6.H:348
@ praci
Definition: ERF_WSM6.H:307
@ qc
Definition: ERF_WSM6.H:274
@ qi
Definition: ERF_WSM6.H:275
@ pcond
Definition: ERF_WSM6.H:296
@ cpm
Definition: ERF_WSM6.H:325
@ denqrs3
Definition: ERF_WSM6.H:331
@ qs
Definition: ERF_WSM6.H:277
@ falk_g
Definition: ERF_WSM6.H:346
@ NumInds
Definition: ERF_WSM6.H:351
@ rslope3_r
Definition: ERF_WSM6.H:343
@ qsum
Definition: ERF_WSM6.H:323
@ rslope_s
Definition: ERF_WSM6.H:341
@ psmlt
Definition: ERF_WSM6.H:317
@ fall_g
Definition: ERF_WSM6.H:347
@ pgeml
Definition: ERF_WSM6.H:320
@ qrs_tmp_s
Definition: ERF_WSM6.H:345
@ psevp
Definition: ERF_WSM6.H:298
@ den_tmp
Definition: ERF_WSM6.H:290
@ work1c
Definition: ERF_WSM6.H:286
@ work2c
Definition: ERF_WSM6.H:287
@ pgmlt
Definition: ERF_WSM6.H:318
@ rhi
Definition: ERF_WSM6.H:339
@ t
Definition: ERF_WSM6.H:272
@ piacr
Definition: ERF_WSM6.H:305
@ pgaci
Definition: ERF_WSM6.H:313
@ work1_s
Definition: ERF_WSM6.H:348
@ pracs
Definition: ERF_WSM6.H:308
@ qr
Definition: ERF_WSM6.H:276
@ p
Definition: ERF_WSM6.H:280
@ rhw
Definition: ERF_WSM6.H:339
@ work1_r
Definition: ERF_WSM6.H:348
@ fallc
Definition: ERF_WSM6.H:284
@ qrs_tmp_r
Definition: ERF_WSM6.H:345
@ rslopeb_g
Definition: ERF_WSM6.H:344
@ rslopeb_r
Definition: ERF_WSM6.H:344
@ pidep
Definition: ERF_WSM6.H:295
@ praut
Definition: ERF_WSM6.H:302
@ pgdep
Definition: ERF_WSM6.H:301
@ denfac
Definition: ERF_WSM6.H:327
@ rslope_g
Definition: ERF_WSM6.H:341
@ fall_r
Definition: ERF_WSM6.H:347
@ falk_s
Definition: ERF_WSM6.H:346
@ xni
Definition: ERF_WSM6.H:328
real(c_double), parameter p0
Definition: ERF_module_model_constants.F90:40
Definition: ERF_MicrophysicsUtils.H:22
amrex::Real pressure_pa
Definition: ERF_MicrophysicsUtils.H:23
amrex::Real temperature
Definition: ERF_MicrophysicsUtils.H:24
Definition: ERF_DataStruct.H:662
MoistureType moisture_type
Moisture or microphysics model.
Definition: ERF_DataStruct.H:2237
int ave_plane
Averaging plane index used by diagnostics.
Definition: ERF_DataStruct.H:2260
amrex::Real rdOcp
Ratio of dry-air gas constant to c_p.
Definition: ERF_DataStruct.H:2062
bool uses_shoc_family() const noexcept
Query whether any SHOC-family PBL scheme is active.
Definition: ERF_DataStruct.H:2177
Definition: ERF_SurfacePrecipitation.H:34
SurfacePrecipAccumulationSource snow
Definition: ERF_SurfacePrecipitation.H:37
SurfacePrecipAccumulationSource total
Definition: ERF_SurfacePrecipitation.H:35
SurfacePrecipAccumulationSource graupel
Definition: ERF_SurfacePrecipitation.H:38