1#ifndef _REMORA_PROBCOMMON_H_
2#define _REMORA_PROBCOMMON_H_
7#include <AMReX_Geometry.H>
8#include <AMReX_FArrayBox.H>
27 const amrex::Geometry& ,
34 amrex::Error(
"Initialization set to analytic but init_analytic_prob not defined in prob.cpp");
39 int ,
const amrex::Geometry& ,
43 amrex::Error(
"Doing analytic bathymetry, but not defined in prob.cpp");
48 int ,
const amrex::Geometry& ,
51 amrex::MultiFab& , amrex::MultiFab& ) {
52 amrex::Error(
"Doing analytic grid scale (pm, pn), but not defined in prob.cpp");
57 int ,
const amrex::Geometry& ,
61 amrex::Error(
"Doing analytic sea surface height (zeta), but not defined in prob.cpp");
66 int ,
const amrex::Geometry& ,
70 amrex::Error(
"Doing analytic Coriolis forcing, but not defined in prob.cpp");
75 int ,
const amrex::Geometry& ,
80 amrex::Error(
"Doing analytic vertical mixing, but not defined in prob.cpp");
85 int ,
const amrex::Geometry& ,
91 amrex::Error(
"Doing analytic horizontal mixing, but not defined in prob.cpp");
96 int ,
const amrex::Geometry& ,
101 amrex::Error(
"Doing analytic surface momentum flux, but not defined in prob.cpp");
106 int ,
const amrex::Geometry& ,
111 amrex::Error(
"Doing analytic wind, but not defined in prob.cpp");
119 const amrex_real* problo,
120 const amrex_real* probhi) AMREX_ATTRIBUTE_WEAK;
std::unique_ptr< ProblemBase > amrex_probinit(const amrex_real *problo, const amrex_real *probhi) AMREX_ATTRIBUTE_WEAK
Function to init the physical bounds of the domain and instantiate a Problem derived from ProblemBase...
virtual void init_analytic_prob(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &, amrex::MultiFab &, amrex::MultiFab &, amrex::MultiFab &)
virtual void init_analytic_wind(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &, amrex::MultiFab &)
virtual void init_analytic_hmix(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &, amrex::MultiFab &, amrex::MultiFab &)
virtual void init_analytic_coriolis(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &)
virtual void init_analytic_grid_scale(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &, amrex::MultiFab &)
virtual void init_analytic_zeta(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &)
virtual void init_analytic_vmix(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &, amrex::MultiFab &)
virtual ~ProblemBase()=default
Virtual destructor to avoid data leakage with derived class.
virtual void init_analytic_smflux(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &, amrex::MultiFab &)
virtual void init_analytic_bathymetry(int, const amrex::Geometry &, SolverChoice const &, REMORA const &, amrex::MultiFab &)
Class that stores all relevant simulation state data with methods for time stepping.