ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ERF_Advection.H
Go to the documentation of this file.
1 #ifndef ERF_ADVECTION_H_
2 #define ERF_ADVECTION_H_
3 
4 #include <AMReX.H>
5 #include <AMReX_MultiFab.H>
6 #include <AMReX_BCRec.H>
7 #include <AMReX_YAFluxRegister.H>
8 
9 #include <ERF_DataStruct.H>
10 #include <ERF_IndexDefines.H>
11 #include <ERF_ABLMost.H>
12 
13 
14 /** Compute advection tendency for density and potential temperature */
15 void AdvectionSrcForRho (const amrex::Box& bx,
16  const amrex::Array4<amrex::Real>& src,
17  const amrex::Array4<const amrex::Real>& rho_u, // These are being used
18  const amrex::Array4<const amrex::Real>& rho_v, // to define the fluxes
19  const amrex::Array4<const amrex::Real>& omega,
20  const amrex::Array4< amrex::Real>& avg_xmom, // These are being defined
21  const amrex::Array4< amrex::Real>& avg_ymom, // from the rho fluxes
22  const amrex::Array4< amrex::Real>& avg_zmom,
23  const amrex::Array4<const amrex::Real>& ax_arr,
24  const amrex::Array4<const amrex::Real>& ay_arr,
25  const amrex::Array4<const amrex::Real>& az_arr,
26  const amrex::Array4<const amrex::Real>& detJ,
27  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
28  const amrex::Array4<const amrex::Real>& mf_m,
29  const amrex::Array4<const amrex::Real>& mf_u,
30  const amrex::Array4<const amrex::Real>& mf_v,
31  const amrex::GpuArray<const amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_arr,
32  const bool fixed_rho);
33 
34 /** Compute advection tendency for all scalars other than density and potential temperature */
35 void AdvectionSrcForScalars (const amrex::Real& dt,
36  const amrex::Box& bx,
37  const int icomp, const int ncomp,
38  const amrex::Array4<const amrex::Real>& avg_xmom,
39  const amrex::Array4<const amrex::Real>& avg_ymom,
40  const amrex::Array4<const amrex::Real>& avg_zmom,
41  const amrex::Array4<const amrex::Real>& cur_cons,
42  const amrex::Array4<const amrex::Real>& cell_prim,
43  const amrex::Array4<amrex::Real>& src,
44  const bool& use_mono_adv,
45  amrex::Real* max_s_ptr,
46  amrex::Real* min_s_ptr,
47  const amrex::Array4<const amrex::Real>& vf_arr,
48  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
49  const amrex::Array4<const amrex::Real>& mf_m,
50  const AdvType horiz_adv_type, const AdvType vert_adv_type,
51  const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac,
52  const amrex::GpuArray<const amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_arr,
53  const amrex::GpuArray< amrex::Array4<amrex::Real>, AMREX_SPACEDIM>& flx_tmp_arr,
54  const amrex::Box& domain,
55  const amrex::BCRec* bc_ptr_h);
56 
57 /** Compute advection tendencies for all components of momentum */
58 void AdvectionSrcForMom (const amrex::Box& bx,
59  const amrex::Box& bxx, const amrex::Box& bxy, const amrex::Box& bxz,
60  const amrex::Array4< amrex::Real>& rho_u_rhs, const amrex::Array4< amrex::Real>& rho_v_rhs,
61  const amrex::Array4< amrex::Real>& rho_w_rhs,
62  const amrex::Array4<const amrex::Real>& rho,
63  const amrex::Array4<const amrex::Real>& u , const amrex::Array4<const amrex::Real>& v,
64  const amrex::Array4<const amrex::Real>& w ,
65  const amrex::Array4<const amrex::Real>& rho_u , const amrex::Array4<const amrex::Real>& rho_v,
66  const amrex::Array4<const amrex::Real>& Omega ,
67  const amrex::Array4<const amrex::Real>& z_nd,
68  const amrex::Array4<const amrex::Real>& ax,
69  const amrex::Array4<const amrex::Real>& ay,
70  const amrex::Array4<const amrex::Real>& az,
71  const amrex::Array4<const amrex::Real>& detJ,
72  amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
73  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
74  const amrex::Array4<const amrex::Real>& mf_m,
75  const amrex::Array4<const amrex::Real>& mf_u,
76  const amrex::Array4<const amrex::Real>& mf_v,
77  const AdvType horiz_adv_type, const AdvType vert_adv_type,
78  const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac,
79  MeshType& mesh_type, TerrainType& terrain_type,
80  const int lo_z_face, const int hi_z_face,
81  const amrex::Box& domain,
82  const amrex::BCRec* bc_ptr_h);
83 
84 /** Compute advection tendencies for all components of momentum when dz is constant */
86  const amrex::Box& bxx, const amrex::Box& bxy, const amrex::Box& bxz,
87  const amrex::Array4< amrex::Real>& rho_u_rhs, const amrex::Array4< amrex::Real>& rho_v_rhs,
88  const amrex::Array4< amrex::Real>& rho_w_rhs,
89  const amrex::Array4<const amrex::Real>& u , const amrex::Array4<const amrex::Real>& v,
90  const amrex::Array4<const amrex::Real>& w ,
91  const amrex::Array4<const amrex::Real>& rho_u , const amrex::Array4<const amrex::Real>& rho_v,
92  const amrex::Array4<const amrex::Real>& Omega ,
93  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
94  const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
95  const amrex::Array4<const amrex::Real>& mf_m,
96  const amrex::Array4<const amrex::Real>& mf_u,
97  const amrex::Array4<const amrex::Real>& mf_v,
98  const AdvType horiz_adv_type, const AdvType vert_adv_type,
99  const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac,
100  TerrainType& terrain_type,
101  const int lo_z_face, const int hi_z_face);
102 
103 /** Compute advection tendencies for all components of momentum when dz is stretched */
105  const amrex::Box& bxx, const amrex::Box& bxy, const amrex::Box& bxz,
106  const amrex::Array4< amrex::Real>& rho_u_rhs, const amrex::Array4< amrex::Real>& rho_v_rhs,
107  const amrex::Array4< amrex::Real>& rho_w_rhs,
108  const amrex::Array4<const amrex::Real>& u , const amrex::Array4<const amrex::Real>& v,
109  const amrex::Array4<const amrex::Real>& w ,
110  const amrex::Array4<const amrex::Real>& rho_u , const amrex::Array4<const amrex::Real>& rho_v,
111  const amrex::Array4<const amrex::Real>& Omega ,
112  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
113  const amrex::Gpu::DeviceVector<amrex::Real>& stretched_dz_d,
114  const amrex::Array4<const amrex::Real>& mf_m,
115  const amrex::Array4<const amrex::Real>& mf_u,
116  const amrex::Array4<const amrex::Real>& mf_v,
117  const AdvType horiz_adv_type, const AdvType vert_adv_type,
118  const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac,
119  const int lo_z_face, const int hi_z_face);
120 
121 /** Compute advection tendencies for all components of momentum for TERRAIN-FITTED COORDS only */
123  const amrex::Box& bxx, const amrex::Box& bxy, const amrex::Box& bxz,
124  const amrex::Array4< amrex::Real>& rho_u_rhs, const amrex::Array4< amrex::Real>& rho_v_rhs,
125  const amrex::Array4< amrex::Real>& rho_w_rhs,
126  const amrex::Array4<const amrex::Real>& u , const amrex::Array4<const amrex::Real>& v,
127  const amrex::Array4<const amrex::Real>& w ,
128  const amrex::Array4<const amrex::Real>& rho_u , const amrex::Array4<const amrex::Real>& rho_v,
129  const amrex::Array4<const amrex::Real>& Omega ,
130  const amrex::Array4<const amrex::Real>& z_nd,
131  const amrex::Array4<const amrex::Real>& ax,
132  const amrex::Array4<const amrex::Real>& ay,
133  const amrex::Array4<const amrex::Real>& az,
134  const amrex::Array4<const amrex::Real>& detJ,
135  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
136  const amrex::Array4<const amrex::Real>& mf_m,
137  const amrex::Array4<const amrex::Real>& mf_u,
138  const amrex::Array4<const amrex::Real>& mf_v,
139  const AdvType horiz_adv_type, const AdvType vert_adv_type,
140  const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac,
141  const int lo_z_face, const int hi_z_face);
142 
143 /** Compute advection tendencies for all components of momentum when using EB for terrain */
145  const amrex::Box& bxx, const amrex::Box& bxy, const amrex::Box& bxz,
146  const amrex::Array4< amrex::Real>& rho_u_rhs, const amrex::Array4< amrex::Real>& rho_v_rhs,
147  const amrex::Array4< amrex::Real>& rho_w_rhs,
148  const amrex::Array4<const amrex::Real>& u , const amrex::Array4<const amrex::Real>& v,
149  const amrex::Array4<const amrex::Real>& w ,
150  const amrex::Array4<const amrex::Real>& rho_u , const amrex::Array4<const amrex::Real>& rho_v,
151  const amrex::Array4<const amrex::Real>& Omega ,
152  const amrex::Array4<const amrex::Real>& ax,
153  const amrex::Array4<const amrex::Real>& ay,
154  const amrex::Array4<const amrex::Real>& az,
155  const amrex::Array4<const amrex::Real>& detJ,
156  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
157  const amrex::Array4<const amrex::Real>& mf_m,
158  const amrex::Array4<const amrex::Real>& mf_u,
159  const amrex::Array4<const amrex::Real>& mf_v,
160  const AdvType horiz_adv_type, const AdvType vert_adv_type,
161  const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac,
162  const int lo_z_face, const int hi_z_face,
163  const amrex::Box& domain);
164 
165 /** Compute advection tendencies for all normal components of momentum */
166 void
167 AdvectionSrcForOpenBC_Normal (const amrex::Box& bx,
168  const int& dir,
169  const amrex::Array4< amrex::Real>& rhs_arr,
170  const amrex::Array4<const amrex::Real>& vel_norm_arr,
171  const amrex::Array4<const amrex::Real>& cell_data_arr,
172  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& dxInv,
173  const bool do_lo=false);
174 
175 /** Compute advection tendencies for u momentum tangent to open bc*/
176 void
177 AdvectionSrcForOpenBC_Tangent_Xmom (const amrex::Box& bxx,
178  const int& dir,
179  const amrex::Array4< amrex::Real>& rho_u_rhs,
180  const amrex::Array4<const amrex::Real>& u,
181  const amrex::Array4<const amrex::Real>& rho_u,
182  const amrex::Array4<const amrex::Real>& rho_v,
183  const amrex::Array4<const amrex::Real>& Omega,
184  const amrex::Array4<const amrex::Real>& ax,
185  const amrex::Array4<const amrex::Real>& az,
186  const amrex::Array4<const amrex::Real>& detJ,
187  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
188  const bool do_lo=false);
189 
190 /** Compute advection tendencies for v momentum tangent to open bc*/
191 void
192 AdvectionSrcForOpenBC_Tangent_Ymom (const amrex::Box& bxy,
193  const int& dir,
194  const amrex::Array4< amrex::Real>& rho_v_rhs,
195  const amrex::Array4<const amrex::Real>& v,
196  const amrex::Array4<const amrex::Real>& rho_u,
197  const amrex::Array4<const amrex::Real>& rho_v,
198  const amrex::Array4<const amrex::Real>& Omega,
199  const amrex::Array4<const amrex::Real>& ay,
200  const amrex::Array4<const amrex::Real>& az,
201  const amrex::Array4<const amrex::Real>& detJ,
202  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
203  const bool do_lo=false);
204 
205 /** Compute advection tendencies for w momentum tangent to open bc*/
206 void
207 AdvectionSrcForOpenBC_Tangent_Zmom (const amrex::Box& bxz,
208  const int& dir,
209  const amrex::Array4< amrex::Real>& rho_w_rhs,
210  const amrex::Array4<const amrex::Real>& w,
211  const amrex::Array4<const amrex::Real>& rho_u,
212  const amrex::Array4<const amrex::Real>& rho_v,
213  const amrex::Array4<const amrex::Real>& Omega,
214  const amrex::Array4<const amrex::Real>& ax,
215  const amrex::Array4<const amrex::Real>& ay,
216  const amrex::Array4<const amrex::Real>& az,
217  const amrex::Array4<const amrex::Real>& detJ,
218  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
219  const int domhi_z,
220  const bool do_lo=false);
221 
222 /** Compute advection tendencies for cons tangential to BC (2nd order)*/
223 void
225  const int& dir,
226  const int& icomp,
227  const int& ncomp,
228  const amrex::Array4< amrex::Real>& cell_rhs,
229  const amrex::Array4<const amrex::Real>& cell_prim,
230  const amrex::Array4<const amrex::Real>& avg_xmom,
231  const amrex::Array4<const amrex::Real>& avg_ymom,
232  const amrex::Array4<const amrex::Real>& avg_zmom,
233  const amrex::Array4<const amrex::Real>& detJ,
234  const amrex::GpuArray<amrex::Real, AMREX_SPACEDIM>& cellSizeInv,
235  const bool do_lo=false);
236 
237 /** Compute advection tendencies in normal dir for vars tangent to open bc */
238 AMREX_GPU_HOST_DEVICE
239 AMREX_FORCE_INLINE
240 amrex::Real
242  const int& j,
243  const int& k,
244  const int& nprim,
245  const int& dir,
246  const amrex::Array4<const amrex::Real>& prim_tang_arr,
247  const amrex::Array4<const amrex::Real>& mom_norm_arr,
248  const amrex::Real& dxInv,
249  const bool do_lo=false);
250 
251 AMREX_GPU_HOST_DEVICE
252 AMREX_FORCE_INLINE
253 AdvType
254 EfficientAdvType (int nrk, AdvType adv_type)
255 {
256  AdvType eff_adv_type;
257 
258  if (nrk == 0) {
259 
260  eff_adv_type = AdvType::Centered_2nd;
261 
262  } else if (nrk == 1) {
263 
264  if ( (adv_type == AdvType::Centered_2nd) ||
265  (adv_type == AdvType::Upwind_3rd) ||
266  (adv_type == AdvType::Centered_4th) ||
267  (adv_type == AdvType::Weno_3) ||
268  (adv_type == AdvType::Weno_3Z) ||
269  (adv_type == AdvType::Weno_3MZQ) )
270  {
271  eff_adv_type = AdvType::Centered_2nd;
272 
273  } else if ( (adv_type == AdvType::Upwind_5th) ||
274  (adv_type == AdvType::Weno_5) ||
275  (adv_type == AdvType::Weno_5Z) )
276  {
277  eff_adv_type = AdvType::Upwind_3rd;
278 
279  } else { // (adv_type == AdvType::Centered_6th)
280 
281  eff_adv_type = AdvType::Centered_4th;
282  }
283 
284  } else {
285 
286  eff_adv_type = adv_type;
287  }
288 
289  return(eff_adv_type);
290 }
291 #endif
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_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_m, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, 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 AdvectionSrcForMom(const amrex::Box &bx, 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 > &rho, 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, amrex::Gpu::DeviceVector< amrex::Real > &stretched_dz_d, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_m, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, const AdvType horiz_adv_type, const AdvType vert_adv_type, const amrex::Real horiz_upw_frac, const amrex::Real vert_upw_frac, MeshType &mesh_type, TerrainType &terrain_type, const int lo_z_face, const int hi_z_face, const amrex::Box &domain, const amrex::BCRec *bc_ptr_h)
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_m, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, 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)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE amrex::Real AdvectionSrcForOpenBC_Tangent(const int &i, const int &j, const int &k, const int &nprim, const int &dir, const amrex::Array4< const amrex::Real > &prim_tang_arr, const amrex::Array4< const amrex::Real > &mom_norm_arr, const amrex::Real &dxInv, const bool do_lo=false)
void AdvectionSrcForOpenBC_Tangent_Cons(const amrex::Box &bx, const int &dir, const int &icomp, const int &ncomp, const amrex::Array4< amrex::Real > &cell_rhs, const amrex::Array4< const amrex::Real > &cell_prim, 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 > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const bool do_lo=false)
void AdvectionSrcForMom_EB(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 > &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_m, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, 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, const amrex::Box &domain)
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 AdvectionSrcForRho(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 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 > &detJ, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_m, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, const amrex::GpuArray< const amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_arr, const bool fixed_rho)
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_m, const amrex::Array4< const amrex::Real > &mf_u, const amrex::Array4< const amrex::Real > &mf_v, 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)
void AdvectionSrcForScalars(const amrex::Real &dt, 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 > &cur_cons, const amrex::Array4< const amrex::Real > &cell_prim, const amrex::Array4< amrex::Real > &src, const bool &use_mono_adv, amrex::Real *max_s_ptr, amrex::Real *min_s_ptr, const amrex::Array4< const amrex::Real > &vf_arr, const amrex::GpuArray< amrex::Real, AMREX_SPACEDIM > &cellSizeInv, const amrex::Array4< const amrex::Real > &mf_m, 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::GpuArray< amrex::Array4< amrex::Real >, AMREX_SPACEDIM > &flx_tmp_arr, const amrex::Box &domain, const amrex::BCRec *bc_ptr_h)
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE AdvType EfficientAdvType(int nrk, AdvType adv_type)
Definition: ERF_Advection.H:254
AdvType
Definition: ERF_IndexDefines.H:202
@ Centered_4th
@ Centered_2nd
@ rho
Definition: ERF_Kessler.H:30
@ omega
Definition: ERF_SAM.H:49