2#include <AMReX_Arena.H>
3#include <AMReX_InterpFaceReg_3D_C.H>
20 Geometry
const&
fgeom,
21 BoxArray
const&
cba, DistributionMapping
const&
cdm,
22 Geometry
const&
cgeom,
54 Geometry
const&
fgeom,
55 BoxArray
const&
cba, DistributionMapping
const&
cdm,
56 Geometry
const&
cgeom,
90 for (
int i(0);
i <
fba.size(); ++
i) {
120 Box
fba_bnd = amrex::grow(
fba.minimalBox(), IntVect(1,1,1));
138 if (
fba.ixType()[0] == IndexType::NODE) {
140 }
else if (
fba.ixType()[1] == IndexType::NODE) {
142 }
else if (
fba.ixType()[2] == IndexType::NODE) {
162 const Box&
vbx =
mfi.validbox();
210 MultiFab
const&
crse,
236 Box
const&
fbx =
mfi.validbox();
245 if (
fbx.type(0) == IndexType::NODE)
251 const int ii = amrex::coarsen(
i,
ratio[0]);
253 interp_face_reg(
i,
j,
k,
ratio,
fine_arr,0,
crse_arr,
slope_arr,
ncomp,
per_grown_domain,0);
263 const int ii = amrex::coarsen(
i,
ratio[0]);
272 else if (
fbx.type(1) == IndexType::NODE)
278 const int jj = amrex::coarsen(
j,
ratio[1]);
280 interp_face_reg(
i,
j,
k,
ratio,
fine_arr,0,
crse_arr,
slope_arr,
ncomp,
per_grown_domain,1);
290 const int jj = amrex::coarsen(
j,
ratio[1]);
304 const int kk = amrex::coarsen(
k,
ratio[2]);
306 interp_face_reg(
i,
j,
k,
ratio,
fine_arr,0,
crse_arr,
slope_arr,1,
per_grown_domain,2);
316 const int kk = amrex::coarsen(
k,
ratio[2]);
334 MultiFab
const&
crse,
344 Box
const&
fbx =
mfi.validbox();
358 if (
ratio[dim] > 1) {
constexpr amrex::Real one
mf_h setVal(geomdata.ProbHi(2))
AMREX_ALWAYS_ASSERT(!NSPeriodic||!EWPeriodic)
amrex::InterpBase * m_interp
amrex::DistributionMapping m_fdm
void Define(amrex::BoxArray const &fba, amrex::DistributionMapping const &fdm, amrex::Geometry const &fgeom, amrex::BoxArray const &cba, amrex::DistributionMapping const &cdm, amrex::Geometry const &cgeom, int nghost, int nghost_set, int ncomp, amrex::InterpBase *interp)
Redefine the coarse and fine patch MultiFabs.
void RegisterCoarseData(amrex::Vector< amrex::MultiFab const * > const &crse_data, amrex::Vector< amrex::Real > const &crse_time)
Register the coarse data to be used by the REMORAFillPatcher.
void InterpCell(amrex::MultiFab &fine, amrex::MultiFab const &crse, amrex::Vector< amrex::BCRec > const &bcr, int mask_val)
Interpolate to cell centers.
REMORAFillPatcher(amrex::BoxArray const &fba, amrex::DistributionMapping const &fdm, amrex::Geometry const &fgeom, amrex::BoxArray const &cba, amrex::DistributionMapping const &cdm, amrex::Geometry const &cgeom, int nghost, int nghost_set, int ncomp, amrex::InterpBase *interp)
Fill valid and ghost data with the "state data" at the given time.
amrex::Vector< amrex::Real > m_crse_times
void InterpFace(amrex::MultiFab &fine, amrex::MultiFab const &crse, int mask_val)
Interpolate to cell faces.
std::unique_ptr< amrex::MultiFab > m_cf_crse_data_new
void BuildMask(amrex::BoxArray const &fba, int nghost, int nghost_set)
Generate masking array.
amrex::DistributionMapping m_cdm
std::unique_ptr< amrex::iMultiFab > m_cf_mask
std::unique_ptr< amrex::MultiFab > m_cf_crse_data_old