ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_GetRhoAlpha.H
Go to the documentation of this file.
1 /**
2  * Average rhoAlpha from cell centers to the lower and upper z-faces.
3  *
4  * @param[in] i cell-centered i-index
5  * @param[in] j cell-centered j-index
6  * @param[in] k cell-centered k-index
7  * @param[out] rhoAlpha_lo rhoAlpha averaged to the lower z-face
8  * @param[out] rhoAlpha_hi rhoAlpha averaged to the upper z-face
9  * @param[in] cell_data conserved cell-centered state
10  * @param[in] mu_turb turbulent diffusivity
11  * @param[in] d_alpha_eff effective molecular diffusivity by primitive component
12  * @param[in] d_eddy_diff_idz vertical eddy-diffusivity component map
13  * @param[in] prim_index primitive component index
14  * @param[in] prim_scal_index scalar primitive component index
15  * @param[in] l_consA flag for conservative constant-alpha diffusion
16  * @param[in] l_turb flag for turbulent diffusion
17  */
18 AMREX_GPU_HOST_DEVICE
19 AMREX_FORCE_INLINE
20 void getRhoAlpha (int i, int j, int k,
21  amrex::Real& rhoAlpha_lo, amrex::Real& rhoAlpha_hi,
22  const amrex::Array4<const amrex::Real>& cell_data,
23  const amrex::Array4<const amrex::Real>& mu_turb,
24  const amrex::Real* d_alpha_eff,
25  const int* d_eddy_diff_idz,
26  int prim_index, int prim_scal_index,
27  bool l_consA, bool l_turb)
28 {
29  if (l_consA && l_turb) {
30  rhoAlpha_lo = myhalf * ( cell_data(i,j,k,Rho_comp) + cell_data(i,j,k-1,Rho_comp) ) * d_alpha_eff[prim_scal_index]
31  + myhalf * ( mu_turb(i,j,k , d_eddy_diff_idz[prim_scal_index])
32  + mu_turb(i,j,k-1, d_eddy_diff_idz[prim_scal_index]) );
33  rhoAlpha_hi = myhalf * ( cell_data(i,j,k,Rho_comp) + cell_data(i,j,k+1,Rho_comp) ) * d_alpha_eff[prim_scal_index]
34  + myhalf * ( mu_turb(i,j,k , d_eddy_diff_idz[prim_scal_index])
35  + mu_turb(i,j,k+1, d_eddy_diff_idz[prim_scal_index]) );
36  }
37  else if (l_turb) // with MolecDiffType::Constant or None
38  {
39  rhoAlpha_lo = d_alpha_eff[prim_index]
40  + myhalf * ( mu_turb(i,j,k , d_eddy_diff_idz[prim_index])
41  + mu_turb(i,j,k-1, d_eddy_diff_idz[prim_index]) );
42  rhoAlpha_hi = d_alpha_eff[prim_index]
43  + myhalf * ( mu_turb(i,j,k , d_eddy_diff_idz[prim_index])
44  + mu_turb(i,j,k+1, d_eddy_diff_idz[prim_index]) );
45  }
46  else if (l_consA) // without an LES/PBL model
47  {
48  rhoAlpha_lo = myhalf * ( cell_data(i,j,k,Rho_comp) + cell_data(i,j,k-1,Rho_comp) ) * d_alpha_eff[prim_index];
49  rhoAlpha_hi = myhalf * ( cell_data(i,j,k,Rho_comp) + cell_data(i,j,k+1,Rho_comp) ) * d_alpha_eff[prim_index];
50  }
51  else // with MolecDiffType::Constant or None - without an LES/PBL model
52  {
53  rhoAlpha_lo = d_alpha_eff[prim_index];
54  rhoAlpha_hi = d_alpha_eff[prim_index];
55  }
56 }
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13
AMREX_GPU_HOST_DEVICE AMREX_FORCE_INLINE void getRhoAlpha(int i, int j, int k, amrex::Real &rhoAlpha_lo, amrex::Real &rhoAlpha_hi, const amrex::Array4< const amrex::Real > &cell_data, const amrex::Array4< const amrex::Real > &mu_turb, const amrex::Real *d_alpha_eff, const int *d_eddy_diff_idz, int prim_index, int prim_scal_index, bool l_consA, bool l_turb)
Definition: ERF_GetRhoAlpha.H:20
#define Rho_comp
Definition: ERF_IndexDefines.H:36
amrex::Real Real
Definition: ERF_ShocInterface.H:19