ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_RadiationSimple.H
Go to the documentation of this file.
1 #ifndef ERF_RADIATION_SIMPLE_H
2 #define ERF_RADIATION_SIMPLE_H
3 
4 #include <memory>
5 
6 #include <AMReX_FArrayBox.H>
7 #include <AMReX_Geometry.H>
8 #include <AMReX_MultiFabUtil.H>
9 
10 #include <ERF_RadiationInterface.H>
11 #include <ERF_DataStruct.H>
12 #include <ERF_EOS.H>
13 
15 {
16 public:
17  RadiationSimple (const int& /*lev*/,
18  const SolverChoice& sc) {
19  // Every moist species we read is taken from the configured moisture-component
20  // mapping, so each scheme is indexed by its own layout rather than by an
21  // enumerated model list: every scheme carrying cloud ice (SAM, Morrison, WSM6,
22  // WDM6, ...) is picked up, and the warm-rain schemes are not.
26 
27  m_have_qv = (m_qv_comp >= 0);
28  m_have_qc = (m_qc_comp >= 0);
29  m_ice = (m_qi_comp >= 0);
30  }
31 
32  ~RadiationSimple () = default;
33 
34  virtual void Init (const amrex::Geometry& geom,
35  const amrex::BoxArray& ba,
36  amrex::MultiFab* cons_in) override;
37 
38  virtual void Run (int& level,
39  int& step,
40  double& time,
41  const double& dt,
42  const amrex::BoxArray& ba,
43  amrex::Geometry& geom,
44  amrex::MultiFab* cons_in,
45  amrex::iMultiFab* lmask,
46  amrex::MultiFab* t_surf,
47  amrex::Vector<amrex::MultiFab*>& lsm_input_ptrs,
48  amrex::Vector<amrex::MultiFab*>& lsm_output_ptrs,
49  amrex::MultiFab* qheating_rates,
50  amrex::MultiFab* rad_fluxes,
51  amrex::MultiFab* z_phys,
52  amrex::MultiFab* lat,
53  amrex::MultiFab* lon,
54  const bool updated_lsm) override;
55 
56  virtual void WriteDataLog (const double &time) override;
57 
58  const amrex::MultiFab *get_radlwdn () { return radlwdn.get(); }
59  const amrex::MultiFab *get_radqrlw () { return radqrlw.get(); }
60 
61 private:
62  bool m_have_qv = false;
63  bool m_have_qc = false;
64  bool m_ice = false;
65  int m_qv_comp = -1;
66  int m_qc_comp = -1;
67  int m_qi_comp = -1;
68 
69  amrex::Geometry m_geom;
70  amrex::BoxArray m_ba;
71 
72  amrex::MultiFab deltaq, flux;
73  std::unique_ptr<amrex::MultiFab> radlwdn;
74  std::unique_ptr<amrex::MultiFab> radqrlw;
75 
76 };
77 
78 #endif
Definition: ERF_RadiationInterface.H:14
Definition: ERF_RadiationSimple.H:15
std::unique_ptr< amrex::MultiFab > radlwdn
Definition: ERF_RadiationSimple.H:73
int m_qc_comp
Definition: ERF_RadiationSimple.H:66
amrex::MultiFab deltaq
Definition: ERF_RadiationSimple.H:72
bool m_ice
Definition: ERF_RadiationSimple.H:64
amrex::Geometry m_geom
Definition: ERF_RadiationSimple.H:69
virtual void Run(int &level, int &step, double &time, const double &dt, const amrex::BoxArray &ba, amrex::Geometry &geom, amrex::MultiFab *cons_in, amrex::iMultiFab *lmask, amrex::MultiFab *t_surf, amrex::Vector< amrex::MultiFab * > &lsm_input_ptrs, amrex::Vector< amrex::MultiFab * > &lsm_output_ptrs, amrex::MultiFab *qheating_rates, amrex::MultiFab *rad_fluxes, amrex::MultiFab *z_phys, amrex::MultiFab *lat, amrex::MultiFab *lon, const bool updated_lsm) override
Definition: ERF_RadiationSimple.cpp:27
bool m_have_qc
Definition: ERF_RadiationSimple.H:63
const amrex::MultiFab * get_radqrlw()
Definition: ERF_RadiationSimple.H:59
amrex::BoxArray m_ba
Definition: ERF_RadiationSimple.H:70
virtual void Init(const amrex::Geometry &geom, const amrex::BoxArray &ba, amrex::MultiFab *cons_in) override
Definition: ERF_RadiationSimple.cpp:8
int m_qi_comp
Definition: ERF_RadiationSimple.H:67
amrex::MultiFab flux
Definition: ERF_RadiationSimple.H:72
int m_qv_comp
Definition: ERF_RadiationSimple.H:65
~RadiationSimple()=default
bool m_have_qv
Definition: ERF_RadiationSimple.H:62
virtual void WriteDataLog(const double &time) override
Definition: ERF_RadiationSimple.cpp:175
const amrex::MultiFab * get_radlwdn()
Definition: ERF_RadiationSimple.H:58
RadiationSimple(const int &, const SolverChoice &sc)
Definition: ERF_RadiationSimple.H:17
std::unique_ptr< amrex::MultiFab > radqrlw
Definition: ERF_RadiationSimple.H:74
int qi
cloud ice
Definition: ERF_DataStruct.H:208
int qv
water vapor
Definition: ERF_DataStruct.H:206
int qc
cloud liquid water
Definition: ERF_DataStruct.H:207
Definition: ERF_DataStruct.H:634
MoistureComponentIndices moisture_indices
Index map of the moisture data carried by the active scheme: conserved-state components for the speci...
Definition: ERF_DataStruct.H:2144