159 BL_PROFILE_VAR(
"compute_influx_outflux_bdy()", computeInfluxOutfluxBdy);
163 const Box domain = geom.Domain();
164 const auto& domlo = lbound(domain);
165 const auto& domhi = ubound(domain);
168 const Real* a_dx = geom.CellSize();
169 const Real ds_x = a_dx[1];
170 const Real ds_y = a_dx[0];
172 IntVect ngrow = {0,0,0};
175 const auto& bdatxlo = bdy_data_xlo.const_array();
176 const auto& bdatxhi = bdy_data_xhi.const_array();
177 auto const& area_x = area_vec[0]->const_arrays();
179 ParReduce(TypeList<ReduceOpSum>{},
182 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
183 noexcept -> GpuTuple<Real>
185 if ( (i == domlo.x + n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxlo(i,j,k) >
zero) {
186 return { std::abs(bdatxlo(i,j,k)) * area_x[box_no](i,j,k) };
187 }
else if ( (i == domhi.x+1 - n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxhi(i,j,k) <
zero) {
188 return { std::abs(bdatxhi(i,j,k)) * area_x[box_no](i,j,k) };
195 ParReduce(TypeList<ReduceOpSum>{},
198 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
199 noexcept -> GpuTuple<Real>
201 if (i == (domlo.x + n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxlo(i,j,k) <
zero) {
202 return { std::abs(bdatxlo(i,j,k)) * area_x[box_no](i,j,k) };
203 }
else if ( (i == domhi.x+1 - n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxhi(i,j,k) >
zero) {
204 return { std::abs(bdatxhi(i,j,k)) * area_x[box_no](i,j,k) };
211 const auto& bdatylo = bdy_data_ylo.const_array();
212 const auto& bdatyhi = bdy_data_yhi.const_array();
213 auto const& area_y = area_vec[1]->const_arrays();
215 ParReduce(TypeList<ReduceOpSum>{},
218 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
219 noexcept -> GpuTuple<Real>
221 if ( (j == domlo.y + n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatylo(i,j,k) >
zero) {
222 return { std::abs(bdatylo(i,j,k)) * area_y[box_no](i,j,k) };
223 }
else if ( (j == domhi.y+1 - n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatyhi(i,j,k) <
zero) {
224 return { std::abs(bdatyhi(i,j,k)) * area_y[box_no](i,j,k) };
231 ParReduce(TypeList<ReduceOpSum>{},
234 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
235 noexcept -> GpuTuple<Real>
237 if ( (j == domlo.y + n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatylo(i,j,k) <
zero) {
238 return { std::abs(bdatylo(i,j,k)) * area_y[box_no](i,j,k) };
239 }
else if ( (j == domhi.y+1 - n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatyhi(i,j,k) >
zero) {
240 return { std::abs(bdatyhi(i,j,k)) * area_y[box_no](i,j,k) };
246 ParallelDescriptor::ReduceRealSum(influx);
247 ParallelDescriptor::ReduceRealSum(outflux);
constexpr amrex::Real zero
Definition: ERF_Constants.H:8
amrex::Real Real
Definition: ERF_ShocInterface.H:19