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

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: