ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_NativeScalarDiffusion.H File Reference
Include dependency graph for ERF_NativeScalarDiffusion.H:
This graph shows which files directly or indirectly include this file:

Go to the source code of this file.

Classes

struct  NativeScalarDiffusionPolicy
 

Functions

NativeScalarDiffusionPolicy ResolveNativeScalarDiffusionPolicy (const int qty_comp, const DiffChoice &choice)
 

Function Documentation

◆ ResolveNativeScalarDiffusionPolicy()

NativeScalarDiffusionPolicy ResolveNativeScalarDiffusionPolicy ( const int  qty_comp,
const DiffChoice &  choice 
)
inline

Resolve conserved-state identity to ERF's native coefficient category.

26 {
28  policy.scalar_comp = qty_comp - 1;
29  policy.rhs_comp = qty_comp;
30  policy.flux_comp = 0;
31  policy.bc_comp =
32  (qty_comp >= RhoScalar_comp && qty_comp < RhoScalar_comp + NSCALARS)
34  : qty_comp;
35  if (policy.bc_comp > BCVars::RhoScalar_bc_comp) {
36  policy.bc_comp -= (NSCALARS - 1);
37  }
38  policy.is_theta = qty_comp == RhoTheta_comp;
39  policy.is_q1 = qty_comp == RhoQ1_comp;
40  policy.is_q2 = qty_comp == RhoQ2_comp;
42  policy.is_theta || qty_comp == RhoKE_comp || policy.is_q1;
43 
44  if (policy.is_theta) {
48  policy.coefficients.molecular_coeff = choice.alpha_T;
49  } else if (choice.molec_diff_type == MolecDiffType::Constant) {
50  policy.coefficients.molecular_coeff = choice.rhoAlpha_T;
51  }
52  } else if (qty_comp == RhoKE_comp) {
55  } else if (
56  qty_comp >= RhoScalar_comp && qty_comp < RhoScalar_comp + NSCALARS) {
60  policy.coefficients.molecular_coeff = choice.alpha_C;
61  } else if (choice.molec_diff_type == MolecDiffType::Constant) {
62  policy.coefficients.molecular_coeff = choice.rhoAlpha_C;
63  }
64  } else {
65  // Every q-state, including future appended species, uses the Q eddy
66  // category. Molecular diffusion is defined only through Q6.
69  if (qty_comp >= RhoQ1_comp && qty_comp <= RhoQ6_comp) {
71  policy.coefficients.molecular_coeff = choice.alpha_C;
72  } else if (choice.molec_diff_type == MolecDiffType::Constant) {
73  policy.coefficients.molecular_coeff = choice.rhoAlpha_C;
74  }
75  }
76  }
77  return policy;
78 }
#define RhoScalar_comp
Definition: ERF_IndexDefines.H:46
#define RhoTheta_comp
Definition: ERF_IndexDefines.H:43
#define RhoQ2_comp
Definition: ERF_IndexDefines.H:49
#define NSCALARS
Definition: ERF_IndexDefines.H:16
#define RhoQ1_comp
Definition: ERF_IndexDefines.H:48
#define RhoQ6_comp
Definition: ERF_IndexDefines.H:53
#define RhoKE_comp
Definition: ERF_IndexDefines.H:44
@ RhoScalar_bc_comp
Definition: ERF_IndexDefines.H:96
@ Theta_v
Definition: ERF_IndexDefines.H:253
@ Scalar_v
Definition: ERF_IndexDefines.H:255
@ Q_v
Definition: ERF_IndexDefines.H:256
@ Q_h
Definition: ERF_IndexDefines.H:251
@ Scalar_h
Definition: ERF_IndexDefines.H:250
@ KE_v
Definition: ERF_IndexDefines.H:254
@ Theta_h
Definition: ERF_IndexDefines.H:248
@ KE_h
Definition: ERF_IndexDefines.H:249
MolecDiffType molec_diff_type
Selected molecular transport model.
Definition: ERF_DiffStruct.H:94
amrex::Real rhoAlpha_T
Dynamic temperature diffusion coefficient [kg/(m-s)].
Definition: ERF_DiffStruct.H:104
amrex::Real alpha_C
Kinematic scalar diffusivity [m2/s].
Definition: ERF_DiffStruct.H:98
amrex::Real alpha_T
Kinematic temperature diffusivity [m2/s].
Definition: ERF_DiffStruct.H:97
amrex::Real rhoAlpha_C
Dynamic scalar diffusion coefficient [kg/(m-s)].
Definition: ERF_DiffStruct.H:105
Definition: ERF_NativeScalarDiffusion.H:11
int bc_comp
Definition: ERF_NativeScalarDiffusion.H:16
bool scale_raw_vertical_flux
Definition: ERF_NativeScalarDiffusion.H:20
int rhs_comp
Definition: ERF_NativeScalarDiffusion.H:14
int scalar_comp
Definition: ERF_NativeScalarDiffusion.H:13
ScalarDiffusionCoefficients coefficients
Definition: ERF_NativeScalarDiffusion.H:12
bool is_q1
Definition: ERF_NativeScalarDiffusion.H:18
bool is_theta
Definition: ERF_NativeScalarDiffusion.H:17
int flux_comp
Definition: ERF_NativeScalarDiffusion.H:15
bool is_q2
Definition: ERF_NativeScalarDiffusion.H:19
int eddy_v_comp
Definition: ERF_ScalarDiffusion.H:26
int eddy_h_comp
Definition: ERF_ScalarDiffusion.H:25
amrex::Real molecular_coeff
Definition: ERF_ScalarDiffusion.H:24

Referenced by DiffusionSrcForState_N(), DiffusionSrcForState_S(), DiffusionSrcForState_T(), and ImplicitDiffForStateLU_T().

Here is the caller graph for this function: