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*/) { return dataname; }
92 
93  virtual
94  std::string
95  Lsm_FluxName (const int& /*varIdx*/) { return fluxname; }
96 
97  virtual
98  int
99  Lsm_DataIndex (std::string /*varname*/) { return (-1); }
100 
101  virtual
102  int
103  Lsm_FluxIndex (std::string /*varname*/) { return (-1); }
104 
105  virtual
106  std::unordered_map<std::string, std::string>&
108 
109  virtual
110  void
111  Lsm_Set_Lev0_Data_Ptr (const int& /*varIdx*/,
112  amrex::MultiFab* /*lev0_data_ptr*/)
113  {}
114 
115  virtual
116  void
117  Lsm_Set_Lev0_Flux_Ptr (const int& /*varIdx*/,
118  amrex::MultiFab* /*lev0_flux_ptr*/)
119  {}
120 
121  virtual
122  bool
123  Get_Update_Status () { return false; }
124 
125  // Scalar LSM step counter (NoahMP itimestep). Persisted in checkpoint so
126  // the LSM substepping schedule survives restart. 0 means "uninitialized".
127  virtual
128  int
129  Get_LSM_Step () const { return 0; }
130 
131  virtual
132  void
133  Set_LSM_Step (int /*step*/) { }
134 
135  // Full LSM prognostic-state restart I/O. No-op for models that carry no
136  // persistent prognostic state beyond their checkpointed MultiFabs.
137  virtual
138  void
139  Write_Lsm_Restart (const std::string& /*dir*/) const { }
140 
141  virtual
142  void
143  Read_Lsm_Restart (const std::string& /*dir*/) { }
144 
145  private:
146  int m_lsm_size = 0;
147  amrex::Geometry m_lsm_geom;
148  std::string dataname = " ";
149  std::string fluxname = " ";
150 
151  std::unordered_map<std::string,std::string> wrfinput_map;
152 };
153 #endif
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_NullSurf.H:10
int m_lsm_size
Definition: ERF_NullSurf.H:146
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:117
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:133
virtual void Plot_Landfile(const int &)
Definition: ERF_NullSurf.H:51
virtual void Write_Lsm_Restart(const std::string &) const
Definition: ERF_NullSurf.H:139
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:149
virtual amrex::MultiFab * Lsm_Flux_Ptr(const int &)
Definition: ERF_NullSurf.H:75
virtual int Get_LSM_Step() const
Definition: ERF_NullSurf.H:129
virtual int Lsm_FluxIndex(std::string)
Definition: ERF_NullSurf.H:103
virtual void Lsm_Set_Lev0_Data_Ptr(const int &, amrex::MultiFab *)
Definition: ERF_NullSurf.H:111
virtual void Update_Micro_Vars(amrex::MultiFab &)
Definition: ERF_NullSurf.H:55
virtual int Lsm_DataIndex(std::string)
Definition: ERF_NullSurf.H:99
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:147
virtual std::unordered_map< std::string, std::string > & Lsm_WRFInputNames()
Definition: ERF_NullSurf.H:107
virtual void Read_Lsm_Restart(const std::string &)
Definition: ERF_NullSurf.H:143
virtual bool Get_Update_Status()
Definition: ERF_NullSurf.H:123
virtual std::string Lsm_FluxName(const int &)
Definition: ERF_NullSurf.H:95
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:148
virtual amrex::Geometry Lsm_Geom()
Definition: ERF_NullSurf.H:79
std::unordered_map< std::string, std::string > wrfinput_map
Definition: ERF_NullSurf.H:151
virtual ~NullSurf()=default
Definition: ERF_DataStruct.H:634
Definition: ERF_SurfacePrecipitation.H:34