ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
ERF_TurbStruct.H File Reference
#include <AMReX_ParallelDescriptor.H>
#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.
45 {
46  int count = pp.countval(query_string);
47  if (count == 0) {
48  return 0; // nothing to do
49  } else if (count == 1) {
50  // In this case, we assume the same value is used at every level
51  return pp.query(query_string, query_var);
52  } else if (count >= maxlev + 1) {
53  // In this case, there may be more values than levels so we
54  // will just read the number of values we need and ignore the
55  // extra levels
56  return pp.query(query_string, query_var, lev);
57  } else {
58  // In this case, there is more than one value AND there
59  // are more levels than values; as an example, if max_level = 2
60  // but count = 2 so we have three levels but only two values --
61  // it is not clear how to interpret this so we abort
62  amrex::Error(
63  "For parmparse variable " + pp.prefixedName(query_string) +
64  ": if specified, specify once total or at least once for each level");
65  return 0; // avoid compiler warning
66  }
67 }
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.
87 {
88  int count = pp.countval(query_string);
89  if (count == 0) {
90  return 0; // nothing to do
91  } else if (count == 1) {
92  // In this case, we assume the same value is used at every level
93  return pp.query_enum_case_insensitive(query_string, query_var);
94  } else if (count >= maxlev + 1) {
95  // In this case, there may be more values than levels so we
96  // will just read the number of values we need and ignore the
97  // extra levels
98  return pp.query_enum_case_insensitive(query_string, query_var, lev);
99  } else {
100  // In this case, there is more than one value AND there
101  // are more levels than values; as an example, if max_level = 2
102  // but count = 2 so we have three levels but only two values --
103  // it is not clear how to interpret this so we abort
104  amrex::Error(
105  "For parmparse variable " + pp.prefixedName(query_string) +
106  ": if specified, specify once total or at least once for each level");
107  return 0; // avoid compiler warning
108  }
109 }

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: