139 BL_PROFILE_VAR(
"compute_influx_outflux_bdy()", computeInfluxOutfluxBdy);
143 const Box domain = geom.Domain();
144 const auto& domlo = lbound(domain);
145 const auto& domhi = ubound(domain);
148 const Real* a_dx = geom.CellSize();
149 const Real ds_x = a_dx[1];
150 const Real ds_y = a_dx[0];
152 IntVect ngrow = {0,0,0};
155 const auto& bdatxlo = bdy_data_xlo.const_array();
156 const auto& bdatxhi = bdy_data_xhi.const_array();
157 auto const& area_x = area_vec[0]->const_arrays();
159 ParReduce(TypeList<ReduceOpSum>{},
162 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
163 noexcept -> GpuTuple<Real>
165 if ( (i == domlo.x + n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxlo(i,j,k) >
zero) {
166 return { std::abs(bdatxlo(i,j,k)) * area_x[box_no](i,j,k) };
167 }
else if ( (i == domhi.x+1 - n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxhi(i,j,k) <
zero) {
168 return { std::abs(bdatxhi(i,j,k)) * area_x[box_no](i,j,k) };
175 ParReduce(TypeList<ReduceOpSum>{},
178 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
179 noexcept -> GpuTuple<Real>
181 if (i == (domlo.x + n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxlo(i,j,k) <
zero) {
182 return { std::abs(bdatxlo(i,j,k)) * area_x[box_no](i,j,k) };
183 }
else if ( (i == domhi.x+1 - n) && (j >= domlo.y+n && j<= domhi.y-n) && bdatxhi(i,j,k) >
zero) {
184 return { std::abs(bdatxhi(i,j,k)) * area_x[box_no](i,j,k) };
191 const auto& bdatylo = bdy_data_ylo.const_array();
192 const auto& bdatyhi = bdy_data_yhi.const_array();
193 auto const& area_y = area_vec[1]->const_arrays();
195 ParReduce(TypeList<ReduceOpSum>{},
198 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
199 noexcept -> GpuTuple<Real>
201 if ( (j == domlo.y + n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatylo(i,j,k) >
zero) {
202 return { std::abs(bdatylo(i,j,k)) * area_y[box_no](i,j,k) };
203 }
else if ( (j == domhi.y+1 - n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatyhi(i,j,k) <
zero) {
204 return { std::abs(bdatyhi(i,j,k)) * area_y[box_no](i,j,k) };
211 ParReduce(TypeList<ReduceOpSum>{},
214 [=] AMREX_GPU_DEVICE (
int box_no,
int i,
int j,
int k)
215 noexcept -> GpuTuple<Real>
217 if ( (j == domlo.y + n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatylo(i,j,k) <
zero) {
218 return { std::abs(bdatylo(i,j,k)) * area_y[box_no](i,j,k) };
219 }
else if ( (j == domhi.y+1 - n) && (i >= domlo.x+n && i<= domhi.x-n) && bdatyhi(i,j,k) >
zero) {
220 return { std::abs(bdatyhi(i,j,k)) * area_y[box_no](i,j,k) };
226 ParallelDescriptor::ReduceRealSum(influx);
227 ParallelDescriptor::ReduceRealSum(outflux);
constexpr amrex::Real zero
Definition: ERF_Constants.H:6
amrex::Real Real
Definition: ERF_ShocInterface.H:19