1 #ifndef ERF_LANDSURFACE_H
2 #define ERF_LANDSURFACE_H
4 #include <AMReX_PlotFileUtil.H>
5 #include <AMReX_MultiFabUtil.H>
27 template<
class NewSurfModel>
32 m_lsm_model[lev] = std::make_unique<NewSurfModel>();
45 const amrex::MultiFab& cons_in,
46 const amrex::Geometry& geom,
49 m_lsm_model[lev]->Init(lev, cons_in, geom, dt_advance);
54 amrex::MultiFab& cons_in,
55 amrex::MultiFab& xvel_in,
56 amrex::MultiFab& yvel_in,
57 amrex::MultiFab* hfx3_out,
58 amrex::MultiFab* qfx3_out,
63 m_lsm_model[lev]->Advance_With_State(lev, cons_in, xvel_in, yvel_in,
64 hfx3_out, qfx3_out, time, dt_advance, nstep);
74 Plot(
const int& lev,
const int& nstep)
118 std::unordered_map<std::string,std::string>&
123 const amrex::Vector<int> &level_steps,
124 const amrex::Vector<amrex::IntVect> &ref_ratio)
128 amrex::Vector<std::string> varnames;
132 varnames.resize(nvar);
135 std::string plotfilename = amrex::Concatenate(
plot_file_lsm, level_steps[0], 5);
136 for (
int lev(0); lev<nlev; ++lev) {
140 amrex::IntVect
ng(0,0,0);
141 amrex::BoxArray ba = mf_lsm->boxArray();
142 amrex::DistributionMapping dm = mf_lsm->DistributionMap();
144 for (
int n(0); n<nvar; ++n) {
150 WriteMultiLevelPlotfile (plotfilename, nlev, GetVecOfConstPtrs(
m_lsm_data_lev),
157 template<
class SurfModelType>
159 return static_cast<SurfModelType*
>(
m_lsm_model[lev].get());
amrex::Real Real
Definition: ERF_ShocInterface.H:19
Definition: ERF_LandSurface.H:16
amrex::Vector< amrex::Geometry > m_lsm_geom_lev
Definition: ERF_LandSurface.H:170
std::unordered_map< std::string, std::string > & Get_WRFInputNames()
Definition: ERF_LandSurface.H:119
void Advance(const int &lev, const amrex::Real &dt_advance)
Definition: ERF_LandSurface.H:68
int Get_Data_Size()
Definition: ERF_LandSurface.H:101
amrex::Geometry Get_Lsm_Geom(const int &lev)
Definition: ERF_LandSurface.H:98
SurfModelType * get_model_lev(const int &lev)
Definition: ERF_LandSurface.H:158
int Get_FluxIdx(const int &lev, std::string &varname)
Definition: ERF_LandSurface.H:116
void Plot(const int &lev, const int &nstep)
Definition: ERF_LandSurface.H:74
void ReSize(const int &nlev)
Definition: ERF_LandSurface.H:25
amrex::Vector< amrex::MultiFab > m_lsm_data_lev
Definition: ERF_LandSurface.H:173
std::string Get_DataName(const int &varIdx)
Definition: ERF_LandSurface.H:107
void Plot_Lsm_Data(amrex::Real time, const amrex::Vector< int > &level_steps, const amrex::Vector< amrex::IntVect > &ref_ratio)
Definition: ERF_LandSurface.H:122
std::string Get_FluxName(const int &varIdx)
Definition: ERF_LandSurface.H:113
amrex::Vector< std::unique_ptr< NullSurf > > m_lsm_model
Definition: ERF_LandSurface.H:164
void SetModel()
Definition: ERF_LandSurface.H:29
amrex::MultiFab * Get_Flux_Ptr(const int &lev, const int &varIdx)
Definition: ERF_LandSurface.H:95
void Init(const int &lev, const amrex::MultiFab &cons_in, const amrex::Geometry &geom, const amrex::Real &dt_advance)
Definition: ERF_LandSurface.H:44
LandSurface()
Definition: ERF_LandSurface.H:20
void Advance(const int &lev, amrex::MultiFab &cons_in, amrex::MultiFab &xvel_in, amrex::MultiFab &yvel_in, amrex::MultiFab *hfx3_out, amrex::MultiFab *qfx3_out, const amrex::Real &time, const amrex::Real &dt_advance, const int &nstep)
Definition: ERF_LandSurface.H:53
void Update_State_Vars_Lev(const int &lev, amrex::MultiFab &cons_in)
Definition: ERF_LandSurface.H:86
int Get_DataIdx(const int &lev, std::string &varname)
Definition: ERF_LandSurface.H:110
void Define(const int &lev, SolverChoice &sc)
Definition: ERF_LandSurface.H:37
int Get_Flux_Size()
Definition: ERF_LandSurface.H:104
amrex::MultiFab * Get_Data_Ptr(const int &lev, const int &varIdx)
Definition: ERF_LandSurface.H:92
std::string plot_file_lsm
Definition: ERF_LandSurface.H:167
void Update_Micro_Vars_Lev(const int &lev, amrex::MultiFab &cons_in)
Definition: ERF_LandSurface.H:80
@ ng
Definition: ERF_Morrison.H:48
Definition: ERF_DataStruct.H:141