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_Geometry.H>
6 #include <ERF_DataStruct.H>
8 
9 class NullMoist {
10 
11 public:
12  NullMoist () {}
13 
14  virtual ~NullMoist () = default;
15 
16  virtual
17  void
18  Define (SolverChoice& /*sc*/) { }
19 
20  virtual
21  void Init (const amrex::MultiFab& /*cons_in*/,
22  const amrex::BoxArray& /*grids*/,
23  const amrex::Geometry& /*geom*/,
24  const amrex::Real& /*dt_advance*/,
25  std::unique_ptr<amrex::MultiFab>& /*z_phys_nd*/,
26  std::unique_ptr<amrex::MultiFab>& /*detJ_cc*/) { }
27 
28  virtual
29  void
30  Advance (const amrex::Real& /*dt_advance*/,
31  const SolverChoice& /*solverChoce*/) { }
32 
33  virtual
34  void
35  Update_Micro_Vars (amrex::MultiFab& /*cons_in*/) { }
36 
37  virtual
38  void
39  Update_State_Vars (amrex::MultiFab& /*cons_in*/,
40  const amrex::MultiFab& /*z_phys_nd*/) { }
41 
42  virtual
43  void
44  Copy_State_to_Micro (const amrex::MultiFab& /*cons_in*/) { }
45 
46  virtual
47  void
48  Copy_Micro_to_State (amrex::MultiFab& /*cons_in*/) { }
49 
50  virtual
51  amrex::MultiFab*
52  Qmoist_Ptr (const int& /*varIdx*/ ) { return nullptr; }
53 
54  virtual
55  int
57 
58  virtual
59  int
61 
62  virtual
63  int
65 
66  virtual
67  int
69 
70  virtual
71  void
72  Qmoist_Restart_Vars ( const SolverChoice&, std::vector<int>& a_idx, std::vector<std::string>& a_names) const
73  {
74  a_idx.clear();
75  a_names.clear();
76  }
77 
78  virtual
79  void
80  GetPlotVarNames (amrex::Vector<std::string>& a_vec) const
81  {
82  a_vec.resize(0);
83  }
84 
85  virtual
86  void
87  GetPlotVar (const std::string& /* a_name */,
88  amrex::MultiFab& /* a_mf */ ) const
89  {
90  amrex::Abort("NullMoist::GetPlotVar() should never be called.");
91  }
92 
93  virtual
94  void
95  GetPlotVar (const std::string& a_name,
96  amrex::MultiFab& a_mf,
97  const int /*a_lev*/) const
98  {
99  GetPlotVar(a_name, a_mf);
100  }
101 
102  virtual
103  void
104  SetCurrentLevel (const int&) {}
105 
106  virtual
107  void
108  InitLevel (const int, const amrex::MultiFab&) {}
109 
110  virtual
111  int
112  getDiagnosticsInterval () const { return 0; }
113 
114  virtual
115  void
116  Set_dzmin (const amrex::Real /*dz_min*/) { }
117 
118  virtual
121  {
122  return {};
123  }
124 
125  virtual
126  void
127  // Current SatAdj/Kessler development paths do not trim by real width, but
128  // tests still exercise Set_RealWidth(0/1/2) as a future-proof contract.
129  // Keep the base hook as a no-op unless a concrete microphysics model
130  // chooses to implement width-sensitive behavior.
131  Set_RealWidth (const int /*real_width*/) { }
132 
133 
134 private:
135  int m_qmoist_size = 0;
139 };
140 
141 #endif
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_NullMoist.H:9
int m_qstate_moist_size
Definition: ERF_NullMoist.H:136
virtual void SetCurrentLevel(const int &)
Definition: ERF_NullMoist.H:104
virtual void Copy_Micro_to_State(amrex::MultiFab &)
Definition: ERF_NullMoist.H:48
virtual amrex::MultiFab * Qmoist_Ptr(const int &)
Definition: ERF_NullMoist.H:52
virtual void GetPlotVar(const std::string &, amrex::MultiFab &) const
Definition: ERF_NullMoist.H:87
virtual void Set_dzmin(const amrex::Real)
Definition: ERF_NullMoist.H:116
virtual void GetPlotVar(const std::string &a_name, amrex::MultiFab &a_mf, const int) const
Definition: ERF_NullMoist.H:95
int m_qmoist_size
Definition: ERF_NullMoist.H:135
virtual int getDiagnosticsInterval() const
Definition: ERF_NullMoist.H:112
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:21
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:72
virtual void InitLevel(const int, const amrex::MultiFab &)
Definition: ERF_NullMoist.H:108
virtual int Qstate_Moist_NumConc_Size()
Definition: ERF_NullMoist.H:64
virtual void Update_State_Vars(amrex::MultiFab &, const amrex::MultiFab &)
Definition: ERF_NullMoist.H:39
virtual void Set_RealWidth(const int)
Definition: ERF_NullMoist.H:131
virtual SurfacePrecipAccumulationSources Get_Surface_Precip_Accumulation_Ptrs(const int &) const
Definition: ERF_NullMoist.H:120
int m_qstate_moist_numconc_size
Definition: ERF_NullMoist.H:137
NullMoist()
Definition: ERF_NullMoist.H:12
virtual int Qstate_NonMoist_Size()
Definition: ERF_NullMoist.H:68
virtual void Advance(const amrex::Real &, const SolverChoice &)
Definition: ERF_NullMoist.H:30
virtual void Define(SolverChoice &)
Definition: ERF_NullMoist.H:18
virtual void Copy_State_to_Micro(const amrex::MultiFab &)
Definition: ERF_NullMoist.H:44
virtual void GetPlotVarNames(amrex::Vector< std::string > &a_vec) const
Definition: ERF_NullMoist.H:80
int m_qstate_nonmoist_size
Definition: ERF_NullMoist.H:138
virtual int Qmoist_Size()
Definition: ERF_NullMoist.H:56
virtual void Update_Micro_Vars(amrex::MultiFab &)
Definition: ERF_NullMoist.H:35
virtual int Qstate_Moist_Size()
Definition: ERF_NullMoist.H:60
Definition: ERF_DataStruct.H:141
Definition: ERF_SurfacePrecipitation.H:21