ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_NullMoist.H
Go to the documentation of this file.
1 #ifndef ERF_NULLMOIST_H
2 #define ERF_NULLMOIST_H
3 
4 #include <AMReX_MultiFabUtil.H>
5 #include <AMReX_iMultiFab.H>
6 #include <AMReX_Geometry.H>
7 #include <ERF_DataStruct.H>
9 
10 class NullMoist {
11 
12 public:
13  NullMoist () {}
14 
15  virtual ~NullMoist () = default;
16 
17  virtual
18  void
19  Define (SolverChoice& /*sc*/) { }
20 
21  virtual
22  void Init (const amrex::MultiFab& /*cons_in*/,
23  const amrex::BoxArray& /*grids*/,
24  const amrex::Geometry& /*geom*/,
25  const amrex::Real& /*dt_advance*/,
26  std::unique_ptr<amrex::MultiFab>& /*z_phys_nd*/,
27  std::unique_ptr<amrex::MultiFab>& /*detJ_cc*/) { }
28 
29  virtual
30  void
31  Advance (const amrex::Real& /*dt_advance*/,
32  const SolverChoice& /*solverChoce*/) { }
33 
34  virtual
35  void
36  Update_Micro_Vars (amrex::MultiFab& /*cons_in*/) { }
37 
38  // Optional explicit anelastic thermodynamic context. The default routes
39  // to the legacy model entry point so non-SatAdj models retain behavior.
40  virtual
41  void
42  Update_Micro_Vars (amrex::MultiFab& cons_in,
43  const amrex::MultiFab* /*base_state*/) {
44  Update_Micro_Vars(cons_in);
45  }
46 
47  virtual
48  void
49  Update_State_Vars (amrex::MultiFab& /*cons_in*/,
50  const amrex::MultiFab& /*z_phys_nd*/) { }
51 
52  virtual
53  void
54  Copy_State_to_Micro (const amrex::MultiFab& /*cons_in*/) { }
55 
56  virtual
57  void
58  Copy_Micro_to_State (amrex::MultiFab& /*cons_in*/) { }
59 
60  virtual
61  amrex::MultiFab*
62  Qmoist_Ptr (const int& /*varIdx*/ ) { return nullptr; }
63 
64  virtual
65  int
67 
68  virtual
69  int
71 
72  virtual
73  int
75 
76  virtual
77  int
79 
80  virtual
81  void
82  Qmoist_Restart_Vars ( const SolverChoice&, std::vector<int>& a_idx, std::vector<std::string>& a_names) const
83  {
84  a_idx.clear();
85  a_names.clear();
86  }
87 
88  virtual
89  void
90  GetPlotVarNames (amrex::Vector<std::string>& a_vec) const
91  {
92  a_vec.resize(0);
93  }
94 
95  virtual
96  void
97  GetPlotVar (const std::string& /* a_name */,
98  amrex::MultiFab& /* a_mf */ ) const
99  {
100  amrex::Abort("NullMoist::GetPlotVar() should never be called.");
101  }
102 
103  virtual
104  void
105  GetPlotVar (const std::string& a_name,
106  amrex::MultiFab& a_mf,
107  const int /*a_lev*/) const
108  {
109  GetPlotVar(a_name, a_mf);
110  }
111 
112  virtual
113  void
114  SetCurrentLevel (const int&) {}
115 
116  virtual
117  void
118  InitLevel (const int, const amrex::MultiFab&) {}
119 
120  virtual
121  int
122  getDiagnosticsInterval () const { return 0; }
123 
124  virtual
125  void
126  Set_dzmin (const amrex::Real /*dz_min*/) { }
127 
128  /*! \brief Import ERF's land/water mask. Only schemes whose physics branches
129  * on land vs water need to override this. */
130  virtual
131  void
132  Set_Lmask (amrex::iMultiFab* /*lmask*/) { }
133 
134  virtual
137  {
138  return {};
139  }
140 
141  virtual
142  void
143  // Current SatAdj/Kessler development paths do not trim by real width, but
144  // tests still exercise Set_RealWidth(0/1/2) as a future-proof contract.
145  // Keep the base hook as a no-op unless a concrete microphysics model
146  // chooses to implement width-sensitive behavior.
147  Set_RealWidth (const int /*real_width*/) { }
148 
149 
150 private:
151  int m_qmoist_size = 0;
155 };
156 
157 #endif
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_NullMoist.H:10
int m_qstate_moist_size
Definition: ERF_NullMoist.H:152
virtual void SetCurrentLevel(const int &)
Definition: ERF_NullMoist.H:114
virtual void Copy_Micro_to_State(amrex::MultiFab &)
Definition: ERF_NullMoist.H:58
virtual amrex::MultiFab * Qmoist_Ptr(const int &)
Definition: ERF_NullMoist.H:62
virtual void Update_Micro_Vars(amrex::MultiFab &cons_in, const amrex::MultiFab *)
Definition: ERF_NullMoist.H:42
virtual void GetPlotVar(const std::string &, amrex::MultiFab &) const
Definition: ERF_NullMoist.H:97
virtual void Set_dzmin(const amrex::Real)
Definition: ERF_NullMoist.H:126
virtual void GetPlotVar(const std::string &a_name, amrex::MultiFab &a_mf, const int) const
Definition: ERF_NullMoist.H:105
int m_qmoist_size
Definition: ERF_NullMoist.H:151
virtual int getDiagnosticsInterval() const
Definition: ERF_NullMoist.H:122
virtual void Init(const amrex::MultiFab &, const amrex::BoxArray &, const amrex::Geometry &, const amrex::Real &, std::unique_ptr< amrex::MultiFab > &, std::unique_ptr< amrex::MultiFab > &)
Definition: ERF_NullMoist.H:22
virtual ~NullMoist()=default
virtual void Qmoist_Restart_Vars(const SolverChoice &, std::vector< int > &a_idx, std::vector< std::string > &a_names) const
Definition: ERF_NullMoist.H:82
virtual void InitLevel(const int, const amrex::MultiFab &)
Definition: ERF_NullMoist.H:118
virtual int Qstate_Moist_NumConc_Size()
Definition: ERF_NullMoist.H:74
virtual void Update_State_Vars(amrex::MultiFab &, const amrex::MultiFab &)
Definition: ERF_NullMoist.H:49
virtual void Set_RealWidth(const int)
Definition: ERF_NullMoist.H:147
virtual SurfacePrecipAccumulationSources Get_Surface_Precip_Accumulation_Ptrs(const int &) const
Definition: ERF_NullMoist.H:136
int m_qstate_moist_numconc_size
Definition: ERF_NullMoist.H:153
NullMoist()
Definition: ERF_NullMoist.H:13
virtual void Set_Lmask(amrex::iMultiFab *)
Import ERF's land/water mask. Only schemes whose physics branches on land vs water need to override t...
Definition: ERF_NullMoist.H:132
virtual int Qstate_NonMoist_Size()
Definition: ERF_NullMoist.H:78
virtual void Advance(const amrex::Real &, const SolverChoice &)
Definition: ERF_NullMoist.H:31
virtual void Define(SolverChoice &)
Definition: ERF_NullMoist.H:19
virtual void Copy_State_to_Micro(const amrex::MultiFab &)
Definition: ERF_NullMoist.H:54
virtual void GetPlotVarNames(amrex::Vector< std::string > &a_vec) const
Definition: ERF_NullMoist.H:90
int m_qstate_nonmoist_size
Definition: ERF_NullMoist.H:154
virtual int Qmoist_Size()
Definition: ERF_NullMoist.H:66
virtual void Update_Micro_Vars(amrex::MultiFab &)
Definition: ERF_NullMoist.H:36
virtual int Qstate_Moist_Size()
Definition: ERF_NullMoist.H:70
Definition: ERF_DataStruct.H:634
Definition: ERF_SurfacePrecipitation.H:34