ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_EBAdvection.H
Go to the documentation of this file.
1 /**
2  * \file ERF_EBAdvection.H
3  * \brief Declares embedded-boundary advection source-term kernels.
4  */
5 #ifndef ERF_EBADVECTION_H_
6 #define ERF_EBADVECTION_H_
7 
8 #include "AMReX.H"
9 #include "AMReX_MultiFab.H"
10 #include "AMReX_BCRec.H"
11 #include "AMReX_YAFluxRegister.H"
12 
13 #include "ERF_DataStruct.H"
14 #include "ERF_IndexDefines.H"
15 #include "ERF_SurfaceLayer.H"
16 
17 /**
18  * \brief Compute EB advection tendency for density and potential temperature.
19  *
20  * The routine also computes face-averaged momentum arrays reused by scalar
21  * advection and stores directional fluxes in flx_arr.
22  */
23 void EBAdvectionSrcForRho (const amrex::Box& bx,
24  const amrex::Array4<amrex::Real>& src,
25  const amrex::Array4<const amrex::Real>& rho_u, // These are being used
26  const amrex::Array4<const amrex::Real>& rho_v, // to define the fluxes
27  const amrex::Array4<const amrex::Real>& omega,
28  const amrex::Array4< amrex::Real>& avg_xmom, // These are being defined
29  const amrex::Array4< amrex::Real>& avg_ymom, // from the rho fluxes
30  const amrex::Array4< amrex::Real>& avg_zmom,
31  const amrex::Array4<const int>& mask_arr,
32  const amrex::Array4<const amrex::EBCellFlag>& cfg_arr,
33  const amrex::Array4<const amrex::Real>& ax_arr,
34  const amrex::Array4<const amrex::Real>& ay_arr,
35  const amrex::Array4<const amrex::Real>& az_arr,
36  const amrex::Array4<const amrex::Real>& fcx_arr,
37  const amrex::Array4<const amrex::Real>& fcy_arr,
38  const amrex::Array4<const amrex::Real>& fcz_arr,
39  const amrex::Array4<const amrex::Real>& detJ,
40  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
41  const amrex::Array4<const amrex::Real>& mf_mx,
42  const amrex::Array4<const amrex::Real>& mf_my,
43  const amrex::Array4<const amrex::Real>& mf_uy,
44  const amrex::Array4<const amrex::Real>& mf_vx,
45  const amrex::GpuArray<const amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_arr,
46  const bool fixed_rho,
47  bool already_on_centroids);
48 
49 /**
50  * \brief Compute EB advection tendency for scalars other than density.
51  *
52  * The scalar fluxes use momentum averages from EBAdvectionSrcForRho and support
53  * lower-order stencils near covered EB cells.
54  */
55 void EBAdvectionSrcForScalars (const amrex::Box& bx,
56  const int icomp, const int ncomp,
57  const amrex::Array4<const amrex::Real>& avg_xmom,
58  const amrex::Array4<const amrex::Real>& avg_ymom,
59  const amrex::Array4<const amrex::Real>& avg_zmom,
60  const amrex::Array4<const amrex::Real>& cell_prim,
61  const amrex::Array4<amrex::Real>& src,
62  const amrex::Array4<const int>& mask_arr,
63  const amrex::Array4<const amrex::EBCellFlag>& cfg_arr,
64  const amrex::Array4<const amrex::Real>& ax_arr,
65  const amrex::Array4<const amrex::Real>& ay_arr,
66  const amrex::Array4<const amrex::Real>& az_arr,
67  const amrex::Array4<const amrex::Real>& fcx_arr,
68  const amrex::Array4<const amrex::Real>& fcy_arr,
69  const amrex::Array4<const amrex::Real>& fcz_arr,
70  const amrex::Array4<const amrex::Real>& vf_arr,
71  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
72  const amrex::Array4<const amrex::Real>& mf_mx,
73  const amrex::Array4<const amrex::Real>& mf_my,
74  const AdvType horiz_adv_type, const AdvType vert_adv_type,
75  const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac,
76  const amrex::GpuArray<const amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_arr,
77  const amrex::Box& domain,
78  const amrex::BCRec* bc_ptr_h,
79  bool already_on_centroids);
80 
81 #endif
void EBAdvectionSrcForScalars(const amrex::Box &bx, const int icomp, const int ncomp, const amrex::Array4< const amrex::Real > &avg_xmom, const amrex::Array4< const amrex::Real > &avg_ymom, const amrex::Array4< const amrex::Real > &avg_zmom, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< amrex::Real > &src, const amrex::Array4< const int > &mask_arr, const amrex::Array4< const amrex::EBCellFlag > &cfg_arr, const amrex::Array4< const amrex::Real > &ax_arr, const amrex::Array4< const amrex::Real > &ay_arr, const amrex::Array4< const amrex::Real > &az_arr, const amrex::Array4< const amrex::Real > &fcx_arr, const amrex::Array4< const amrex::Real > &fcy_arr, const amrex::Array4< const amrex::Real > &fcz_arr, const amrex::Array4< const amrex::Real > &vf_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_mx, const amrex::Array4< const amrex::Real > &mf_my, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, const amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_arr, const amrex::Box &domain, const amrex::BCRec *bc_ptr_h, bool already_on_centroids)
Compute EB advection tendency for scalars other than density.
void EBAdvectionSrcForRho(const amrex::Box &bx, const amrex::Array4< amrex::Real > &src, 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< amrex::Real > &avg_xmom, const amrex::Array4< amrex::Real > &avg_ymom, const amrex::Array4< amrex::Real > &avg_zmom, const amrex::Array4< const int > &mask_arr, const amrex::Array4< const amrex::EBCellFlag > &cfg_arr, const amrex::Array4< const amrex::Real > &ax_arr, const amrex::Array4< const amrex::Real > &ay_arr, const amrex::Array4< const amrex::Real > &az_arr, const amrex::Array4< const amrex::Real > &fcx_arr, const amrex::Array4< const amrex::Real > &fcy_arr, const amrex::Array4< const amrex::Real > &fcz_arr, 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_my, const amrex::Array4< const amrex::Real > &mf_uy, const amrex::Array4< const amrex::Real > &mf_vx, const amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_arr, const bool fixed_rho, bool already_on_centroids)
Compute EB advection tendency for density and potential temperature.
AdvType
Definition: ERF_IndexDefines.H:261
amrex::Real Real
Definition: ERF_ShocInterface.H:19
@ omega
Definition: ERF_Morrison.H:54