ERF
Energy Research and Forecasting: An Atmospheric Modeling Code
MYNNLevel2 Struct Reference

Coefficients and stability functions for the Level 2 MYNN closure. More...

#include <ERF_MYNNStruct.H>

Collaboration diagram for MYNNLevel2:

Public Member Functions

void init_coeffs (amrex::Real A1_lvl25, amrex::Real A2_lvl25, amrex::Real B1, amrex::Real B2, amrex::Real C1, amrex::Real C2, amrex::Real C3, amrex::Real, amrex::Real C5)
 Initialize Level 2 closure coefficients from Level 2.5 coefficients. More...
 
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_Rf (const amrex::Real GM, const amrex::Real GH) const
 Calculate the reduced Richardson number. More...
 
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_SH (const amrex::Real Rf) const
 Calculate the heat stability function. More...
 
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_SM (const amrex::Real Rf) const
 Calculate the momentum stability function. More...
 

Public Attributes

bool initialized {false}
 
amrex::Real A1
 
amrex::Real A2
 
amrex::Real F1
 
amrex::Real F2
 
const amrex::Real gam1 = amrex::Real(0.235)
 
amrex::Real gam2
 
amrex::Real Rf1
 
amrex::Real Rf2
 
amrex::Real Rfc
 
amrex::Real Ri1
 
amrex::Real Ri2
 
amrex::Real Ri3
 
const amrex::Real eps = std::numeric_limits<amrex::Real>::epsilon()
 

Detailed Description

Coefficients and stability functions for the Level 2 MYNN closure.

Member Function Documentation

◆ calc_Rf()

AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real MYNNLevel2::calc_Rf ( const amrex::Real  GM,
const amrex::Real  GH 
) const
inline

Calculate the reduced Richardson number.

Parameters
[in]GMMomentum gradient.
[in]GHHeat gradient.
Returns
Reduced Richardson number.
141  {
142  AMREX_ASSERT(initialized);
143  amrex::Real lGM = std::copysign(std::max(std::fabs(GM),eps),GM);
144  amrex::Real Ri = -GH/lGM;
145  return Ri1*(Ri + Ri2 - std::sqrt(Ri*Ri - Ri3*Ri + Ri2*Ri2));
146  }
amrex::Real Real
Definition: ERF_ShocInterface.H:19
const amrex::Real eps
Definition: ERF_MYNNStruct.H:183
amrex::Real Ri3
Definition: ERF_MYNNStruct.H:181
amrex::Real Ri2
Definition: ERF_MYNNStruct.H:181
amrex::Real Ri1
Definition: ERF_MYNNStruct.H:181
bool initialized
Definition: ERF_MYNNStruct.H:174

◆ calc_SH()

AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real MYNNLevel2::calc_SH ( const amrex::Real  Rf) const
inline

Calculate the heat stability function.

Parameters
[in]RfReduced Richardson number.
Returns
Heat stability function.
156  {
157  AMREX_ASSERT(initialized);
158  return three*A2*(gam1+gam2)*(Rfc-Rf)/(one-Rf);
159  }
constexpr amrex::Real three
Definition: ERF_NumericalConstants.H:39
constexpr amrex::Real one
Definition: ERF_NumericalConstants.H:37
amrex::Real A2
Definition: ERF_MYNNStruct.H:176
const amrex::Real gam1
Definition: ERF_MYNNStruct.H:178
amrex::Real Rfc
Definition: ERF_MYNNStruct.H:180
amrex::Real gam2
Definition: ERF_MYNNStruct.H:179

Referenced by calc_SM().

Here is the caller graph for this function:

◆ calc_SM()

AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real MYNNLevel2::calc_SM ( const amrex::Real  Rf) const
inline

Calculate the momentum stability function.

