ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_NullSurf.H
Go to the documentation of this file.
1 #ifndef ERF_NULLSURF_H
2 #define ERF_NULLSURF_H
3 
4 #include "AMReX_BCRec.H"
5 #include "AMReX_MultiFabUtil.H"
6 #include "AMReX_Geometry.H"
7 #include "ERF_DataStruct.H"
9 
10 class NullSurf {
11 
12  public:
13  NullSurf () {}
14 
15  virtual ~NullSurf () = default;
16 
17  virtual
18  void
19  Define (SolverChoice& /*sc*/) { }
20 
21  virtual
22  void Init (const int& /*lev*/,
23  const amrex::MultiFab& /*cons_in*/,
24  const amrex::Geometry& /*geom*/,
25  const amrex::Geometry& /*geom0*/,
26  amrex::Vector<amrex::BCRec>& /*domain_bcs_type*/,
27  amrex::IntVect& /*refRatio*/,
28  const amrex::Real& /*dt_advance*/,
29  amrex::Vector<amrex::Vector<std::string>>& /*nc_init_file*/) { }
30 
31  virtual
32  void
33  Advance (const double& /*dt_advance*/) { }
34 
35  virtual
36  void
37  Advance_With_State (const int& /*lev*/,
38  amrex::MultiFab& /*cons_in*/,
39  amrex::MultiFab& /*xvel_in*/,
40  amrex::MultiFab& /*yvel_in*/,
41  amrex::MultiFab* /*hfx3_out*/,
42  amrex::MultiFab* /*qfx3_out*/,
43  const SurfacePrecipAccumulationSources& /*precip_sources*/,
44  const amrex::Real& /*elapsed_time*/,
45  const amrex::Real& /*dt_advance*/,
46  const int& /*nstep*/,
47  const bool /*updated_lev0*/) { }
48 
49  virtual
50  void
51  Plot_Landfile (const int& /*nstep*/) { }
52 
53  virtual
54  void
55  Update_Micro_Vars (amrex::MultiFab& /*cons_in*/) { }
56 
57  virtual
58  void
59  Update_State_Vars (amrex::MultiFab& /*cons_in*/) { }
60 
61  virtual
62  void
63  Copy_State_to_Micro (const amrex::MultiFab& /*cons_in*/) { }
64 
65  virtual
66  void
67  Copy_Micro_to_State (amrex::MultiFab& /*cons_in*/) { }
68 
69  virtual
70  amrex::MultiFab*
71  Lsm_Data_Ptr (const int& /*varIdx*/ ) { return nullptr; }
72 
73  virtual
74  amrex::MultiFab*
75  Lsm_Flux_Ptr (const int& /*varIdx*/ ) { return nullptr; }
76 
77  virtual
78  amrex::Geometry
79  Lsm_Geom ( ) { return m_lsm_geom; }
80 
81  virtual
82  int
84 
85  virtual
86  int
88 
89  virtual
90  std::string
91  Lsm_DataName (const int& /*varIdx*/)
92  {
93  return dataname;
94  }
95 
96  virtual
97  std::string
98  Lsm_FluxName (const int& /*varIdx*/)
99  {
100  return fluxname;
101  }
102 
103  virtual
104  int
105  Lsm_DataIndex (std::string /*varname*/)
106  {
107  return (-1);
108  }
109 
110  virtual
111  int
112  Lsm_FluxIndex (std::string /*varname*/)
113  {
114  return (-1);
115  }
116 
117  virtual
118  std::unordered_map<std::string, std::string>&
120  {
121  return wrfinput_map;
122  }
123 
124  virtual
125  void
126  Lsm_Set_Lev0_Data_Ptr (const int& /*varIdx*/,
127  amrex::MultiFab* /*lev0_data_ptr*/)
128  {}
129 
130  virtual
131  void
132  Lsm_Set_Lev0_Flux_Ptr (const int& /*varIdx*/,
133  amrex::MultiFab* /*lev0_flux_ptr*/)
134  {}
135 
136  virtual
137  bool
138  Get_Update_Status () { return false; }
139 
140  // Scalar LSM step counter (NoahMP itimestep). Persisted in checkpoint so
141  // the LSM substepping schedule survives restart. 0 means "uninitialized".
142  virtual
143  int
144  Get_LSM_Step () const { return 0; }
145 
146  virtual
147  void
148  Set_LSM_Step (int /*step*/) { }
149 
150  // Full LSM prognostic-state restart I/O. No-op for models that carry no
151  // persistent prognostic state beyond their checkpointed MultiFabs.
152  virtual
153  void
154  Write_Lsm_Restart (const std::string& /*dir*/) const { }
155 
156  virtual
157  void
158  Read_Lsm_Restart (const std::string& /*dir*/) { }
159 
160  private:
161  int m_lsm_size = 0;
162  amrex::Geometry m_lsm_geom;
163  std::string dataname = " ";
164  std::string fluxname = " ";
165 
166  std::unordered_map<std::string,std::string> wrfinput_map;
167 };
168 #endif
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_NullSurf.H:10
int m_lsm_size
Definition: ERF_NullSurf.H:161
virtual std::string Lsm_DataName(const int &)
Definition: ERF_NullSurf.H:91
virtual void Lsm_Set_Lev0_Flux_Ptr(const int &, amrex::MultiFab *)
Definition: ERF_NullSurf.H:132
virtual void Copy_State_to_Micro(const amrex::MultiFab &)
Definition: ERF_NullSurf.H:63
virtual void Init(const int &, const amrex::MultiFab &, const amrex::Geometry &, const amrex::Geometry &, amrex::Vector< amrex::BCRec > &, amrex::IntVect &, const amrex::Real &, amrex::Vector< amrex::Vector< std::string >> &)
Definition: ERF_NullSurf.H:22
virtual amrex::MultiFab * Lsm_Data_Ptr(const int &)
Definition: ERF_NullSurf.H:71
virtual int Lsm_Flux_Size()
Definition: ERF_NullSurf.H:87
virtual void Set_LSM_Step(int)
Definition: ERF_NullSurf.H:148
virtual void Plot_Landfile(const int &)
Definition: ERF_NullSurf.H:51
virtual void Write_Lsm_Restart(const std::string &) const
Definition: ERF_NullSurf.H:154
virtual void Copy_Micro_to_State(amrex::MultiFab &)
Definition: ERF_NullSurf.H:67
virtual void Define(SolverChoice &)
Definition: ERF_NullSurf.H:19
virtual void Advance(const double &)
Definition: ERF_NullSurf.H:33
std::string fluxname
Definition: ERF_NullSurf.H:164
virtual amrex::MultiFab * Lsm_Flux_Ptr(const int &)
Definition: ERF_NullSurf.H:75
virtual int Get_LSM_Step() const
Definition: ERF_NullSurf.H:144
virtual int Lsm_FluxIndex(std::string)
Definition: ERF_NullSurf.H:112
virtual void Lsm_Set_Lev0_Data_Ptr(const int &, amrex::MultiFab *)
Definition: ERF_NullSurf.H:126
virtual void Update_Micro_Vars(amrex::MultiFab &)
Definition: ERF_NullSurf.H:55
virtual int Lsm_DataIndex(std::string)
Definition: ERF_NullSurf.H:105
virtual void Advance_With_State(const int &, amrex::MultiFab &, amrex::MultiFab &, amrex::MultiFab &, amrex::MultiFab *, amrex::MultiFab *, const SurfacePrecipAccumulationSources &, const amrex::Real &, const amrex::Real &, const int &, const bool)
Definition: ERF_NullSurf.H:37
NullSurf()
Definition: ERF_NullSurf.H:13
amrex::Geometry m_lsm_geom
Definition: ERF_NullSurf.H:162
virtual std::unordered_map< std::string, std::string > & Lsm_WRFInputNames()
Definition: ERF_NullSurf.H:119
virtual void Read_Lsm_Restart(const std::string &)
Definition: ERF_NullSurf.H:158
virtual bool Get_Update_Status()
Definition: ERF_NullSurf.H:138
virtual std::string Lsm_FluxName(const int &)
Definition: ERF_NullSurf.H:98
virtual int Lsm_Data_Size()
Definition: ERF_NullSurf.H:83
virtual void Update_State_Vars(amrex::MultiFab &)
Definition: ERF_NullSurf.H:59
std::string dataname
Definition: ERF_NullSurf.H:163
virtual amrex::Geometry Lsm_Geom()
Definition: ERF_NullSurf.H:79
std::unordered_map< std::string, std::string > wrfinput_map
Definition: ERF_NullSurf.H:166
virtual ~NullSurf()=default
Definition: ERF_DataStruct.H:141
Definition: ERF_SurfacePrecipitation.H:21