5 #ifndef ERF_MICROPHYSICS_H
6 #define ERF_MICROPHYSICS_H
28 virtual void Init (
const int&,
29 const amrex::MultiFab&,
30 const amrex::BoxArray&,
31 const amrex::Geometry&,
33 std::unique_ptr<amrex::MultiFab>&,
34 std::unique_ptr<amrex::MultiFab>&) = 0;
42 amrex::Vector<amrex::Vector<amrex::MultiFab>>&,
43 const amrex::Vector<std::unique_ptr<amrex::MultiFab>>&,
44 const amrex::GpuArray<ERF_BC, AMREX_SPACEDIM*2>& ) = 0;
66 std::vector<std::string>& )
const = 0;
69 static MoistureModelType
modelType (
const MoistureType a_moisture_type)
71 if ( (a_moisture_type == MoistureType::SAM)
72 || (a_moisture_type == MoistureType::SAM_NoIce)
73 || (a_moisture_type == MoistureType::SAM_NoPrecip_NoIce)
74 || (a_moisture_type == MoistureType::Kessler)
75 || (a_moisture_type == MoistureType::Kessler_NoRain)
76 || (a_moisture_type == MoistureType::SatAdj)
77 || (a_moisture_type == MoistureType::None) ) {
78 return MoistureModelType::Eulerian;
80 amrex::Abort(
"Dont know this moisture_type!") ;
81 return MoistureModelType::Undefined;
Base class for microphysics interface.
Definition: ERF_Microphysics.H:14
virtual int Get_Qmoist_Size(const int &)=0
get the number of moisture model variables
virtual ~Microphysics()=default
default destructor
virtual void Define(const int &, SolverChoice &)=0
define the microphysics object
virtual void Init(const int &, const amrex::MultiFab &, const amrex::BoxArray &, const amrex::Geometry &, const amrex::Real &, std::unique_ptr< amrex::MultiFab > &, std::unique_ptr< amrex::MultiFab > &)=0
initialize the microphysics object
virtual void Update_State_Vars_Lev(const int &, amrex::MultiFab &)=0
update ERF state variables from microphysics variables
virtual void Update_Micro_Vars_Lev(const int &, amrex::MultiFab &)=0
update microphysics variables from ERF state variables
virtual int Get_Qstate_Size()=0
get the number of moisture-model-related conserved state variables
Microphysics()
Null constructor.
Definition: ERF_Microphysics.H:19
virtual amrex::MultiFab * Get_Qmoist_Ptr(const int &, const int &)=0
get pointer to a moisture variable
virtual void Get_Qmoist_Restart_Vars(int, const SolverChoice &, std::vector< int > &, std::vector< std::string > &) const =0
get the indices and names of moisture model variables for restart at a given level
static MoistureModelType modelType(const MoistureType a_moisture_type)
query if a specified moisture model is Eulerian or Lagrangian
Definition: ERF_Microphysics.H:69
virtual void Advance(const int &, const amrex::Real &, const int &, const amrex::Real &, const SolverChoice &, amrex::Vector< amrex::Vector< amrex::MultiFab >> &, const amrex::Vector< std::unique_ptr< amrex::MultiFab >> &, const amrex::GpuArray< ERF_BC, AMREX_SPACEDIM *2 > &)=0
advance microphysics for one time step
Definition: ERF_DataStruct.H:82