97 BL_PROFILE_VAR(
"redistribute_term2", redistribute_term2);
101 AMREX_ASSERT(result.nComp() == state.nComp());
103 result_tmp.FillBoundary(geom.periodicity());
106 #pragma omp parallel if (Gpu::notInLaunchRegion())
108 for (MFIter mfi(state,TilingIfNotGPU()); mfi.isValid(); ++mfi)
110 Box
const& bx = mfi.tilebox();
112 EBCellFlagFab
const& flagfab = ebfact.getMultiEBCellFlagFab()[mfi];
113 Array4<EBCellFlag const>
const& flag = flagfab.const_array();
115 bool regular = (flagfab.getType(amrex::grow(bx,4)) == FabType::regular);
116 bool covered = (flagfab.getType(bx) == FabType::covered);
118 Array4<Real>
out = result.array(mfi);
119 Array4<Real>
in = result_tmp.array(mfi);
121 if (!regular && !covered)
123 auto const& vfrac = ebfact.getVolFrac().const_array(mfi);
124 auto const& ccc = ebfact.getCentroid().const_array(mfi);
126 auto const& apx = ebfact.getAreaFrac()[0]->const_array(mfi);
127 auto const& apy = ebfact.getAreaFrac()[1]->const_array(mfi);
128 auto const& apz = ebfact.getAreaFrac()[2]->const_array(mfi);
130 auto const& fcx = ebfact.getFaceCent()[0]->const_array(mfi);
131 auto const& fcy = ebfact.getFaceCent()[1]->const_array(mfi);
132 auto const& fcz = ebfact.getFaceCent()[2]->const_array(mfi);
135 bx_cc = bx_cc.convert(IntVect::TheZeroVector());
138 if (igrid ==
IntVars::xmom) bx_cc = bx_cc.setBig(0, bx_cc.bigEnd(0) + 1);
139 if (igrid ==
IntVars::ymom) bx_cc = bx_cc.setBig(1, bx_cc.bigEnd(1) + 1);
140 if (igrid ==
IntVars::zmom) bx_cc = bx_cc.setBig(2, bx_cc.bigEnd(2) + 1);
142 Box gbx = bx_cc; gbx.grow(3);
145 Box domain_grown = geom.Domain();
146 domain_grown.grow(igrid-1, 1);
147 Geometry geom_new(domain_grown, geom.ProbDomain(), geom.Coord(), geom.isPeriodic());
149 FArrayBox scratch_fab(gbx,ncomp);
150 Array4<Real> scratch = scratch_fab.array();
151 Elixir eli_scratch = scratch_fab.elixir();
155 std::string redistribution_type =
"StateRedist";
158 Array4<Real const> state_arr = state.const_array(mfi);
159 ApplyRedistribution( bx_cc, ncomp,
out,
in, state_arr,
161 apx, apy, apz, vfrac,
163 bc, geom_new, local_dt, redistribution_type,
164 false, 2, 0.5_rt, {});
168 ParallelFor(bx, ncomp, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
170 out(i,j,k,n) =
in(i,j,k,n);
@ ymom
Definition: ERF_IndexDefines.H:160
@ zmom
Definition: ERF_IndexDefines.H:161
@ xmom
Definition: ERF_IndexDefines.H:159
real(c_double), private bc
Definition: ERF_module_mp_morr_two_moment.F90:181