104 AMREX_ASSERT(result.nComp() == state.nComp());
106 result_tmp.FillBoundary(geom.periodicity());
109 #pragma omp parallel if (Gpu::notInLaunchRegion())
111 for (MFIter mfi(state,TilingIfNotGPU()); mfi.isValid(); ++mfi)
113 Box
const& bx = mfi.tilebox();
115 EBCellFlagFab
const& flagfab = ebfact.getMultiEBCellFlagFab()[mfi];
116 Array4<EBCellFlag const>
const& flag = flagfab.const_array();
118 bool regular = (flagfab.getType(amrex::grow(bx,4)) == FabType::regular);
119 bool covered = (flagfab.getType(bx) == FabType::covered);
121 Array4<Real> out = result.array(mfi);
122 Array4<Real> in = result_tmp.array(mfi);
124 if (!regular && !covered)
126 auto const& vfrac = ebfact.getVolFrac().const_array(mfi);
127 auto const& ccc = ebfact.getCentroid().const_array(mfi);
129 auto const& apx = ebfact.getAreaFrac()[0]->const_array(mfi);
130 auto const& apy = ebfact.getAreaFrac()[1]->const_array(mfi);
131 auto const& apz = ebfact.getAreaFrac()[2]->const_array(mfi);
133 auto const& fcx = ebfact.getFaceCent()[0]->const_array(mfi);
134 auto const& fcy = ebfact.getFaceCent()[1]->const_array(mfi);
135 auto const& fcz = ebfact.getFaceCent()[2]->const_array(mfi);
138 bx_cc = bx_cc.convert(IntVect::TheZeroVector());
140 Box gbx = bx_cc; gbx.grow(3);
142 FArrayBox scratch_fab(gbx,ncomp);
143 Array4<Real> scratch = scratch_fab.array();
144 Elixir eli_scratch = scratch_fab.elixir();
148 std::string redistribution_type =
"StateRedist";
151 Array4<Real const> state_arr = state.const_array(mfi);
152 ApplyRedistribution( bx_cc, ncomp, out, in, state_arr,
154 apx, apy, apz, vfrac,
156 bc, geom, local_dt, redistribution_type,
157 false, 2, 0.25_rt, {});
161 ParallelFor(bx, ncomp, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
163 out(i,j,k,n) = in(i,j,k,n);
real(c_double), private bc
Definition: ERF_module_mp_morr_two_moment.F90:181