Parameters
[in]RfReduced Richardson number.
Returns
Momentum stability function.
169  {
170  AMREX_ASSERT(initialized);
171  return A1*F1/(A2*F2) * (Rf1-Rf) / (Rf2-Rf) * calc_SH(Rf);
172  }
amrex::Real F2
Definition: ERF_MYNNStruct.H:177
amrex::Real Rf1
Definition: ERF_MYNNStruct.H:180
amrex::Real Rf2
Definition: ERF_MYNNStruct.H:180
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_SH(const amrex::Real Rf) const
Calculate the heat stability function.
Definition: ERF_MYNNStruct.H:155
amrex::Real F1
Definition: ERF_MYNNStruct.H:177
amrex::Real A1
Definition: ERF_MYNNStruct.H:176
Here is the call graph for this function:

◆ init_coeffs()

void MYNNLevel2::init_coeffs ( amrex::Real  A1_lvl25,
amrex::Real  A2_lvl25,
amrex::Real  B1,
amrex::Real  B2,
amrex::Real  C1,
amrex::Real  C2,
amrex::Real  C3,
amrex::Real  ,
amrex::Real  C5 
)
inline

Initialize Level 2 closure coefficients from Level 2.5 coefficients.

Parameters
[in]A1_lvl25Level 2.5 coefficient A1.
[in]A2_lvl25Level 2.5 coefficient A2.
[in]B1Closure coefficient B1.
[in]B2Closure coefficient B2.
[in]C1Closure coefficient C1.
[in]C2Closure coefficient C2.
[in]C3Closure coefficient C3.
[in]C5Closure coefficient C5.
116  {
117  A1 = A1_lvl25;
118  A2 = A2_lvl25;
119  gam2 = (two*A1*(three-two*C2) + B2*(one-C3)) / B1;
120  F1 = B1*(gam1-C1) + two*A1*(three-two*C2) + three*A2*(one-C2)*(one-C5);
121  F2 = B1*(gam1+gam2) - three*A1*(one-C2);
122  Rf1 = B1*(gam1-C1) / F1;
123  Rf2 = B1*gam1 / F2;
124  Rfc = gam1 / (gam1 + gam2);
125  Ri1 = myhalf*A2*F2/(A1*F1);
126  Ri2 = myhalf*Rf1/Ri1;
127  Ri3 = (two*Rf2-Rf1)/Ri1;
128 
129  initialized = true;
130  }
constexpr amrex::Real two
Definition: ERF_NumericalConstants.H:38
constexpr amrex::Real myhalf
Definition: ERF_NumericalConstants.H:41

Referenced by TurbChoice::init_params().

Here is the caller graph for this function:

Member Data Documentation

◆ A1

amrex::Real MYNNLevel2::A1

Referenced by calc_SM(), and init_coeffs().

◆ A2

amrex::Real MYNNLevel2::A2

Referenced by calc_SH(), calc_SM(), and init_coeffs().

◆ eps

const amrex::Real MYNNLevel2::eps = std::numeric_limits<amrex::Real>::epsilon()

Referenced by calc_Rf().

◆ F1

amrex::Real MYNNLevel2::F1

Referenced by calc_SM(), and init_coeffs().

◆ F2

amrex::Real MYNNLevel2::F2

Referenced by calc_SM(), and init_coeffs().

◆ gam1

const amrex::Real MYNNLevel2::gam1 = amrex::Real(0.235)

Referenced by calc_SH(), and init_coeffs().

◆ gam2

amrex::Real MYNNLevel2::gam2

Referenced by calc_SH(), and init_coeffs().

◆ initialized

bool MYNNLevel2::initialized {false}

Referenced by calc_Rf(), calc_SH(), calc_SM(), and init_coeffs().

◆ Rf1

amrex::Real MYNNLevel2::Rf1

Referenced by calc_SM(), and init_coeffs().

◆ Rf2

amrex::Real MYNNLevel2::Rf2

Referenced by calc_SM(), and init_coeffs().

◆ Rfc

amrex::Real MYNNLevel2::Rfc

Referenced by calc_SH(), and init_coeffs().

◆ Ri1

amrex::Real MYNNLevel2::Ri1

Referenced by calc_Rf(), and init_coeffs().

◆ Ri2

amrex::Real MYNNLevel2::Ri2

Referenced by calc_Rf(), and init_coeffs().

◆ Ri3

amrex::Real MYNNLevel2::Ri3

Referenced by calc_Rf(), and init_coeffs().


The documentation for this struct was generated from the following file: