ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Macros Pages
ERF_DiffSetup.H
Go to the documentation of this file.
1  DiffChoice diffChoice = solverChoice.diffChoice;
2  TurbChoice turbChoice = solverChoice.turbChoice[level];
3 
4  amrex::ignore_unused(use_SurfLayer);
5 
6  const Real dx_inv = cellSizeInv[0];
7  const Real dy_inv = cellSizeInv[1];
8 
9  const auto& dom_lo = lbound(domain);
10  const auto& dom_hi = ubound(domain);
11 
13  Real l_abs_g = std::abs(grav_gpu[2]);
14 
17 
20 
21  const Box xbx = surroundingNodes(bx,0);
22  const Box ybx = surroundingNodes(bx,1);
23  const Box zbx = surroundingNodes(bx,2);
24 
25  const int end_comp = start_comp + num_comp - 1;
26 
27  // Theta, KE, Scalar
28  Vector<Real> alpha_eff(NPRIMVAR_max, 0.0);
29  if (l_consA) {
30  for (int i = 0; i < NPRIMVAR_max; ++i) {
31  switch (i) {
32  case PrimTheta_comp:
34  break;
35  case PrimScalar_comp:
37  break;
38  case PrimQ1_comp:
40  break;
41  case PrimQ2_comp:
43  break;
44  case PrimQ3_comp:
46  break;
47  case PrimQ4_comp:
49  break;
50  case PrimQ5_comp:
52  break;
53  case PrimQ6_comp:
55  break;
56  default:
57  alpha_eff[i] = 0.0;
58  break;
59  }
60  }
61  } else {
62  for (int i = 0; i < NPRIMVAR_max; ++i) {
63  switch (i) {
64  case PrimTheta_comp:
66  break;
67  case PrimScalar_comp:
69  break;
70  case PrimQ1_comp:
72  break;
73  case PrimQ2_comp:
75  break;
76  case PrimQ3_comp:
78  break;
79  case PrimQ4_comp:
81  break;
82  case PrimQ5_comp:
84  break;
85  case PrimQ6_comp:
87  break;
88  default:
89  alpha_eff[i] = 0.0;
90  break;
91  }
92  }
93  }
94 
95  Vector<int> eddy_diff_idx{EddyDiff::Theta_h, EddyDiff::KE_h, EddyDiff::Scalar_h,
104 
105  // Device vectors
106  Gpu::AsyncVector<Real> alpha_eff_d;
108  alpha_eff_d.resize(alpha_eff.size());
109  eddy_diff_idx_d.resize(eddy_diff_idx.size());
112 
113  Gpu::copy(Gpu::hostToDevice, alpha_eff.begin() , alpha_eff.end() , alpha_eff_d.begin());
114  Gpu::copy(Gpu::hostToDevice, eddy_diff_idx.begin(), eddy_diff_idx.end(), eddy_diff_idx_d.begin());
115  Gpu::copy(Gpu::hostToDevice, eddy_diff_idy.begin(), eddy_diff_idy.end(), eddy_diff_idy_d.begin());
116  Gpu::copy(Gpu::hostToDevice, eddy_diff_idz.begin(), eddy_diff_idz.end(), eddy_diff_idz_d.begin());
117 
118  // Capture pointers for device code
119  Real* d_alpha_eff = alpha_eff_d.data();
Gpu::AsyncVector< int > eddy_diff_idz_d
Definition: ERF_DiffSetup.H:107
const auto & dom_hi
Definition: ERF_DiffSetup.H:10
bool l_turb
Definition: ERF_DiffSetup.H:19
Vector< int > eddy_diff_idz
Definition: ERF_DiffSetup.H:101
Vector< int > eddy_diff_idy
Definition: ERF_DiffSetup.H:98
const auto & dom_lo
Definition: ERF_DiffSetup.H:9
const int end_comp
Definition: ERF_DiffSetup.H:25
Vector< Real > alpha_eff(NPRIMVAR_max, 0.0)
bool l_consA
Definition: ERF_DiffSetup.H:18
int * d_eddy_diff_idx
Definition: ERF_DiffSetup.H:120
TurbChoice turbChoice
Definition: ERF_DiffSetup.H:2
bool l_use_keqn
Definition: ERF_DiffSetup.H:15
const Box zbx
Definition: ERF_DiffSetup.H:23
int * d_eddy_diff_idz
Definition: ERF_DiffSetup.H:122
Real l_inv_theta0
Definition: ERF_DiffSetup.H:12
const Real dx_inv
Definition: ERF_DiffSetup.H:6
const Real dy_inv
Definition: ERF_DiffSetup.H:7
int * d_eddy_diff_idy
Definition: ERF_DiffSetup.H:121
DiffChoice diffChoice
Definition: ERF_DiffSetup.H:1
bool l_use_mynn
Definition: ERF_DiffSetup.H:16
const Box xbx
Definition: ERF_DiffSetup.H:21
Real l_abs_g
Definition: ERF_DiffSetup.H:13
Gpu::AsyncVector< int > eddy_diff_idy_d
Definition: ERF_DiffSetup.H:107
Gpu::AsyncVector< int > eddy_diff_idx_d
Definition: ERF_DiffSetup.H:107
Real * d_alpha_eff
Definition: ERF_DiffSetup.H:119
const Box ybx
Definition: ERF_DiffSetup.H:22
Gpu::AsyncVector< Real > alpha_eff_d
Definition: ERF_DiffSetup.H:106
#define PrimQ1_comp
Definition: ERF_IndexDefines.H:53
#define NPRIMVAR_max
Definition: ERF_IndexDefines.H:33
#define PrimQ2_comp
Definition: ERF_IndexDefines.H:54
#define PrimQ4_comp
Definition: ERF_IndexDefines.H:56
#define PrimQ6_comp
Definition: ERF_IndexDefines.H:58
#define PrimQ5_comp
Definition: ERF_IndexDefines.H:57
#define PrimTheta_comp
Definition: ERF_IndexDefines.H:50
#define PrimScalar_comp
Definition: ERF_IndexDefines.H:52
#define PrimQ3_comp
Definition: ERF_IndexDefines.H:55
@ Theta_v
Definition: ERF_IndexDefines.H:176
@ Scalar_v
Definition: ERF_IndexDefines.H:178
@ Q_v
Definition: ERF_IndexDefines.H:179
@ Q_h
Definition: ERF_IndexDefines.H:174
@ Scalar_h
Definition: ERF_IndexDefines.H:173
@ KE_v
Definition: ERF_IndexDefines.H:177
@ Theta_h
Definition: ERF_IndexDefines.H:171
@ KE_h
Definition: ERF_IndexDefines.H:172
Definition: ERF_DiffStruct.H:19
amrex::Real rhoAlpha_C
Definition: ERF_DiffStruct.H:92
amrex::Real rhoAlpha_T
Definition: ERF_DiffStruct.H:91
amrex::Real alpha_T
Definition: ERF_DiffStruct.H:84
amrex::Real alpha_C
Definition: ERF_DiffStruct.H:85
MolecDiffType molec_diff_type
Definition: ERF_DiffStruct.H:81
Definition: ERF_TurbStruct.H:39
bool use_pbl_tke
Definition: ERF_TurbStruct.H:364
bool use_keqn
Definition: ERF_TurbStruct.H:361
bool use_kturb
Definition: ERF_TurbStruct.H:360
amrex::Real theta_ref
Definition: ERF_TurbStruct.H:345