ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_AdvectionSrcForMom.cpp File Reference
#include "AMReX_BCRec.H"
#include "ERF_Advection.H"
#include "ERF_AdvectionSrcForMom_N.H"
#include "ERF_AdvectionSrcForMom_T.H"
#include "ERF_EB.H"
Include dependency graph for ERF_AdvectionSrcForMom.cpp:

Functions

void AdvectionSrcForMom (const MFIter &mfi, const Box &bx, 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 > &cell_data, 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 Array4< const Real > &z_nd, const Array4< const Real > &ax, const Array4< const Real > &ay, const Array4< const Real > &az, const Array4< const Real > &detJ, Gpu::DeviceVector< Real > &stretched_dz_d, 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, MeshType &mesh_type, TerrainType &terrain_type, 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 &domain, const BCRec *bc_ptr_h)
 

Function Documentation

◆ AdvectionSrcForMom()

void AdvectionSrcForMom ( const MFIter &  mfi,
const Box &  bx,
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 > &  cell_data,
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 Array4< const Real > &  z_nd,
const Array4< const Real > &  ax,
const Array4< const Real > &  ay,
const Array4< const Real > &  az,
const Array4< const Real > &  detJ,
Gpu::DeviceVector< Real > &  stretched_dz_d,
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,
MeshType &  mesh_type,
TerrainType &  terrain_type,
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 &  domain,
const BCRec *  bc_ptr_h 
)

Function for computing the advective tendency for the momentum equations This routine has explicit expressions for all cases (terrain or not) when the horizontal and vertical spatial orders are <= 2, and calls more specialized functions when either (or both) spatial order(s) is greater than two

Parameters
[in]mfiMultiFab Iterator
[in]bxcell-centered box used to rebuild open-boundary momentum boxes
[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]cell_datacell-centered conservative state used by open-boundary terms
[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]axArea fraction of x-faces
[in]ayArea fraction of y-faces
[in]azArea fraction of z-faces
[in]detJJacobian of the metric transformation (= 1 if use_terrain_fitted_coords is false)
[in]stretched_dz_ddevice vector of vertical cell spacing
[in]cellSizeInvinverse of the grid spacing
[in]mf_mxx map factor at cell centers
[in]mf_uxx map factor at x-faces
[in]mf_vxx map factor at y-faces
[in]mf_myy map factor at cell centers
[in]mf_uyy map factor at x-faces
[in]mf_vyy map factor at y-faces
[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
[in]horiz_upw_frachorizontal upwind blending fraction
[in]vert_upw_fracvertical upwind blending fraction
[in]mesh_typegrid spacing type
[in]terrain_typeterrain representation type
[in]ebfactEB factories for cell- and face-centered variables
[in,out]flx_u_arrcontainer of fluxes for x-momentum
[in,out]flx_v_arrcontainer of fluxes for y-momentum
[in,out]flx_w_arrcontainer of fluxes 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]lo_z_faceminimum z-face k-index at this level
[in]hi_z_facemaximum z-face k-index at this level
[in]domaincomputational domain
[in]bc_ptr_hboundary condition records on host
109 {
110  BL_PROFILE_VAR("AdvectionSrcForMom", AdvectionSrcForMom);
111 
112  AMREX_ALWAYS_ASSERT(bxz.smallEnd(2) > 0);
113 
114  // compute mapfactor inverses
115  Box box2d_u(bxx); box2d_u.setRange(2,0); box2d_u.grow({3,3,0});
116  Box box2d_v(bxy); box2d_v.setRange(2,0); box2d_v.grow({3,3,0});
117  FArrayBox mf_u_invFAB(box2d_u,1,The_Async_Arena());
118  FArrayBox mf_v_invFAB(box2d_v,1,The_Async_Arena());
119  const Array4<Real>& mf_u_inv = mf_u_invFAB.array();
120  const Array4<Real>& mf_v_inv = mf_v_invFAB.array();
121 
122  const bool use_terrain_fitted_coords = ( terrain_type == TerrainType::StaticFittedMesh ||
123  terrain_type == TerrainType::MovingFittedMesh);
124 
125  ParallelFor(box2d_u, box2d_v,
126  [=] AMREX_GPU_DEVICE (int i, int j, int) noexcept
127  {
128  mf_u_inv(i,j,0) = one / mf_ux(i,j,0);
129  },
130  [=] AMREX_GPU_DEVICE (int i, int j, int) noexcept
131  {
132  mf_v_inv(i,j,0) = one / mf_vy(i,j,0);
133  });
134 
135  if (mesh_type == MeshType::ConstantDz && terrain_type != TerrainType::EB)
136  {
137  // amrex::Print() << "ADV:CONSTANT DZ " << std::endl;
138  AdvectionSrcForMom_ConstantDz(bxx, bxy, bxz,
139  rho_u_rhs, rho_v_rhs, rho_w_rhs, u, v, w,
140  rho_u, rho_v, omega,
141  cellSizeInv, stretched_dz_d,
142  mf_mx, mf_ux, mf_vx, mf_my, mf_uy, mf_vy,
143  horiz_adv_type, vert_adv_type,
144  horiz_upw_frac, vert_upw_frac,
145  terrain_type, lo_z_face, hi_z_face);
146  }
147  else if (mesh_type == MeshType::StretchedDz && terrain_type != TerrainType::EB)
148  {
149  // amrex::Print() << "ADV:STRETCHED DZ " << std::endl;
150  AdvectionSrcForMom_StretchedDz(bxx, bxy, bxz,
151  rho_u_rhs, rho_v_rhs, rho_w_rhs,
152  u, v, w, rho_u, rho_v, omega,
153  cellSizeInv, stretched_dz_d,
154  mf_mx, mf_ux, mf_vx, mf_my, mf_uy, mf_vy,
155  horiz_adv_type, vert_adv_type,
156  horiz_upw_frac, vert_upw_frac,
157  lo_z_face, hi_z_face);
158  }
159  else if ( terrain_type == TerrainType::EB)
160  {
161  // amrex::Print() << "ADV:EB " << std::endl;
162  AdvectionSrcForMom_EB(mfi, bxx, bxy, bxz, bxx_grown, bxy_grown, bxz_grown,
163  rho_u_rhs, rho_v_rhs, rho_w_rhs,
164  u, v, w,
165  rho_u, rho_v, omega,
166  cellSizeInv,
167  mf_mx, mf_ux, mf_vx, mf_my, mf_uy, mf_vy,
168  horiz_adv_type, vert_adv_type,
169  horiz_upw_frac, vert_upw_frac,
170  ebfact, flx_u_arr, flx_v_arr, flx_w_arr,
171  physbnd_mask, already_on_centroids,
172  lo_z_face, hi_z_face, domain);
173  }
174  else
175  {
176  AMREX_ALWAYS_ASSERT(use_terrain_fitted_coords);
177  // amrex::Print() << "ADV:TF " << std::endl;
178  AdvectionSrcForMom_TF(bxx, bxy, bxz,
179  rho_u_rhs, rho_v_rhs, rho_w_rhs,
180  u, v, w,
181  rho_u, rho_v, omega,
182  z_nd, ax, ay, az, detJ,
183  cellSizeInv,
184  mf_mx, mf_ux, mf_vx, mf_my, mf_uy, mf_vy,
185  horiz_adv_type, vert_adv_type,
186  horiz_upw_frac, vert_upw_frac,
187  lo_z_face, hi_z_face);
188 
189  }
190 
191  // Open bc will be imposed upon all vars (we only access cons here for simplicity)
192  const bool xlo_open = (bc_ptr_h[BCVars::cons_bc].lo(0) == ERFBCType::open);
193  const bool xhi_open = (bc_ptr_h[BCVars::cons_bc].hi(0) == ERFBCType::open);
194  const bool ylo_open = (bc_ptr_h[BCVars::cons_bc].lo(1) == ERFBCType::open);
195  const bool yhi_open = (bc_ptr_h[BCVars::cons_bc].hi(1) == ERFBCType::open);
196 
197  // We recreate tbx, tbz, tbz here rather than using bxx, bxy, bxz because those
198  // have already been shrunk by one in the case of open BCs.
199  Box tbx(surroundingNodes(bx,0));
200  Box tby(surroundingNodes(bx,1));
201  Box tbz(surroundingNodes(bx,2)); tbz.growLo(2,-1); tbz.growHi(2,-1);
202 
203  const int domhi_z = domain.bigEnd(2);
204 
205  // Special advection operator for open BC (bndry normal/tangent operations)
206  if (xlo_open)
207  {
208  Box tbx_xlo, tby_xlo, tbz_xlo;
209  if (tbx.smallEnd(0) == domain.smallEnd(0)) { tbx_xlo = makeSlab(tbx,0,domain.smallEnd(0));}
210  if (tby.smallEnd(0) == domain.smallEnd(0)) { tby_xlo = makeSlab(tby,0,domain.smallEnd(0));}
211  if (tbz.smallEnd(0) == domain.smallEnd(0)) { tbz_xlo = makeSlab(tbz,0,domain.smallEnd(0));}
212 
213  bool do_lo = true;
214 
215  AdvectionSrcForOpenBC_Normal(tbx_xlo, 0, rho_u_rhs, u, cell_data, cellSizeInv, do_lo);
216  AdvectionSrcForOpenBC_Tangent_Ymom(tby_xlo, 0, rho_v_rhs, v,
217  rho_u, rho_v, omega,
218  ay, az, detJ, cellSizeInv,
219  do_lo);
220  AdvectionSrcForOpenBC_Tangent_Zmom(tbz_xlo, 0, rho_w_rhs, w,
221  rho_u, rho_v, omega,
222  ax, ay, az, detJ, cellSizeInv,
223  domhi_z, do_lo);
224  }
225  if (xhi_open)
226  {
227  Box tbx_xhi, tby_xhi, tbz_xhi;
228  if (tbx.bigEnd(0) == domain.bigEnd(0)+1) { tbx_xhi = makeSlab(tbx,0,domain.bigEnd(0)+1);}
229  if (tby.bigEnd(0) == domain.bigEnd(0)) { tby_xhi = makeSlab(tby,0,domain.bigEnd(0) );}
230  if (tbz.bigEnd(0) == domain.bigEnd(0)) { tbz_xhi = makeSlab(tbz,0,domain.bigEnd(0) );}
231 
232  AdvectionSrcForOpenBC_Normal(tbx_xhi, 0, rho_u_rhs, u, cell_data, cellSizeInv);
233  AdvectionSrcForOpenBC_Tangent_Ymom(tby_xhi, 0, rho_v_rhs, v,
234  rho_u, rho_v, omega,
235  ay, az, detJ, cellSizeInv);
236  AdvectionSrcForOpenBC_Tangent_Zmom(tbz_xhi, 0, rho_w_rhs, w,
237  rho_u, rho_v, omega,
238  ax, ay, az, detJ, cellSizeInv,
239  domhi_z);
240  }
241  if (ylo_open)
242  {
243  Box tbx_ylo, tby_ylo, tbz_ylo;
244  if (tbx.smallEnd(1) == domain.smallEnd(1)) { tbx_ylo = makeSlab(tbx,1,domain.smallEnd(1));}
245  if (tby.smallEnd(1) == domain.smallEnd(1)) { tby_ylo = makeSlab(tby,1,domain.smallEnd(1));}
246  if (tbz.smallEnd(1) == domain.smallEnd(1)) { tbz_ylo = makeSlab(tbz,1,domain.smallEnd(1));}
247 
248  bool do_lo = true;
249  AdvectionSrcForOpenBC_Tangent_Xmom(tbx_ylo, 1, rho_u_rhs, u,
250  rho_u, rho_v, omega,
251  ax, az, detJ, cellSizeInv,
252  do_lo);
253  AdvectionSrcForOpenBC_Normal(tby_ylo, 1, rho_v_rhs, v, cell_data, cellSizeInv, do_lo);
254  AdvectionSrcForOpenBC_Tangent_Zmom(tbz_ylo, 1, rho_w_rhs, w,
255  rho_u, rho_v, omega,
256  ax, ay, az, detJ, cellSizeInv,
257  domhi_z, do_lo);
258  }
259  if (yhi_open)
260  {
261  Box tbx_yhi, tby_yhi, tbz_yhi;
262  if (tbx.bigEnd(1) == domain.bigEnd(1)) { tbx_yhi = makeSlab(tbx,1,domain.bigEnd(1) );}
263  if (tby.bigEnd(1) == domain.bigEnd(1)+1) { tby_yhi = makeSlab(tby,1,domain.bigEnd(1)+1);}
264  if (tbz.bigEnd(1) == domain.bigEnd(1)) { tbz_yhi = makeSlab(tbz,1,domain.bigEnd(1) );}
265 
266  AdvectionSrcForOpenBC_Tangent_Xmom(tbx_yhi, 1, rho_u_rhs, u,
267  rho_u, rho_v, omega,
268  ax, az, detJ, cellSizeInv);
269  AdvectionSrcForOpenBC_Normal(tby_yhi, 1, rho_v_rhs, v, cell_data, cellSizeInv);
270  AdvectionSrcForOpenBC_Tangent_Zmom(tbz_yhi, 1, rho_w_rhs, w,
271  rho_u, rho_v, omega,
272  ax, ay, az, detJ, cellSizeInv,
273  domhi_z);
274  }
275 }
void AdvectionSrcForMom(const MFIter &mfi, const Box &bx, 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 > &cell_data, 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 Array4< const Real > &z_nd, const Array4< const Real > &ax, const Array4< const Real > &ay, const Array4< const Real > &az, const Array4< const Real > &detJ, Gpu::DeviceVector< Real > &stretched_dz_d, 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, MeshType &mesh_type, TerrainType &terrain_type, 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 &domain, const BCRec *bc_ptr_h)
Definition: ERF_AdvectionSrcForMom.cpp:65
void AdvectionSrcForMom_EB(const amrex::MFIter &mfi, const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Vector< amrex::Box > &bxx_grown, const amrex::Vector< amrex::Box > &bxy_grown, const amrex::Vector< amrex::Box > &bxz_grown, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const eb_ &ebfact, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_u_arr, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_v_arr, amrex::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_w_arr, const amrex::Vector< amrex::iMultiFab > &physbnd_mask, const bool already_on_centroids, const int lo_z_face, const int hi_z_face, const amrex::Box &domain)
void AdvectionSrcForMom_StretchedDz(const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const int lo_z_face, const int hi_z_face)
void AdvectionSrcForOpenBC_Tangent_Ymom(const amrex::Box &bxy, const int &dir, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::Array4< const amrex::Real > &ay, const amrex::Array4< const amrex::Real > &az, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const bool do_lo=false)
void AdvectionSrcForOpenBC_Tangent_Xmom(const amrex::Box &bxx, const int &dir, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::Array4< const amrex::Real > &ax, const amrex::Array4< const amrex::Real > &az, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const bool do_lo=false)
void AdvectionSrcForMom_TF(const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::Array4< const amrex::Real > &z_nd, const amrex::Array4< const amrex::Real > &ax, const amrex::Array4< const amrex::Real > &ay, const amrex::Array4< const amrex::Real > &az, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const int lo_z_face, const int hi_z_face)
void AdvectionSrcForOpenBC_Normal(const amrex::Box &bx, const int &dir, const amrex::Array4< amrex::Real > &rhs_arr, const amrex::Array4< const amrex::Real > &vel_norm_arr, const amrex::Array4< const amrex::Real > &cell_data_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &dxInv, const bool do_lo=false)
void AdvectionSrcForOpenBC_Tangent_Zmom(const amrex::Box &bxz, const int &dir, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::Array4< const amrex::Real > &ax, const amrex::Array4< const amrex::Real > &ay, const amrex::Array4< const amrex::Real > &az, const amrex::Array4< const amrex::Real > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const int domhi_z, const bool do_lo=false)
void AdvectionSrcForMom_ConstantDz(const amrex::Box &bxx, const amrex::Box &bxy, const amrex::Box &bxz, const amrex::Array4< amrex::Real > &rho_u_rhs, const amrex::Array4< amrex::Real > &rho_v_rhs, const amrex::Array4< amrex::Real > &rho_w_rhs, const amrex::Array4< const amrex::Real > &u, const amrex::Array4< const amrex::Real > &v, const amrex::Array4< const amrex::Real > &w, const amrex::Array4< const amrex::Real > &rho_u, const amrex::Array4< const amrex::Real > &rho_v, const amrex::Array4< const amrex::Real > &Omega, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_ux, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::Array4< const amrex::Real > &mf_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vy, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, TerrainType &terrain_type, const int lo_z_face, const int hi_z_face)
constexpr amrex::Real one
Definition: ERF_Constants.H:9
AMREX_ALWAYS_ASSERT(bx.length()[2]==khi+1)
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);})
Real w
Definition: ERF_Plotfile2DInterpolator.cpp:22
@ cons_bc
Definition: ERF_IndexDefines.H:86
@ open
Definition: ERF_IndexDefines.H:256
@ omega
Definition: ERF_Morrison.H:54
Here is the call graph for this function: