ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ERF_AdvectionSrcForMom_EB.cpp File Reference
#include "AMReX_BCRec.H"
#include <ERF_Advection.H>
#include <ERF_AdvectionSrcForMom_N.H>
#include <ERF_AdvectionSrcForMom_T.H>
#include <ERF_EBAdvectionSrcForMom.H>
Include dependency graph for ERF_AdvectionSrcForMom_EB.cpp:

Functions

void AdvectionSrcForMom_EB (const MFIter &mfi, const Box &bxx, const Box &bxy, const Box &bxz, const Vector< Box > &bxx_grown, const Vector< Box > &bxy_grown, const Vector< Box > &bxz_grown, const Array4< Real > &rho_u_rhs, const Array4< Real > &rho_v_rhs, const Array4< Real > &rho_w_rhs, const Array4< const Real > &u, const Array4< const Real > &v, const Array4< const Real > &w, const Array4< const Real > &rho_u, const Array4< const Real > &rho_v, const Array4< const Real > &omega, const GpuArray< Real, AMREX_SPACEDIM > &cellSizeInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, const AdvType horiz_adv_type, const AdvType vert_adv_type, const Real horiz_upw_frac, const Real vert_upw_frac, const eb_ &ebfact, GpuArray< Array4< Real >, AMREX_SPACEDIM > &flx_u_arr, GpuArray< Array4< Real >, AMREX_SPACEDIM > &flx_v_arr, GpuArray< Array4< Real >, AMREX_SPACEDIM > &flx_w_arr, const Vector< iMultiFab > &physbnd_mask, const bool already_on_centroids, const int lo_z_face, const int hi_z_face, const Box &)
 

Function Documentation

◆ AdvectionSrcForMom_EB()

void AdvectionSrcForMom_EB ( const MFIter &  mfi,
const Box &  bxx,
const Box &  bxy,
const Box &  bxz,
const Vector< Box > &  bxx_grown,
const Vector< Box > &  bxy_grown,
const Vector< Box > &  bxz_grown,
const Array4< Real > &  rho_u_rhs,
const Array4< Real > &  rho_v_rhs,
const Array4< Real > &  rho_w_rhs,
const Array4< const Real > &  u,
const Array4< const Real > &  v,
const Array4< const Real > &  w,
const Array4< const Real > &  rho_u,
const Array4< const Real > &  rho_v,
const Array4< const Real > &  omega,
const GpuArray< Real, AMREX_SPACEDIM > &  cellSizeInv,
const Array4< const Real > &  mf_mx,
const Array4< const Real > &  mf_ux,
const Array4< const Real > &  mf_vx,
const Array4< const Real > &  mf_my,
const Array4< const Real > &  mf_uy,
const Array4< const Real > &  mf_vy,
const AdvType  horiz_adv_type,
const AdvType  vert_adv_type,
const Real  horiz_upw_frac,
const Real  vert_upw_frac,
const eb_ ebfact,
GpuArray< Array4< Real >, AMREX_SPACEDIM > &  flx_u_arr,
GpuArray< Array4< Real >, AMREX_SPACEDIM > &  flx_v_arr,
GpuArray< Array4< Real >, AMREX_SPACEDIM > &  flx_w_arr,
const Vector< iMultiFab > &  physbnd_mask,
const bool  already_on_centroids,
const int  lo_z_face,
const int  hi_z_face,
const Box &   
)

Function for computing the advective tendency for the momentum equations when using EB

