47 AMREX_ASSERT(result.nComp() == state.nComp());
49 Box
const& bx = mfi.tilebox();
52 EBCellFlagFab
const& flagfab = ebfact.getMultiEBCellFlagFab()[mfi];
53 Array4<EBCellFlag const>
const& flag = flagfab.const_array();
55 bool regular = (flagfab.getType(amrex::grow(bx,4)) == FabType::regular);
56 bool covered = (flagfab.getType(bx) == FabType::covered);
58 Array4<Real> out = result.array(mfi);
59 Array4<Real> in = result_tmp.array(mfi);
61 if (!regular && !covered)
63 auto const& vfrac = ebfact.getVolFrac().const_array(mfi);
64 auto const& ccc = ebfact.getCentroid().const_array(mfi);
66 auto const& apx = ebfact.getAreaFrac()[0]->const_array(mfi);
67 auto const& apy = ebfact.getAreaFrac()[1]->const_array(mfi);
68 auto const& apz = ebfact.getAreaFrac()[2]->const_array(mfi);
70 auto const& fcx = ebfact.getFaceCent()[0]->const_array(mfi);
71 auto const& fcy = ebfact.getFaceCent()[1]->const_array(mfi);
72 auto const& fcz = ebfact.getFaceCent()[2]->const_array(mfi);
74 Box gbx = bx; gbx.grow(3);
76 FArrayBox scratch_fab(gbx,ncomp);
77 Array4<Real> scratch = scratch_fab.array();
78 Elixir eli_scratch = scratch_fab.elixir();
86 std::string redistribution_type =
"StateRedist";
89 Array4<Real const> state_arr = state.const_array(mfi);
90 ApplyRedistribution( bx, ncomp, out, in, state_arr,
94 bc, geom, local_dt, redistribution_type);
98 ParallelFor(bx, ncomp, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
100 out(i,j,k,n) = in(i,j,k,n);