99 BL_PROFILE_VAR(
"redistribute_term2", redistribute_term2);
103 AMREX_ASSERT(result.nComp() == state.nComp());
105 Real local_dt =
static_cast<Real>(local_dt_d);
107 result_tmp.FillBoundary(geom.periodicity());
110 #pragma omp parallel if (Gpu::notInLaunchRegion())
112 for (MFIter mfi(state,TilingIfNotGPU()); mfi.isValid(); ++mfi)
114 Box
const& bx = mfi.tilebox();
116 EBCellFlagFab
const& flagfab = ebfact.getMultiEBCellFlagFab()[mfi];
117 Array4<EBCellFlag const>
const& flag = flagfab.const_array();
119 bool regular = (flagfab.getType(amrex::grow(bx,4)) == FabType::regular);
120 bool covered = (flagfab.getType(bx) == FabType::covered);
122 Array4<Real>
out = result.array(mfi);
123 Array4<Real>
in = result_tmp.array(mfi);
125 if (!regular && !covered)
127 auto const& vfrac = ebfact.getVolFrac().const_array(mfi);
128 auto const& ccc = ebfact.getCentroid().const_array(mfi);
130 auto const& apx = ebfact.getAreaFrac()[0]->const_array(mfi);
131 auto const& apy = ebfact.getAreaFrac()[1]->const_array(mfi);
132 auto const& apz = ebfact.getAreaFrac()[2]->const_array(mfi);
134 auto const& fcx = ebfact.getFaceCent()[0]->const_array(mfi);
135 auto const& fcy = ebfact.getFaceCent()[1]->const_array(mfi);
136 auto const& fcz = ebfact.getFaceCent()[2]->const_array(mfi);
139 bx_cc = bx_cc.convert(IntVect::TheZeroVector());
142 if (igrid ==
IntVars::xmom) bx_cc = bx_cc.setBig(0, bx_cc.bigEnd(0) + 1);
143 if (igrid ==
IntVars::ymom) bx_cc = bx_cc.setBig(1, bx_cc.bigEnd(1) + 1);
144 if (igrid ==
IntVars::zmom) bx_cc = bx_cc.setBig(2, bx_cc.bigEnd(2) + 1);
146 Box gbx = bx_cc; gbx.grow(3);
149 Box domain_grown = geom.Domain();
150 domain_grown.grow(igrid-1, 1);
151 Geometry geom_new(domain_grown, geom.ProbDomain(), geom.Coord(), geom.isPeriodic());
153 FArrayBox scratch_fab(gbx,ncomp);
154 Array4<Real> scratch = scratch_fab.array();
155 Elixir eli_scratch = scratch_fab.elixir();
159 std::string redistribution_type =
"StateRedist";
162 Array4<Real const> state_arr = state.const_array(mfi);
163 ApplyRedistribution( bx_cc, ncomp,
out,
in, state_arr,
165 apx, apy, apz, vfrac,
167 bc, geom_new, local_dt, redistribution_type,
168 false, 2, 0.5_rt, {});
172 ParallelFor(bx, ncomp, [=] AMREX_GPU_DEVICE (
int i,
int j,
int k,
int n) noexcept
174 out(i,j,k,n) =
in(i,j,k,n);
ParallelFor(grown_box, [=] AMREX_GPU_DEVICE(int i, int j, int k) { qrcuten_arr(i, j, k)=Real(0);qscuten_arr(i, j, k)=Real(0);qicuten_arr(i, j, k)=Real(0);})
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ ymom
Definition: ERF_IndexDefines.H:195
@ zmom
Definition: ERF_IndexDefines.H:196
@ xmom
Definition: ERF_IndexDefines.H:194
real(c_double), private bc
Definition: ERF_module_mp_morr_two_moment.F90:182