Parameters
[in]bxxbox over which the x-momentum is updated
[in]bxybox over which the y-momentum is updated
[in]bxzbox over which the z-momentum is updated
[in]bxx_growngrown boxes of bxx to loop over the nodal grids of bxx
[in]bxy_growngrown boxes of bxy to loop over the nodal grids of bxy
[in]bxz_growngrown boxes of bxz to loop over the nodal grids of bxz
[out]rho_u_rhstendency for the x-momentum equation
[out]rho_v_rhstendency for the y-momentum equation
[out]rho_w_rhstendency for the z-momentum equation
[in]ux-component of the velocity
[in]vy-component of the velocity
[in]wz-component of the velocity
[in]rho_ux-component of the momentum
[in]rho_vy-component of the momentum
[in]Omegacomponent of the momentum normal to the z-coordinate surface
[in]z_ndheight coordinate at nodes
[in]cellSizeInvinverse of the mesh spacing
[in]mf_mmap factor at cell centers
[in]mf_umap factor at x-faces
[in]mf_vmap factor at y-faces
[in]ebfactEB factories for cell- and face-centered variables
[in]flx_u_arrfluxes for x-momentum
[in]flx_v_arrfluxes for y-momentum
[in]flx_w_arrfluxes for z-momentum
[in]physbnd_maskVector of masks for flux interpolation (=1 otherwise, =0 if physbnd)
[in]already_on_centroidsflag whether flux interpolation is unnecessary
[in]horiz_adv_typesets the spatial order to be used for lateral derivatives
[in]vert_adv_typesets the spatial order to be used for vertical derivatives
77 {
78  BL_PROFILE_VAR("AdvectionSrcForMom_EB", AdvectionSrcForMom_EB);
79 
80  AMREX_ALWAYS_ASSERT(bxz.smallEnd(2) > 0);
81 
82  auto dxInv = cellSizeInv[0], dyInv = cellSizeInv[1], dzInv = cellSizeInv[2];
83 
84  // compute mapfactor inverses
85  Box box2d_u(bxx); box2d_u.setRange(2,0); box2d_u.grow({3,3,0});
86  Box box2d_v(bxy); box2d_v.setRange(2,0); box2d_v.grow({3,3,0});
87 
88  FArrayBox mf_ux_invFAB(box2d_u,1,The_Async_Arena());
89  FArrayBox mf_uy_invFAB(box2d_u,1,The_Async_Arena());
90  FArrayBox mf_vx_invFAB(box2d_v,1,The_Async_Arena());
91  FArrayBox mf_vy_invFAB(box2d_v,1,The_Async_Arena());
92  const Array4<Real>& mf_ux_inv = mf_ux_invFAB.array();
93  const Array4<Real>& mf_uy_inv = mf_uy_invFAB.array();
94  const Array4<Real>& mf_vx_inv = mf_vx_invFAB.array();
95  const Array4<Real>& mf_vy_inv = mf_vy_invFAB.array();
96 
97  ParallelFor(box2d_u, box2d_v,
98  [=] AMREX_GPU_DEVICE (int i, int j, int) noexcept
99  {
100  mf_ux_inv(i,j,0) = 1. / mf_ux(i,j,0);
101  mf_uy_inv(i,j,0) = 1. / mf_uy(i,j,0);
102  },
103  [=] AMREX_GPU_DEVICE (int i, int j, int) noexcept
104  {
105  mf_vx_inv(i,j,0) = 1. / mf_vx(i,j,0);
106  mf_vy_inv(i,j,0) = 1. / mf_vy(i,j,0);
107  });
108 
109  // EB u-factory
110  Array4<const EBCellFlag> u_cflag = (ebfact.get_u_const_factory())->getMultiEBCellFlagFab()[mfi].const_array();
111  Array4<const Real > u_vfrac = (ebfact.get_u_const_factory())->getVolFrac().const_array(mfi);
112  Array4<const Real > u_afrac_x = (ebfact.get_u_const_factory())->getAreaFrac()[0]->const_array(mfi);
113  Array4<const Real > u_afrac_y = (ebfact.get_u_const_factory())->getAreaFrac()[1]->const_array(mfi);
114  Array4<const Real > u_afrac_z = (ebfact.get_u_const_factory())->getAreaFrac()[2]->const_array(mfi);
115  Array4<const Real > u_fcx = (ebfact.get_u_const_factory())->getFaceCent()[0]->const_array(mfi);
116  Array4<const Real > u_fcy = (ebfact.get_u_const_factory())->getFaceCent()[1]->const_array(mfi);
117  Array4<const Real > u_fcz = (ebfact.get_u_const_factory())->getFaceCent()[2]->const_array(mfi);
118 
119  // EB v-factory
120  Array4<const EBCellFlag> v_cflag = (ebfact.get_v_const_factory())->getMultiEBCellFlagFab()[mfi].const_array();
121  Array4<const Real > v_vfrac = (ebfact.get_v_const_factory())->getVolFrac().const_array(mfi);
122  Array4<const Real > v_afrac_x = (ebfact.get_v_const_factory())->getAreaFrac()[0]->const_array(mfi);
123  Array4<const Real > v_afrac_y = (ebfact.get_v_const_factory())->getAreaFrac()[1]->const_array(mfi);
124  Array4<const Real > v_afrac_z = (ebfact.get_v_const_factory())->getAreaFrac()[2]->const_array(mfi);
125  Array4<const Real > v_fcx = (ebfact.get_v_const_factory())->getFaceCent()[0]->const_array(mfi);
126  Array4<const Real > v_fcy = (ebfact.get_v_const_factory())->getFaceCent()[1]->const_array(mfi);
127  Array4<const Real > v_fcz = (ebfact.get_v_const_factory())->getFaceCent()[2]->const_array(mfi);
128 
129  // EB w-factory
130  Array4<const EBCellFlag> w_cflag = (ebfact.get_w_const_factory())->getMultiEBCellFlagFab()[mfi].const_array();
131  Array4<const Real > w_vfrac = (ebfact.get_w_const_factory())->getVolFrac().const_array(mfi);
132  Array4<const Real > w_afrac_x = (ebfact.get_w_const_factory())->getAreaFrac()[0]->const_array(mfi);
133  Array4<const Real > w_afrac_y = (ebfact.get_w_const_factory())->getAreaFrac()[1]->const_array(mfi);
134  Array4<const Real > w_afrac_z = (ebfact.get_w_const_factory())->getAreaFrac()[2]->const_array(mfi);
135  Array4<const Real > w_fcx = (ebfact.get_w_const_factory())->getFaceCent()[0]->const_array(mfi);
136  Array4<const Real > w_fcy = (ebfact.get_w_const_factory())->getFaceCent()[1]->const_array(mfi);
137  Array4<const Real > w_fcz = (ebfact.get_w_const_factory())->getFaceCent()[2]->const_array(mfi);
138 
139  // Inline with 2nd order for efficiency
140  if (horiz_adv_type == AdvType::Centered_2nd && vert_adv_type == AdvType::Centered_2nd)
141  {
142  // Fluxes for x-momentum
143  ParallelFor(bxx_grown[0], bxx_grown[1], bxx_grown[2],
144  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
145  {
146  if ( u_afrac_x(i,j,k)>0.){
147  flx_u_arr[0](i,j,k) = 0.25 * u_afrac_x(i,j,k)
148  * (rho_u(i,j,k) * mf_ux_inv(i,j,0) + rho_u(i-1,j,k) * mf_ux_inv(i-1,j,0))
149  * (u(i-1,j,k) + u(i,j,k));
150  } else {
151  flx_u_arr[0](i,j,k) = 0.;
152  }
153  },
154  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
155  {
156  if ( u_afrac_y(i,j,k)>0.){
157  flx_u_arr[1](i,j,k) = 0.25 * u_afrac_y(i,j,k)
158  * (rho_v(i,j,k) * mf_vy_inv(i,j,0) + rho_v(i-1,j,k) * mf_vy_inv(i-1,j,0))
159  * (u(i,j-1,k) + u(i,j,k));
160  } else {
161  flx_u_arr[1](i,j,k) = 0.;
162  }
163  },
164  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
165  {
166  if ( u_afrac_z(i,j,k)>0.){
167  flx_u_arr[2](i,j,k) = 0.25 * (omega(i,j,k) + omega(i-1,j,k)) * (u(i,j,k-1) + u(i,j,k));
168  } else {
169  flx_u_arr[2](i,j,k) = 0.;
170  }
171  });
172  // Fluxes for y-momentum
173  ParallelFor(bxy_grown[0], bxy_grown[1], bxy_grown[2],
174  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
175  {
176  if ( v_afrac_x(i,j,k)>0.){
177  flx_v_arr[0](i,j,k) = 0.25 * v_afrac_x(i,j,k)
178  * (rho_u(i,j,k) * mf_uy_inv(i,j,0) + rho_u(i,j-1,k) * mf_uy_inv(i,j-1,0))
179  * (v(i-1,j,k) + v(i,j,k));
180  } else {
181  flx_v_arr[0](i,j,k) = 0.;
182  }
183  },
184  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
185  {
186  if ( v_afrac_y(i,j,k)>0.){
187  flx_v_arr[1](i,j,k) = 0.25 * v_afrac_y(i,j,k)
188  * (rho_v(i,j,k) * mf_vy_inv(i,j,0) + rho_v(i,j-1,k) * mf_vy_inv(i,j-1,0))
189  * (v(i,j-1,k) + v(i,j,k));
190  } else {
191  flx_v_arr[1](i,j,k) = 0.;
192  }
193  },
194  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
195  {
196  if ( v_afrac_z(i,j,k)>0.){
197  flx_v_arr[2](i,j,k) = 0.25 * (omega(i,j,k) + omega(i,j-1,k)) * (v(i,j,k-1) + v(i,j,k));
198  } else {
199  flx_v_arr[2](i,j,k) = 0.;
200  }
201  });
202  // Fluxes for z-momentum
203  ParallelFor(bxz_grown[0], bxz_grown[1], bxz_grown[2],
204  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
205  {
206  if ( w_afrac_x(i,j,k)>0.){
207  flx_w_arr[0](i,j,k) = 0.25 * w_afrac_x(i,j,k)
208  * (rho_u(i,j,k) + rho_u(i,j, k-1)) * mf_ux_inv(i,j,0)
209  * (w(i-1,j,k) + w(i,j,k));
210  } else {
211  flx_w_arr[0](i,j,k) = 0.;
212  }
213  },
214  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
215  {
216  if ( w_afrac_y(i,j,k)>0.){
217  flx_w_arr[1](i,j,k) = 0.25 * w_afrac_y(i,j,k)
218  * (rho_v(i,j,k) + rho_v(i,j,k-1)) * mf_vy_inv(i,j,0)
219  * (w(i,j-1,k) + w(i,j,k));
220  } else {
221  flx_w_arr[1](i,j,k) = 0.;
222  }
223  },
224  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
225  {
226  if ( w_afrac_z(i,j,k)>0.){
227  flx_w_arr[2](i,j,k) = (k==hi_z_face+1) ? omega(i,j,k) * w(i,j,k) : // Not sure for this line
228  0.25 * (omega(i,j,k) + omega(i,j,k-1)) * (w(i,j,k) + w(i,j,k-1));
229  } else {
230  flx_w_arr[2](i,j,k) = 0.;
231  }
232  });
233 
234  // Template higher order methods
235  } else {
236 
237  if (horiz_adv_type == AdvType::Centered_2nd) {
238  EBAdvectionSrcForMomVert<CENTERED2>(bxx_grown, bxy_grown, bxz_grown,
239  rho_u, rho_v, omega, u, v, w,
240  u_cflag, u_afrac_x, u_afrac_y, u_afrac_z,
241  v_cflag, v_afrac_x, v_afrac_y, v_afrac_z,
242  w_cflag, w_afrac_x, w_afrac_y, w_afrac_z,
243  mf_ux_inv, mf_vx_inv,
244  mf_uy_inv, mf_vy_inv,
245  horiz_upw_frac, vert_upw_frac, vert_adv_type,
246  flx_u_arr, flx_v_arr, flx_w_arr,
247  lo_z_face, hi_z_face);
248  } else if (horiz_adv_type == AdvType::Upwind_3rd) {
249  EBAdvectionSrcForMomVert<UPWIND3>( bxx_grown, bxy_grown, bxz_grown,
250  rho_u, rho_v, omega, u, v, w,
251  u_cflag, u_afrac_x, u_afrac_y, u_afrac_z,
252  v_cflag, v_afrac_x, v_afrac_y, v_afrac_z,
253  w_cflag, w_afrac_x, w_afrac_y, w_afrac_z,
254  mf_ux_inv, mf_vx_inv,
255  mf_uy_inv, mf_vy_inv,
256  horiz_upw_frac, vert_upw_frac, vert_adv_type,
257  flx_u_arr, flx_v_arr, flx_w_arr,
258  lo_z_face, hi_z_face);
259  } else if (horiz_adv_type == AdvType::Centered_4th) {
260  EBAdvectionSrcForMomVert<CENTERED4>(bxx_grown, bxy_grown, bxz_grown,
261  rho_u, rho_v, omega, u, v, w,
262  u_cflag, u_afrac_x, u_afrac_y, u_afrac_z,
263  v_cflag, v_afrac_x, v_afrac_y, v_afrac_z,
264  w_cflag, w_afrac_x, w_afrac_y, w_afrac_z,
265  mf_ux_inv, mf_vx_inv,
266  mf_uy_inv, mf_vy_inv,
267  horiz_upw_frac, vert_upw_frac, vert_adv_type,
268  flx_u_arr, flx_v_arr, flx_w_arr,
269  lo_z_face, hi_z_face);
270  } else if (horiz_adv_type == AdvType::Upwind_5th) {
271  EBAdvectionSrcForMomVert<UPWIND5>( bxx_grown, bxy_grown, bxz_grown,
272  rho_u, rho_v, omega, u, v, w,
273  u_cflag, u_afrac_x, u_afrac_y, u_afrac_z,
274  v_cflag, v_afrac_x, v_afrac_y, v_afrac_z,
275  w_cflag, w_afrac_x, w_afrac_y, w_afrac_z,
276  mf_ux_inv, mf_vx_inv,
277  mf_uy_inv, mf_vy_inv,
278  horiz_upw_frac, vert_upw_frac, vert_adv_type,
279  flx_u_arr, flx_v_arr, flx_w_arr,
280  lo_z_face, hi_z_face);
281  } else if (horiz_adv_type == AdvType::Centered_6th) {
282  EBAdvectionSrcForMomVert<CENTERED6>(bxx_grown, bxy_grown, bxz_grown,
283  rho_u, rho_v, omega, u, v, w,
284  u_cflag, u_afrac_x, u_afrac_y, u_afrac_z,
285  v_cflag, v_afrac_x, v_afrac_y, v_afrac_z,
286  w_cflag, w_afrac_x, w_afrac_y, w_afrac_z,
287  mf_ux_inv, mf_vx_inv,
288  mf_uy_inv, mf_vy_inv,
289  horiz_upw_frac, vert_upw_frac, vert_adv_type,
290  flx_u_arr, flx_v_arr, flx_w_arr,
291  lo_z_face, hi_z_face);
292  } else {
293  AMREX_ASSERT_WITH_MESSAGE(false, "Unknown advection scheme!");
294  }
295  } // horiz_adv_type
296 
297  // Update momentum RHS using the fluxes
298  if (already_on_centroids) {
299 
300  ParallelFor(bxx, bxy, bxz,
301  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
302  {
303  if (u_vfrac(i,j,k)>0.) {
304  Real mfsq = mf_ux(i,j,0) * mf_uy(i,j,0);
305 
306  Real advectionSrc = ( (flx_u_arr[0](i+1, j , k ) - flx_u_arr[0](i, j, k)) * dxInv * mfsq
307  + (flx_u_arr[1](i , j+1, k ) - flx_u_arr[1](i, j, k)) * dyInv * mfsq
308  + (flx_u_arr[2](i , j , k+1) - flx_u_arr[2](i, j, k)) * dzInv ) / u_vfrac(i,j,k);
309  rho_u_rhs(i, j, k) = -advectionSrc;
310  } else {
311  rho_u_rhs(i, j, k) = 0.;
312  }
313  },
314  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
315  {
316  if (v_vfrac(i,j,k)>0.) {
317  Real mfsq = mf_vx(i,j,0) * mf_vy(i,j,0);
318 
319  Real advectionSrc = ( (flx_v_arr[0](i+1, j , k ) - flx_v_arr[0](i, j, k)) * dxInv * mfsq
320  + (flx_v_arr[1](i , j+1, k ) - flx_v_arr[1](i, j, k)) * dyInv * mfsq
321  + (flx_v_arr[2](i , j , k+1) - flx_v_arr[2](i, j, k)) * dzInv ) / v_vfrac(i,j,k);
322  rho_v_rhs(i, j, k) = -advectionSrc;
323  } else {
324  rho_v_rhs(i, j, k) = 0.;
325  }
326  },
327  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
328  {
329  if (w_vfrac(i,j,k)>0.) {
330  Real mfsq = mf_mx(i,j,0) * mf_my(i,j,0);
331 
332  rho_w_rhs(i, j, k) = - ( (w_afrac_x(i+1, j , k ) * flx_w_arr[0](i+1, j , k ) - w_afrac_x(i, j, k) * flx_w_arr[0](i, j, k)) * dxInv * mfsq
333  + (w_afrac_y(i , j+1, k ) * flx_w_arr[1](i , j+1, k ) - w_afrac_y(i, j, k) * flx_w_arr[1](i, j, k)) * dyInv * mfsq
334  + (w_afrac_z(i , j , k+1) * flx_w_arr[2](i , j , k+1) - w_afrac_z(i, j, k) * flx_w_arr[2](i, j, k)) * dzInv ) / w_vfrac(i,j,k);
335  } else {
336  rho_w_rhs(i, j, k) = 0;
337  }
338  });
339 
340  } else {
341  // !already_on_centroids
342 
343  Array4<const int> u_mask = physbnd_mask[IntVars::xmom].const_array(mfi);
344  Array4<const int> v_mask = physbnd_mask[IntVars::ymom].const_array(mfi);
345  Array4<const int> w_mask = physbnd_mask[IntVars::zmom].const_array(mfi);
346 
347  ParallelFor(bxx, bxy, bxz,
348  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
349  {
350  if (u_vfrac(i,j,k)>0.) {
351  Real mfsq = mf_ux(i,j,0) * mf_uy(i,j,0);
352 
353  if (u_cflag(i,j,k).isCovered())
354  {
355  rho_u_rhs(i, j, k) = 0.;
356  }
357  else if (u_cflag(i,j,k).isRegular())
358  {
359  rho_u_rhs(i, j, k) = - ( (u_afrac_x(i+1, j , k ) * flx_u_arr[0](i+1, j , k ) - u_afrac_x(i, j, k) * flx_u_arr[0](i, j, k)) * dxInv * mfsq
360  + (u_afrac_y(i , j+1, k ) * flx_u_arr[1](i , j+1, k ) - u_afrac_y(i, j, k) * flx_u_arr[1](i, j, k)) * dyInv * mfsq
361  + (u_afrac_z(i , j , k+1) * flx_u_arr[2](i , j , k+1) - u_afrac_z(i, j, k) * flx_u_arr[2](i, j, k)) * dzInv ) / u_vfrac(i,j,k);
362  }
363  else
364  {
365  // Bilinear interpolation
366  Real fxm = flx_u_arr[0](i,j,k);
367  if (u_afrac_x(i,j,k) != Real(0.0) && u_afrac_x(i,j,k) != Real(1.0)) {
368  int jj = j + static_cast<int>(std::copysign(Real(1.0), u_fcx(i,j,k,0)));
369  int kk = k + static_cast<int>(std::copysign(Real(1.0), u_fcx(i,j,k,1)));
370  Real fracy = (u_mask(i-1,jj,k) || u_mask(i,jj,k)) ? std::abs(u_fcx(i,j,k,0)) : Real(0.0);
371  Real fracz = (u_mask(i-1,j,kk) || u_mask(i,j,kk)) ? std::abs(u_fcx(i,j,k,1)) : Real(0.0);
372  fxm = (Real(1.0)-fracy)*(Real(1.0)-fracz)*fxm
373  + fracy *(Real(1.0)-fracz)*flx_u_arr[0](i,jj,k )
374  + fracz *(Real(1.0)-fracy)*flx_u_arr[0](i,j ,kk)
375  + fracy * fracz *flx_u_arr[0](i,jj,kk);
376  }
377 
378  Real fxp = flx_u_arr[0](i+1,j,k);
379  if (u_afrac_x(i+1,j,k) != Real(0.0) && u_afrac_x(i+1,j,k) != Real(1.0)) {
380  int jj = j + static_cast<int>(std::copysign(Real(1.0),u_fcx(i+1,j,k,0)));
381  int kk = k + static_cast<int>(std::copysign(Real(1.0),u_fcx(i+1,j,k,1)));
382  Real fracy = (u_mask(i,jj,k) || u_mask(i+1,jj,k)) ? std::abs(u_fcx(i+1,j,k,0)) : Real(0.0);
383  Real fracz = (u_mask(i,j,kk) || u_mask(i+1,j,kk)) ? std::abs(u_fcx(i+1,j,k,1)) : Real(0.0);
384  fxp = (Real(1.0)-fracy)*(Real(1.0)-fracz)*fxp
385  + fracy *(Real(1.0)-fracz)*flx_u_arr[0](i+1,jj,k )
386  + fracz *(Real(1.0)-fracy)*flx_u_arr[0](i+1,j ,kk)
387  + fracy * fracz *flx_u_arr[0](i+1,jj,kk);
388  }
389 
390  Real fym = flx_u_arr[1](i,j,k);
391  if (u_afrac_y(i,j,k) != Real(0.0) && u_afrac_y(i,j,k) != Real(1.0)) {
392  int ii = i + static_cast<int>(std::copysign(Real(1.0),u_fcy(i,j,k,0)));
393  int kk = k + static_cast<int>(std::copysign(Real(1.0),u_fcy(i,j,k,1)));
394  Real fracx = (u_mask(ii,j-1,k) || u_mask(ii,j,k)) ? std::abs(u_fcy(i,j,k,0)) : Real(0.0);
395  Real fracz = (u_mask(i,j-1,kk) || u_mask(i,j,kk)) ? std::abs(u_fcy(i,j,k,1)) : Real(0.0);
396  fym = (Real(1.0)-fracx)*(Real(1.0)-fracz)*fym
397  + fracx *(Real(1.0)-fracz)*flx_u_arr[1](ii,j,k )
398  + fracz *(Real(1.0)-fracx)*flx_u_arr[1](i ,j,kk)
399  + fracx * fracz *flx_u_arr[1](ii,j,kk);
400  }
401 
402  Real fyp = flx_u_arr[1](i,j+1,k);
403  if (u_afrac_y(i,j+1,k) != Real(0.0) && u_afrac_y(i,j+1,k) != Real(1.0)) {
404  int ii = i + static_cast<int>(std::copysign(Real(1.0),u_fcy(i,j+1,k,0)));
405  int kk = k + static_cast<int>(std::copysign(Real(1.0),u_fcy(i,j+1,k,1)));
406  Real fracx = (u_mask(ii,j,k) || u_mask(ii,j+1,k)) ? std::abs(u_fcy(i,j+1,k,0)) : Real(0.0);
407  Real fracz = (u_mask(i,j,kk) || u_mask(i,j+1,kk)) ? std::abs(u_fcy(i,j+1,k,1)) : Real(0.0);
408  fyp = (Real(1.0)-fracx)*(Real(1.0)-fracz)*fyp
409  + fracx *(Real(1.0)-fracz)*flx_u_arr[1](ii,j+1,k )
410  + fracz *(Real(1.0)-fracx)*flx_u_arr[1](i ,j+1,kk)
411  + fracx * fracz *flx_u_arr[1](ii,j+1,kk);
412  }
413 
414  Real fzm = flx_u_arr[2](i,j,k);
415  if (u_afrac_z(i,j,k) != Real(0.0) && u_afrac_z(i,j,k) != Real(1.0)) {
416  int ii = i + static_cast<int>(std::copysign(Real(1.0),u_fcz(i,j,k,0)));
417  int jj = j + static_cast<int>(std::copysign(Real(1.0),u_fcz(i,j,k,1)));
418  Real fracx = (u_mask(ii,j,k-1) || u_mask(ii,j,k)) ? std::abs(u_fcz(i,j,k,0)) : Real(0.0);
419  Real fracy = (u_mask(i,jj,k-1) || u_mask(i,jj,k)) ? std::abs(u_fcz(i,j,k,1)) : Real(0.0);
420  fzm = (Real(1.0)-fracx)*(Real(1.0)-fracy)*fzm
421  + fracx *(Real(1.0)-fracy)*flx_u_arr[2](ii,j ,k)
422  + fracy *(Real(1.0)-fracx)*flx_u_arr[2](i ,jj,k)
423  + fracx * fracy *flx_u_arr[2](ii,jj,k);
424  }
425 
426  Real fzp = flx_u_arr[2](i,j,k+1);
427  if (u_afrac_z(i,j,k+1) != Real(0.0) && u_afrac_z(i,j,k+1) != Real(1.0)) {
428  int ii = i + static_cast<int>(std::copysign(Real(1.0),u_fcz(i,j,k+1,0)));
429  int jj = j + static_cast<int>(std::copysign(Real(1.0),u_fcz(i,j,k+1,1)));
430  Real fracx = (u_mask(ii,j,k) || u_mask(ii,j,k+1)) ? std::abs(u_fcz(i,j,k+1,0)) : Real(0.0);
431  Real fracy = (u_mask(i,jj,k) || u_mask(i,jj,k+1)) ? std::abs(u_fcz(i,j,k+1,1)) : Real(0.0);
432  fzp = (Real(1.0)-fracx)*(Real(1.0)-fracy)*fzp
433  + fracx *(Real(1.0)-fracy)*flx_u_arr[2](ii,j ,k+1)
434  + fracy *(Real(1.0)-fracx)*flx_u_arr[2](i ,jj,k+1)
435  + fracx * fracy *flx_u_arr[2](ii,jj,k+1);
436  }
437 
438  rho_u_rhs(i, j, k) = - ( (u_afrac_x(i+1, j , k ) * fxp - u_afrac_x(i, j, k) * fxm) * dxInv * mfsq
439  + (u_afrac_y(i , j+1, k ) * fyp - u_afrac_y(i, j, k) * fym) * dyInv * mfsq
440  + (u_afrac_z(i , j , k+1) * fzp - u_afrac_z(i, j, k) * fzm) * dzInv ) / u_vfrac(i,j,k);
441  }
442 
443  } else {
444  rho_u_rhs(i, j, k) = 0.;
445  }
446  },
447  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
448  {
449  if (v_vfrac(i,j,k)>0.) {
450  Real mfsq = mf_vx(i,j,0) * mf_vy(i,j,0);
451 
452  if (v_cflag(i,j,k).isCovered())
453  {
454  rho_v_rhs(i, j, k) = 0.;
455  }
456  else if (v_cflag(i,j,k).isRegular())
457  {
458  rho_v_rhs(i, j, k) = - ( (v_afrac_x(i+1, j , k ) * flx_v_arr[0](i+1, j , k ) - v_afrac_x(i, j, k) * flx_v_arr[0](i, j, k)) * dxInv * mfsq
459  + (v_afrac_y(i , j+1, k ) * flx_v_arr[1](i , j+1, k ) - v_afrac_y(i, j, k) * flx_v_arr[1](i, j, k)) * dyInv * mfsq
460  + (v_afrac_z(i , j , k+1) * flx_v_arr[2](i , j , k+1) - v_afrac_z(i, j, k) * flx_v_arr[2](i, j, k)) * dzInv ) / v_vfrac(i,j,k);
461  }
462  else
463  {
464  // Bilinear interpolation
465  Real fxm = flx_v_arr[0](i,j,k);
466  if (v_afrac_x(i,j,k) != Real(0.0) && v_afrac_x(i,j,k) != Real(1.0)) {
467  int jj = j + static_cast<int>(std::copysign(Real(1.0), v_fcx(i,j,k,0)));
468  int kk = k + static_cast<int>(std::copysign(Real(1.0), v_fcx(i,j,k,1)));
469  Real fracy = (v_mask(i-1,jj,k) || v_mask(i,jj,k)) ? std::abs(v_fcx(i,j,k,0)) : Real(0.0);
470  Real fracz = (v_mask(i-1,j,kk) || v_mask(i,j,kk)) ? std::abs(v_fcx(i,j,k,1)) : Real(0.0);
471  fxm = (Real(1.0)-fracy)*(Real(1.0)-fracz)*fxm
472  + fracy *(Real(1.0)-fracz)*flx_v_arr[0](i,jj,k )
473  + fracz *(Real(1.0)-fracy)*flx_v_arr[0](i,j ,kk)
474  + fracy * fracz *flx_v_arr[0](i,jj,kk);
475  }
476 
477  Real fxp = flx_v_arr[0](i+1,j,k);
478  if (v_afrac_x(i+1,j,k) != Real(0.0) && v_afrac_x(i+1,j,k) != Real(1.0)) {
479  int jj = j + static_cast<int>(std::copysign(Real(1.0),v_fcx(i+1,j,k,0)));
480  int kk = k + static_cast<int>(std::copysign(Real(1.0),v_fcx(i+1,j,k,1)));
481  Real fracy = (v_mask(i,jj,k) || v_mask(i+1,jj,k)) ? std::abs(v_fcx(i+1,j,k,0)) : Real(0.0);
482  Real fracz = (v_mask(i,j,kk) || v_mask(i+1,j,kk)) ? std::abs(v_fcx(i+1,j,k,1)) : Real(0.0);
483  fxp = (Real(1.0)-fracy)*(Real(1.0)-fracz)*fxp
484  + fracy *(Real(1.0)-fracz)*flx_v_arr[0](i+1,jj,k )
485  + fracz *(Real(1.0)-fracy)*flx_v_arr[0](i+1,j ,kk)
486  + fracy * fracz *flx_v_arr[0](i+1,jj,kk);
487  }
488 
489  Real fym = flx_v_arr[1](i,j,k);
490  if (v_afrac_y(i,j,k) != Real(0.0) && v_afrac_y(i,j,k) != Real(1.0)) {
491  int ii = i + static_cast<int>(std::copysign(Real(1.0),v_fcy(i,j,k,0)));
492  int kk = k + static_cast<int>(std::copysign(Real(1.0),v_fcy(i,j,k,1)));
493  Real fracx = (v_mask(ii,j-1,k) || v_mask(ii,j,k)) ? std::abs(v_fcy(i,j,k,0)) : Real(0.0);
494  Real fracz = (v_mask(i,j-1,kk) || v_mask(i,j,kk)) ? std::abs(v_fcy(i,j,k,1)) : Real(0.0);
495  fym = (Real(1.0)-fracx)*(Real(1.0)-fracz)*fym
496  + fracx *(Real(1.0)-fracz)*flx_v_arr[1](ii,j,k )
497  + fracz *(Real(1.0)-fracx)*flx_v_arr[1](i ,j,kk)
498  + fracx * fracz *flx_v_arr[1](ii,j,kk);
499  }
500 
501  Real fyp = flx_v_arr[1](i,j+1,k);
502  if (v_afrac_y(i,j+1,k) != Real(0.0) && v_afrac_y(i,j+1,k) != Real(1.0)) {
503  int ii = i + static_cast<int>(std::copysign(Real(1.0),v_fcy(i,j+1,k,0)));
504  int kk = k + static_cast<int>(std::copysign(Real(1.0),v_fcy(i,j+1,k,1)));
505  Real fracx = (v_mask(ii,j,k) || v_mask(ii,j+1,k)) ? std::abs(v_fcy(i,j+1,k,0)) : Real(0.0);
506  Real fracz = (v_mask(i,j,kk) || v_mask(i,j+1,kk)) ? std::abs(v_fcy(i,j+1,k,1)) : Real(0.0);
507  fyp = (Real(1.0)-fracx)*(Real(1.0)-fracz)*fyp
508  + fracx *(Real(1.0)-fracz)*flx_v_arr[1](ii,j+1,k )
509  + fracz *(Real(1.0)-fracx)*flx_v_arr[1](i ,j+1,kk)
510  + fracx * fracz *flx_v_arr[1](ii,j+1,kk);
511  }
512 
513  Real fzm = flx_v_arr[2](i,j,k);
514  if (v_afrac_z(i,j,k) != Real(0.0) && v_afrac_z(i,j,k) != Real(1.0)) {
515  int ii = i + static_cast<int>(std::copysign(Real(1.0),v_fcz(i,j,k,0)));
516  int jj = j + static_cast<int>(std::copysign(Real(1.0),v_fcz(i,j,k,1)));
517  Real fracx = (v_mask(ii,j,k-1) || v_mask(ii,j,k)) ? std::abs(v_fcz(i,j,k,0)) : Real(0.0);
518  Real fracy = (v_mask(i,jj,k-1) || v_mask(i,jj,k)) ? std::abs(v_fcz(i,j,k,1)) : Real(0.0);
519  fzm = (Real(1.0)-fracx)*(Real(1.0)-fracy)*fzm
520  + fracx *(Real(1.0)-fracy)*flx_v_arr[2](ii,j ,k)
521  + fracy *(Real(1.0)-fracx)*flx_v_arr[2](i ,jj,k)
522  + fracx * fracy *flx_v_arr[2](ii,jj,k);
523  }
524 
525  Real fzp = flx_v_arr[2](i,j,k+1);
526  if (v_afrac_z(i,j,k+1) != Real(0.0) && v_afrac_z(i,j,k+1) != Real(1.0)) {
527  int ii = i + static_cast<int>(std::copysign(Real(1.0),v_fcz(i,j,k+1,0)));
528  int jj = j + static_cast<int>(std::copysign(Real(1.0),v_fcz(i,j,k+1,1)));
529  Real fracx = (v_mask(ii,j,k) || v_mask(ii,j,k+1)) ? std::abs(v_fcz(i,j,k+1,0)) : Real(0.0);
530  Real fracy = (v_mask(i,jj,k) || v_mask(i,jj,k+1)) ? std::abs(v_fcz(i,j,k+1,1)) : Real(0.0);
531  fzp = (Real(1.0)-fracx)*(Real(1.0)-fracy)*fzp
532  + fracx *(Real(1.0)-fracy)*flx_v_arr[2](ii,j ,k+1)
533  + fracy *(Real(1.0)-fracx)*flx_v_arr[2](i ,jj,k+1)
534  + fracx * fracy *flx_v_arr[2](ii,jj,k+1);
535  }
536 
537  rho_v_rhs(i, j, k) = - ( (v_afrac_x(i+1, j , k ) * fxp - v_afrac_x(i, j, k) * fxm) * dxInv * mfsq
538  + (v_afrac_y(i , j+1, k ) * fyp - v_afrac_y(i, j, k) * fym) * dyInv * mfsq
539  + (v_afrac_z(i , j , k+1) * fzp - v_afrac_z(i, j, k) * fzm) * dzInv ) / v_vfrac(i,j,k);
540  }
541 
542  } else {
543  rho_v_rhs(i, j, k) = 0.;
544  }
545  },
546  [=] AMREX_GPU_DEVICE (int i, int j, int k) noexcept
547  {
548  if (w_vfrac(i,j,k)>0.) {
549  Real mfsq = mf_mx(i,j,0) * mf_my(i,j,0);
550 
551  if (w_cflag(i,j,k).isCovered())
552  {
553  rho_w_rhs(i, j, k) = 0.;
554  }
555  else if (w_cflag(i,j,k).isRegular())
556  {
557  rho_w_rhs(i, j, k) = - ( (w_afrac_x(i+1, j , k ) * flx_w_arr[0](i+1, j , k ) - w_afrac_x(i, j, k) * flx_w_arr[0](i, j, k)) * dxInv * mfsq
558  + (w_afrac_y(i , j+1, k ) * flx_w_arr[1](i , j+1, k ) - w_afrac_y(i, j, k) * flx_w_arr[1](i, j, k)) * dyInv * mfsq
559  + (w_afrac_z(i , j , k+1) * flx_w_arr[2](i , j , k+1) - w_afrac_z(i, j, k) * flx_w_arr[2](i, j, k)) * dzInv ) / w_vfrac(i,j,k);
560  }
561  else
562  {
563  // Bilinear interpolation
564  Real fxm = flx_w_arr[0](i,j,k);
565  if (w_afrac_x(i,j,k) != Real(0.0) && w_afrac_x(i,j,k) != Real(1.0)) {
566  int jj = j + static_cast<int>(std::copysign(Real(1.0), w_fcx(i,j,k,0)));
567  int kk = k + static_cast<int>(std::copysign(Real(1.0), w_fcx(i,j,k,1)));
568  Real fracy = (w_mask(i-1,jj,k) || w_mask(i,jj,k)) ? std::abs(w_fcx(i,j,k,0)) : Real(0.0);
569  Real fracz = (w_mask(i-1,j,kk) || w_mask(i,j,kk)) ? std::abs(w_fcx(i,j,k,1)) : Real(0.0);
570  fxm = (Real(1.0)-fracy)*(Real(1.0)-fracz)*fxm
571  + fracy *(Real(1.0)-fracz)*flx_w_arr[0](i,jj,k )
572  + fracz *(Real(1.0)-fracy)*flx_w_arr[0](i,j ,kk)
573  + fracy * fracz *flx_w_arr[0](i,jj,kk);
574  }
575 
576  Real fxp = flx_w_arr[0](i+1,j,k);
577  if (w_afrac_x(i+1,j,k) != Real(0.0) && w_afrac_x(i+1,j,k) != Real(1.0)) {
578  int jj = j + static_cast<int>(std::copysign(Real(1.0),w_fcx(i+1,j,k,0)));
579  int kk = k + static_cast<int>(std::copysign(Real(1.0),w_fcx(i+1,j,k,1)));
580  Real fracy = (w_mask(i,jj,k) || w_mask(i+1,jj,k)) ? std::abs(w_fcx(i+1,j,k,0)) : Real(0.0);
581  Real fracz = (w_mask(i,j,kk) || w_mask(i+1,j,kk)) ? std::abs(w_fcx(i+1,j,k,1)) : Real(0.0);
582  fxp = (Real(1.0)-fracy)*(Real(1.0)-fracz)*fxp
583  + fracy *(Real(1.0)-fracz)*flx_w_arr[0](i+1,jj,k )
584  + fracz *(Real(1.0)-fracy)*flx_w_arr[0](i+1,j ,kk)
585  + fracy * fracz *flx_w_arr[0](i+1,jj,kk);
586  }
587 
588  Real fym = flx_w_arr[1](i,j,k);
589  if (w_afrac_y(i,j,k) != Real(0.0) && w_afrac_y(i,j,k) != Real(1.0)) {
590  int ii = i + static_cast<int>(std::copysign(Real(1.0),w_fcy(i,j,k,0)));
591  int kk = k + static_cast<int>(std::copysign(Real(1.0),w_fcy(i,j,k,1)));
592  Real fracx = (w_mask(ii,j-1,k) || w_mask(ii,j,k)) ? std::abs(w_fcy(i,j,k,0)) : Real(0.0);
593  Real fracz = (w_mask(i,j-1,kk) || w_mask(i,j,kk)) ? std::abs(w_fcy(i,j,k,1)) : Real(0.0);
594  fym = (Real(1.0)-fracx)*(Real(1.0)-fracz)*fym
595  + fracx *(Real(1.0)-fracz)*flx_w_arr[1](ii,j,k )
596  + fracz *(Real(1.0)-fracx)*flx_w_arr[1](i ,j,kk)
597  + fracx * fracz *flx_w_arr[1](ii,j,kk);
598  }
599 
600  Real fyp = flx_w_arr[1](i,j+1,k);
601  if (w_afrac_y(i,j+1,k) != Real(0.0) && w_afrac_y(i,j+1,k) != Real(1.0)) {
602  int ii = i + static_cast<int>(std::copysign(Real(1.0),w_fcy(i,j+1,k,0)));
603  int kk = k + static_cast<int>(std::copysign(Real(1.0),w_fcy(i,j+1,k,1)));
604  Real fracx = (w_mask(ii,j,k) || w_mask(ii,j+1,k)) ? std::abs(w_fcy(i,j+1,k,0)) : Real(0.0);
605  Real fracz = (w_mask(i,j,kk) || w_mask(i,j+1,kk)) ? std::abs(w_fcy(i,j+1,k,1)) : Real(0.0);
606  fyp = (Real(1.0)-fracx)*(Real(1.0)-fracz)*fyp
607  + fracx *(Real(1.0)-fracz)*flx_w_arr[1](ii,j+1,k )
608  + fracz *(Real(1.0)-fracx)*flx_w_arr[1](i ,j+1,kk)
609  + fracx * fracz *flx_w_arr[1](ii,j+1,kk);
610  }
611 
612  Real fzm = flx_w_arr[2](i,j,k);
613  if (w_afrac_z(i,j,k) != Real(0.0) && w_afrac_z(i,j,k) != Real(1.0)) {
614  int ii = i + static_cast<int>(std::copysign(Real(1.0),w_fcz(i,j,k,0)));
615  int jj = j + static_cast<int>(std::copysign(Real(1.0),w_fcz(i,j,k,1)));
616  Real fracx = (w_mask(ii,j,k-1) || w_mask(ii,j,k)) ? std::abs(w_fcz(i,j,k,0)) : Real(0.0);
617  Real fracy = (w_mask(i,jj,k-1) || w_mask(i,jj,k)) ? std::abs(w_fcz(i,j,k,1)) : Real(0.0);
618  fzm = (Real(1.0)-fracx)*(Real(1.0)-fracy)*fzm
619  + fracx *(Real(1.0)-fracy)*flx_w_arr[2](ii,j ,k)
620  + fracy *(Real(1.0)-fracx)*flx_w_arr[2](i ,jj,k)
621  + fracx * fracy *flx_w_arr[2](ii,jj,k);
622  }
623 
624  Real fzp = flx_w_arr[2](i,j,k+1);
625  if (w_afrac_z(i,j,k+1) != Real(0.0) && w_afrac_z(i,j,k+1) != Real(1.0)) {
626  int ii = i + static_cast<int>(std::copysign(Real(1.0),w_fcz(i,j,k+1,0)));
627  int jj = j + static_cast<int>(std::copysign(Real(1.0),w_fcz(i,j,k+1,1)));
628  Real fracx = (w_mask(ii,j,k) || w_mask(ii,j,k+1)) ? std::abs(w_fcz(i,j,k+1,0)) : Real(0.0);
629  Real fracy = (w_mask(i,jj,k) || w_mask(i,jj,k+1)) ? std::abs(w_fcz(i,j,k+1,1)) : Real(0.0);
630  fzp = (Real(1.0)-fracx)*(Real(1.0)-fracy)*fzp
631  + fracx *(Real(1.0)-fracy)*flx_w_arr[2](ii,j ,k+1)
632  + fracy *(Real(1.0)-fracx)*flx_w_arr[2](i ,jj,k+1)
633  + fracx * fracy *flx_w_arr[2](ii,jj,k+1);
634  }
635 
636  rho_w_rhs(i, j, k) = - ( (w_afrac_x(i+1, j , k ) * fxp - w_afrac_x(i, j, k) * fxm) * dxInv * mfsq
637  + (w_afrac_y(i , j+1, k ) * fyp - w_afrac_y(i, j, k) * fym) * dyInv * mfsq
638  + (w_afrac_z(i , j , k+1) * fzp - w_afrac_z(i, j, k) * fzm) * dzInv ) / w_vfrac(i,j,k);
639  }
640 
641  } else {
642  rho_w_rhs(i, j, k) = 0;
643  }
644  });
645 
646  }
647 
648 }
void AdvectionSrcForMom_EB(const MFIter &mfi, const Box &bxx, const Box &bxy, const Box &bxz, const Vector< Box > &bxx_grown, const Vector< Box > &bxy_grown, const Vector< Box > &bxz_grown, const Array4< Real > &rho_u_rhs, const Array4< Real > &rho_v_rhs, const Array4< Real > &rho_w_rhs, const Array4< const Real > &u, const Array4< const Real > &v, const Array4< const Real > &w, const Array4< const Real > &rho_u, const Array4< const Real > &rho_v, const Array4< const Real > &omega, const GpuArray< Real, AMREX_SPACEDIM > &cellSizeInv, const Array4< const Real > &mf_mx, const Array4< const Real > &mf_ux, const Array4< const Real > &mf_vx, const Array4< const Real > &mf_my, const Array4< const Real > &mf_uy, const Array4< const Real > &mf_vy, const AdvType horiz_adv_type, const AdvType vert_adv_type, const Real horiz_upw_frac, const Real vert_upw_frac, const eb_ &ebfact, GpuArray< Array4< Real >, AMREX_SPACEDIM > &flx_u_arr, GpuArray< Array4< Real >, AMREX_SPACEDIM > &flx_v_arr, GpuArray< Array4< Real >, AMREX_SPACEDIM > &flx_w_arr, const Vector< iMultiFab > &physbnd_mask, const bool already_on_centroids, const int lo_z_face, const int hi_z_face, const Box &)
Definition: ERF_AdvectionSrcForMom_EB.cpp:44
@ Centered_4th
@ Centered_6th
@ Centered_2nd
eb_aux_ const * get_w_const_factory() const noexcept
Definition: ERF_EB.H:50
eb_aux_ const * get_v_const_factory() const noexcept
Definition: ERF_EB.H:49
eb_aux_ const * get_u_const_factory() const noexcept
Definition: ERF_EB.H:48
@ ymom
Definition: ERF_IndexDefines.H:160
@ zmom
Definition: ERF_IndexDefines.H:161
@ xmom
Definition: ERF_IndexDefines.H:159
@ omega
Definition: ERF_Morrison.H:53
Here is the call graph for this function: