51 amrex::Interpolater*
mapper =
nullptr;
139 const bool do_bc=
true;
149#ifdef REMORA_USE_NETCDF
168 Box
gbx =
mfi.growntilebox();
214 amrex::Interpolater*
mapper =
nullptr;
314 for (
int i = 0;
i < Vars::NumTypes; ++
i) {
321 for (
int i = 0;
i < Vars::NumTypes; ++
i) {
330 for (
int i = 0;
i < Vars::NumTypes; ++
i) {
340 data.add_var(
mf_tmp, data.owning);
346 amrex::Error(
"Requested data at a time outside the interval [t_old, t_new]");
350 for (
int i = 0;
i < Vars::NumTypes; ++
i) {
421 amrex::Interpolater*
mapper =
nullptr;
463 amrex::Interpolater*
mapper)
468 MultiFab*
mask =
nullptr;
495 amrex::Abort(
"Dont recognize this box type in REMORA_FillPatch");
515 amrex::Abort(
"Dont recognize this box type in REMORA_FillPatch");
563#ifdef REMORA_USE_NETCDF
582 Box
gbx =
mfi.growntilebox();
631 int ihi = domain.bigEnd(0);
632 int jhi = domain.bigEnd(1);
633 int khi = domain.bigEnd(2);
644 n ==
ori.coordDir());
652#pragma omp parallel if (Gpu::notInLaunchRegion())
658 const Box&
bx =
mfi.tilebox();
663 if (
bx.smallEnd(0) <= domain.smallEnd(0)) {
674 if (
bx.bigEnd(0) >= domain.bigEnd(0)) {
685 if (!
Geom(
lev).isPeriodic(1) &&
ng[1] > 0) {
687 if (
bx.smallEnd(1) <= domain.smallEnd(1)) {
698 if (
bx.bigEnd(1) >= domain.bigEnd(1)) {
709 if (!
Geom(
lev).isPeriodic(2) &&
ng[2] > 0) {
711 if (
bx.smallEnd(2) <= domain.smallEnd(2)) {
722 if (
bx.bigEnd(2) >= domain.bigEnd(2)) {
constexpr amrex::Real one
mf_h setVal(geomdata.ProbHi(2))
int zvel_bc() const noexcept
int xvel_bc() const noexcept
amrex::Vector< amrex::BCRec > domain_bcs_type
vector (over BCVars) of BCRecs
void FillCoarsePatchMap(int lev, amrex::Real time, amrex::MultiFab *mf_fine, amrex::MultiFab *mf_crse, const int bccomp, const int bdy_var_type=BdyVars::null, const int icomp=0, const bool fill_all=true, const int n_not_fill=0, const int icomp_calc=0, const amrex::Real dt=zero, const amrex::MultiFab &mf_calc=amrex::MultiFab(), amrex::Interpolater *mapper=nullptr)
fill an entire multifab by interpolating from the coarser level, explicitly specifying interpolator t...
amrex::Vector< REMORAFillPatcher > FPr_v
Vector over levels of FillPatchers for v (3D)
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vec_mskr
land/sea mask at cell centers (2D)
int yvel_bc() const noexcept
void fill_from_bdyfiles(int lev, amrex::MultiFab &mf_to_fill, const amrex::MultiFab &mf_mask, const amrex::Real time, const int bccomp, const int bdy_var_type, const int icomp_to_fill, const int icomp_calc=0, const amrex::MultiFab &mf_calc=amrex::MultiFab(), const amrex::Real=zero)
Fill boundary data from netcdf file.
amrex::Vector< REMORAFillPatcher > FPr_u
Vector over levels of FillPatchers for u (3D)
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vec_msku
land/sea mask at x-faces (2D)
amrex::Real bdy_time_interval
Interval between boundary data times.
amrex::Vector< amrex::GpuArray< REMORA_BC, AMREX_SPACEDIM *2 > > phys_bc_type
Array holding the "physical" boundary condition types (e.g. "inflow")
amrex::Vector< REMORAFillPatcher > FPr_vbar
Vector over levels of FillPatchers for vbar (2D)
void FillPatchNoBC(int lev, amrex::Real time, amrex::MultiFab &mf_to_be_filled, amrex::Vector< amrex::MultiFab * > const &mfs, const int bdy_var_type=BdyVars::null, const int icomp=0, const bool fill_all=true, const bool fill_set=false)
Fill a new MultiFab by copying in phi from valid region and filling ghost cells without applying boun...
amrex::Vector< std::unique_ptr< amrex::MultiFab > > vec_mskv
land/sea mask at y-faces (2D)
amrex::Vector< std::unique_ptr< REMORAPhysBCFunct > > physbcs
Vector (over level) of functors to apply physical boundary conditions.
void FillCoarsePatch(int lev, amrex::Real time, amrex::MultiFab *mf_fine, amrex::MultiFab *mf_crse, const int bccomp, const int bdy_var_type=BdyVars::null, const int icomp=0, const bool fill_all=true, const int n_not_fill=0, const int icomp_calc=0, const amrex::Real dt=zero, const amrex::MultiFab &mf_calc=amrex::MultiFab())
fill an entire multifab by interpolating from the coarser level
void FillBdyCCVels(int lev, amrex::MultiFab &mf_cc_vel)
Fill the physical boundary conditions for cell-centered velocity (diagnostic only)
TimeInterpolatedData GetDataAtTime(int lev, amrex::Real time)
utility to copy in data from old and/or new state into another multifab
amrex::Vector< REMORAFillPatcher > FPr_c
Vector over levels of FillPatchers for scalars.
amrex::Vector< REMORAFillPatcher > FPr_w
Vector over levels of FillPatchers for w.
amrex::Vector< amrex::Real > t_new
new time at each level
static SolverChoice solverChoice
Container for algorithmic choices.
int cf_set_width
Width for fixing values at coarse-fine interface.
void FillCoarsePatchPC(int lev, amrex::Real time, amrex::MultiFab *mf_fine, amrex::MultiFab *mf_crse, const int bccomp, const int bdy_var_type=BdyVars::null, const int icomp=0, const bool fill_all=true, const int n_not_fill=0, const int icomp_calc=0, const amrex::Real dt=zero, const amrex::MultiFab &mf_calc=amrex::MultiFab())
fill an entire multifab by interpolating from the coarser level using the piecewise constant interpol...
amrex::Vector< REMORAFillPatcher > FPr_ubar
Vector over levels of FillPatchers for ubar (2D)
void FillPatch(int lev, amrex::Real time, amrex::MultiFab &mf_to_be_filled, amrex::Vector< amrex::MultiFab * > const &mfs, const int bccomp, const int bdy_var_type=BdyVars::null, const int icomp=0, const bool fill_all=true, const bool fill_set=false, const int n_not_fill=0, const int icomp_calc=0, const amrex::Real dt=zero, const amrex::MultiFab &mf_calc=amrex::MultiFab())
Fill a new MultiFab by copying in phi from valid region and filling ghost cells.
amrex::Vector< amrex::Real > t_old
old time at each level
amrex::Vector< amrex::GpuArray< amrex::Real, AMREX_SPACEDIM *2 > > m_bc_extdir_vals
Array holding the Dirichlet values at walls which need them.
amrex::Gpu::DeviceVector< amrex::BCRec > domain_bcs_type_d
GPU vector (over BCVars) of BCRecs.
static constexpr int null
bool boundary_from_netcdf