27 BL_PROFILE(
"ERF::FillZeroAreaFaceFluxes()");
29 const GpuArray<Real, AMREX_SPACEDIM>
dxInv = geom.InvCellSizeArray();
31 for (MFIter mfi(phi,
TileNoZ()); mfi.isValid(); ++mfi)
33 const Box& tbx = mfi.tilebox();
34 const Box& xbx = mfi.nodaltilebox(0);
35 const Box& ybx = mfi.nodaltilebox(1);
36 const Box& zbx = mfi.nodaltilebox(2);
39 EBCellFlagFab
const& cflag_fab = (ebfact.getMultiEBCellFlagFab())[mfi];
40 Array4<const EBCellFlag> cflag = cflag_fab.const_array();
42 if (cflag_fab.getType(tbx) == FabType::singlevalued)
44 Array4<const Real> apx = ebfact.getAreaFrac()[0]->const_array(mfi);
45 Array4<const Real> apy = ebfact.getAreaFrac()[1]->const_array(mfi);
46 Array4<const Real> apz = ebfact.getAreaFrac()[2]->const_array(mfi);
48 Array4<const EBCellFlag> u_cflag = ebfact_u.getMultiEBCellFlagFab()[mfi].const_array();
49 Array4<const EBCellFlag> v_cflag = ebfact_v.getMultiEBCellFlagFab()[mfi].const_array();
50 Array4<const EBCellFlag> w_cflag = ebfact_w.getMultiEBCellFlagFab()[mfi].const_array();
52 Array4<Real const>
const& p_arr = phi.const_array(mfi);
53 Array4<Real>
const& fx = fluxes[0].array(mfi);
54 Array4<Real>
const& fy = fluxes[1].array(mfi);
55 Array4<Real>
const& fz = fluxes[2].array(mfi);
59 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
61 if (apx(i,j,k) ==
zero) {
62 if (!u_cflag(i,j,k).isCovered()) {
63 if (cflag(i,j,k).isCovered() && !cflag(i-1,j,k).isCovered()) {
64 fx(i,j,k) =
dxInv[0] * (p_arr(i-3,j,k) -
three*p_arr(i-2,j,k) +
two*p_arr(i-1,j,k));
65 }
else if (cflag(i-1,j,k).isCovered() && !cflag(i,j,k).isCovered()) {
66 fx(i,j,k) =
dxInv[0] * (
three*p_arr(i+1,j,k) - p_arr(i+2,j,k) -
two*p_arr(i,j,k));
72 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
74 if (apy(i,j,k) ==
zero) {
75 if (!v_cflag(i,j,k).isCovered()) {
76 if (cflag(i,j,k).isCovered() && !cflag(i,j-1,k).isCovered()) {
77 fy(i,j,k) =
dxInv[1] * (p_arr(i,j-3,k) -
three*p_arr(i,j-2,k) +
two*p_arr(i,j-1,k));
78 }
else if (cflag(i,j-1,k).isCovered() && !cflag(i,j,k).isCovered()) {
79 fy(i,j,k) =
dxInv[1] * (
three*p_arr(i,j+1,k) - p_arr(i,j+2,k) -
two*p_arr(i,j,k));
85 [=] AMREX_GPU_DEVICE (
int i,
int j,
int k) noexcept
87 if (apz(i,j,k) ==
zero) {
88 if (!w_cflag(i,j,k).isCovered()) {
89 if (cflag(i,j,k).isCovered() && !cflag(i,j,k-1).isCovered()) {
90 fz(i,j,k) =
dxInv[2] * (p_arr(i,j,k-3) -
three*p_arr(i,j,k-2) +
two*p_arr(i,j,k-1));
91 }
else if (cflag(i,j,k-1).isCovered() && !cflag(i,j,k).isCovered()) {
92 fz(i,j,k) =
dxInv[2] * (
three*p_arr(i,j,k+1) - p_arr(i,j,k+2) -
two*p_arr(i,j,k));
constexpr amrex::Real three
Definition: ERF_Constants.H:11
constexpr amrex::Real two
Definition: ERF_Constants.H:10
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
amrex::GpuArray< Real, AMREX_SPACEDIM > dxInv
Definition: ERF_InitCustomPertVels_ParticleTests.H:17
ParallelFor(fab_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_FORCE_INLINE amrex::IntVect TileNoZ()
Definition: ERF_TileNoZ.H:11