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.
122  {
123  AMREX_ASSERT(initialized);
124  amrex::Real lGM = std::copysign(std::max(std::fabs(GM),eps),GM);
125  amrex::Real Ri = -GH/lGM;
126  return Ri1*(Ri + Ri2 - std::sqrt(Ri*Ri - Ri3*Ri + Ri2*Ri2));
127  }
amrex::Real Real
Definition: ERF_ShocInterface.H:19
const amrex::Real eps
Definition: ERF_MYNNStruct.H:164
amrex::Real Ri3
Definition: ERF_MYNNStruct.H:162
amrex::Real Ri2
Definition: ERF_MYNNStruct.H:162
amrex::Real Ri1
Definition: ERF_MYNNStruct.H:162
bool initialized
Definition: ERF_MYNNStruct.H:155

◆ 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.
137  {
138  AMREX_ASSERT(initialized);
139  return three*A2*(gam1+gam2)*(Rfc-Rf)/(one-Rf);
140  }
constexpr amrex::Real three
Definition: ERF_Constants.H:11
constexpr amrex::Real one
Definition: ERF_Constants.H:9
amrex::Real A2
Definition: ERF_MYNNStruct.H:157
const amrex::Real gam1
Definition: ERF_MYNNStruct.H:159
amrex::Real Rfc
Definition: ERF_MYNNStruct.H:161
amrex::Real gam2
Definition: ERF_MYNNStruct.H:160

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.
150  {
151  AMREX_ASSERT(initialized);
152  return A1*F1/(A2*F2) * (Rf1-Rf) / (Rf2-Rf) * calc_SH(Rf);
153  }
amrex::Real F2
Definition: ERF_MYNNStruct.H:158
amrex::Real Rf1
Definition: ERF_MYNNStruct.H:161
amrex::Real Rf2
Definition: ERF_MYNNStruct.H:161
AMREX_GPU_DEVICE AMREX_FORCE_INLINE amrex::Real calc_SH(const amrex::Real Rf) const
Calculate the heat stability function.
Definition: ERF_MYNNStruct.H:136
amrex::Real F1
Definition: ERF_MYNNStruct.H:158
amrex::Real A1
Definition: ERF_MYNNStruct.H:157
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.
97  {
98  A1 = A1_lvl25;
99  A2 = A2_lvl25;
100  gam2 = (two*A1*(three-two*C2) + B2*(one-C3)) / B1;
101  F1 = B1*(gam1-C1) + two*A1*(three-two*C2) + three*A2*(one-C2)*(one-C5);
102  F2 = B1*(gam1+gam2) - three*A1*(one-C2);
103  Rf1 = B1*(gam1-C1) / F1;
104  Rf2 = B1*gam1 / F2;
105  Rfc = gam1 / (gam1 + gam2);
106  Ri1 = myhalf*A2*F2/(A1*F1);
107  Ri2 = myhalf*Rf1/Ri1;
108  Ri3 = (two*Rf2-Rf1)/Ri1;
109 
110  initialized = true;
111  }
constexpr amrex::Real two
Definition: ERF_Constants.H:10
constexpr amrex::Real myhalf
Definition: ERF_Constants.H:13

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: