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

Go to the source code of this file.

Classes

struct  TurbChoice
 

Functions

 AMREX_ENUM (LESType, None, Smagorinsky, Smagorinsky2D, Deardorff)
 Large-eddy simulation closure type. More...
 
 AMREX_ENUM (RANSType, None, kEqn)
 Reynolds-averaged turbulence closure type. More...
 
 AMREX_ENUM (PBLType, None, MYJ, MYNN25, MYNNEDMF, YSU, YSUNew, MRF, SHOC, EAMXX_SHOC, NATIVE_SHOC)
 Planetary boundary-layer closure type. More...
 
 AMREX_ENUM (StratType, theta, thetav, thetal)
 Thermodynamic variable used for stability stratification. More...
 
template<typename T >
int query_one_or_per_level (const amrex::ParmParse &pp, const char *query_string, T &query_var, const int lev, const int maxlev)
 Query a scalar or per-level input value. More...
 
template<typename T >
int query_one_or_per_level_enum_case_insensitive (const amrex::ParmParse &pp, const char *query_string, T &query_var, const int lev, const int maxlev)
 Query a scalar or per-level enum input value using case-insensitive matching. More...
 

Function Documentation

◆ AMREX_ENUM() [1/4]

AMREX_ENUM ( LESType  ,
None  ,
Smagorinsky  ,
Smagorinsky2D  ,
Deardorff   
)

Large-eddy simulation closure type.

◆ AMREX_ENUM() [2/4]

AMREX_ENUM ( PBLType  ,
None  ,
MYJ  ,
MYNN25  ,
MYNNEDMF  ,
YSU  ,
YSUNew  ,
MRF  ,
SHOC  ,
EAMXX_SHOC  ,
NATIVE_SHOC   
)

Planetary boundary-layer closure type.

◆ AMREX_ENUM() [3/4]

AMREX_ENUM ( RANSType  ,
None  ,
kEqn   
)

Reynolds-averaged turbulence closure type.

◆ AMREX_ENUM() [4/4]

AMREX_ENUM ( StratType  ,
theta  ,
thetav  ,
thetal   
)

Thermodynamic variable used for stability stratification.

◆ query_one_or_per_level()

template<typename T >
int query_one_or_per_level ( const amrex::ParmParse &  pp,
const char *  query_string,
T query_var,
const int  lev,
const int  maxlev 
)

Query a scalar or per-level input value.

Template Parameters
TValue type accepted by ParmParse::query.
Parameters
ppParmParse object to query.
query_stringInput key to query.
query_varDestination value for the requested level.
levAMR level index.
maxlevMaximum AMR level configured for the run.
Returns
ParmParse query result, or zero if the key is absent.
44 {
45  int count = pp.countval(query_string);
46  if (count == 0) {
47  return 0; // nothing to do
48  } else if (count == 1) {
49  // In this case, we assume the same value is used at every level
50  return pp.query(query_string, query_var);
51  } else if (count >= maxlev + 1) {
52  // In this case, there may be more values than levels so we
53  // will just read the number of values we need and ignore the
54  // extra levels
55  return pp.query(query_string, query_var, lev);
56  } else {
57  // In this case, there is more than one value AND there
58  // are more levels than values; as an example, if max_level = 2
59  // but count = 2 so we have three levels but only two values --
60  // it is not clear how to interpret this so we abort
61  amrex::Error(
62  "For parmparse variable " + pp.prefixedName(query_string) +
63  ": if specified, specify once total or at least once for each level");
64  return 0; // avoid compiler warning
65  }
66 }
ParmParse pp("prob")

Referenced by TurbChoice::init_params().

Here is the call graph for this function:
Here is the caller graph for this function:

◆ query_one_or_per_level_enum_case_insensitive()

template<typename T >
int query_one_or_per_level_enum_case_insensitive ( const amrex::ParmParse &  pp,
const char *  query_string,
T query_var,
const int  lev,
const int  maxlev 
)

Query a scalar or per-level enum input value using case-insensitive matching.

Template Parameters
TEnum type accepted by ParmParse::query_enum_case_insensitive.
Parameters
ppParmParse object to query.
query_stringInput key to query.
query_varDestination enum value for the requested level.
levAMR level index.
maxlevMaximum AMR level configured for the run.
Returns
ParmParse query result, or zero if the key is absent.
86 {
87  int count = pp.countval(query_string);
88  if (count == 0) {
89  return 0; // nothing to do
90  } else if (count == 1) {
91  // In this case, we assume the same value is used at every level
92  return pp.query_enum_case_insensitive(query_string, query_var);
93  } else if (count >= maxlev + 1) {
94  // In this case, there may be more values than levels so we
95  // will just read the number of values we need and ignore the
96  // extra levels
97  return pp.query_enum_case_insensitive(query_string, query_var, lev);
98  } else {
99  // In this case, there is more than one value AND there
100  // are more levels than values; as an example, if max_level = 2
101  // but count = 2 so we have three levels but only two values --
102  // it is not clear how to interpret this so we abort
103  amrex::Error(
104  "For parmparse variable " + pp.prefixedName(query_string) +
105  ": if specified, specify once total or at least once for each level");
106  return 0; // avoid compiler warning
107  }
108 }

Referenced by TurbChoice::init_params(), and SolverChoice::init_params().

Here is the call graph for this function:
Here is the caller graph for this function: