kEpsilonTKEDSourceSink

kEpsilonTKEDSourceSink is a finite volume elemental kernel that computes the turbulent source and sink terms for the -equation in the k– family of models. Together with kEpsilonTKESourceSink and kEpsilonViscosity, it forms the full set of transport and closure relations for the k– turbulence models implemented in OpenPronghorn.

commentnote

The explanations in this kernel documentation are a summary. The reader is referred to the theory for more details if needed.

The -equation is written in conservative form as

where

  • is the turbulent dissipation rate,

  • is the mean velocity,

  • is the assembled production-side term for the -equation (shear, buoyancy, nonlinear production, and any variant-specific corrections such as Yap or the low-Re term),

  • is the destruction term proportional to .

Some references split the right-hand side as . In OpenPronghorn we fold any additional sources/corrections that would fall under directly into , so the kernel assembles a single production term.

In the implementation, kEpsilonTKEDSourceSink forms the -source term as where and depend on the selected k– variant and damping model.

Model variants

The kernel supports the same k– variants as kEpsilonTKESourceSink via the "k_epsilon_variant" parameter:

  • Standard — classical high-Reynolds-number k– model.

  • StandardLowRe — low-Reynolds-number k– model with damping functions.

  • StandardTwoLayer — two-layer k– formulation using a blending between outer k– and near-wall length scales.

  • Realizable — realizable k– model with variable .

  • RealizableTwoLayer — realizable model with a two-layer near-wall treatment.

The -production term is assembled differently for each variant, combining shear production, buoyancy contributions, nonlinear production, Yap correction, and low-Re extra production .

Strain-rate invariants and basic quantities

As in the k-equation kernel, kEpsilonTKEDSourceSink uses the invariants of the strain and rotation tensors:

  • ,

  • ,

  • ,

See the theory section for the definition of these ones. These invariants are used to construct:

  • the shear production of k,

  • the shear-based -production term for realizable variants (note that may be limited so a disctinction is made with the non-limited ),

  • the curvature correction factor (for realizable models when enabled),

  • the normalized strain/rotation quantities used by the nonlinear constitutive relations.

-production term

The -production term is built from several contributions. Here, denotes the full non-destruction part of the source term (i.e., it already includes terms that are sometimes written separately as , such as Yap or other near-wall/low-Re corrections):

  • : shear production of k,

  • : nonlinear production (optional quadratic/cubic constitutive relations),

  • : low-Re extra production (StandardLowRe only),

  • : buoyancy production,

  • : Yap correction (two-layer and low-Re variants),

  • : curvature correction factor (realizable variants).

The exact combination depends on the chosen k– variant.

Standard k–

For the Standard high-Re k– model, the -production is

where

  • is the limited shear production

  • is the nonlinear production term (if nonlinear_model != none),

  • is the buoyancy coefficient (usually model-dependent).

The production limiter is consistent with the one used in the k-equation kernel.

StandardTwoLayer k–

For the StandardTwoLayer model, the -production is

where

  • the shear production is taken without limiter,

  • the Yap correction provides an additional near-wall sink/source and is multiplied by .

The Yap term is especially important near walls and is detailed in a separate section below.

StandardLowRe k– (low-Re model)

For the StandardLowRe model, low-Re corrections are included via damping functions and the extra production term . The -production is

where

  • is the low-Re extra production (see below),

  • damping appears in the destruction term,

  • Yap correction is applied similarly to the two-layer model.

Realizable k–

For the Realizable high-Re model, the -production is written in terms of the shear-based

production :

where

  • is the shear contribution,

  • is the curvature correction factor (if curvature_model != none),

  • is the buoyancy contribution.

In realizable models the nonlinear constitutive relation affects the viscosity (via realizable ) and the k-equation, but itself is expressed in terms of rather than or .

RealizableTwoLayer k–

The RealizableTwoLayer model combines the realizable bulk behavior with a two-layer near-wall enhancement via Yap:

with the same definitions of , , and as in the realizable model and the Yap term as described below.

nonlinear -production

When "nonlinear_model" is set to quadratic or cubic, kEpsilonTKEDSourceSink includes the contribution in the -production for Standard-family variants:

  • Standard:

  • StandardTwoLayer:

  • StandardLowRe:

The term is based on the quadratic or cubic nonlinear Reynolds stress models and contracted with .

Curvature correction in -production

For realizable variants, the curvature correction factor is applied multiplicatively to in the -production:

  • Realizable:

  • RealizableTwoLayer:

The same curvature model (e.g. curvature_model = standard) is used in both the k-equation and the -equation kernels for consistency.

Yap correction

The Yap correction is an additional near-wall term that modifies the -equation source in two-layer and low-Re variants. It is enabled when "use_yap" is true and a wall-distance functor is available.

Yap length scales

The Yap correction is built from two length scales:

  • a turbulence length scale ,

  • an length scale .

The implementation uses a limited turbulence time scale to obtain . The effective time scale is computed as

where is the kinematic viscosity. The Yap turbulence length scale is then

The length scale is defined as

where is the wall distance and

with the model’s closure constant (or a realizable value when applicable).

Yap correction term

The Yap correction term is computed as

where is a model coefficient. In the -equation, this is translated into a source term

and added to for the variants that include Yap.

The Yap contribution appears in:

  • StandardTwoLayer,

  • StandardLowRe,

  • RealizableTwoLayer.

Low-Re extra production

For the StandardLowRe model, an additional low-Re production term is included in when "use_low_re_Gprime" is true and a wall-distance functor is provided.

The term is defined as

where

  • and are model coefficients,

  • is the low-Re damping function, with a low-Re coefficient,

  • is the wall-distance Reynolds number,

  • is the turbulence Reynolds number.

In the -production for the StandardLowRe variant the production term is

The term vanishes as due to the exponential damping and is most active in the near-wall low-Re region.

Destruction term and damping

The destruction term in the -equation is modeled as

where is the model coefficient and is a damping function that depends on the k– variant:

  • Standard, StandardTwoLayer, Realizable, RealizableTwoLayer:

  • StandardLowRe: consistent with the low-Re formulation used for .

The same function is used for both the extra production term and the destruction damping in the low-Re model.

Input Parameters

  • muDynamic viscosity. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Dynamic viscosity. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • mu_tTurbulent viscosity. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Turbulent viscosity. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • rhoFluid density. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Fluid density. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • tkeCoupled turbulent kinetic energy (k). A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Coupled turbulent kinetic energy (k). A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • uThe velocity in the x direction. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The velocity in the x direction. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • variableThe name of the variable whose linear system this object contributes to

    C++ Type:LinearVariableName

    Unit:(no unit assumed)

    Controllable:No

    Description:The name of the variable whose linear system this object contributes to

Required Parameters

  • C1_eps1.44C1 epsilon production coefficient.

    Default:1.44

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:C1 epsilon production coefficient.

  • C2_eps1.92C2 epsilon destruction coefficient.

    Default:1.92

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:C2 epsilon destruction coefficient.

  • C3_eps1C3 epsilon buoyancy coefficient (may be modified by Gb sign).

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:C3 epsilon buoyancy coefficient (may be modified by Gb sign).

  • C_M1Coefficient used in the compressibility correction gamma_M.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Coefficient used in the compressibility correction gamma_M.

  • C_lowRe1Low-Re f2 constant C used in the standard low-Re k-epsilon model.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Low-Re f2 constant C used in the standard low-Re k-epsilon model.

  • C_mu0.09Turbulent kinetic energy closure constant C_mu.

    Default:0.09

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Turbulent kinetic energy closure constant C_mu.

  • C_pl10Production limiter constant multiplier.

    Default:10

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Production limiter constant multiplier.

  • Ct6Ct coefficient used in Yap / ambient epsilon source terms.

    Default:6

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Ct coefficient used in Yap / ambient epsilon source terms.

  • Cw0.83Yap correction constant Cw for epsilon equation.

    Default:0.83

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Yap correction constant Cw for epsilon equation.

  • D_lowRe1Low-Re extra production coefficient D for G'.

    Default:1

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Low-Re extra production coefficient D for G'.

  • E_lowRe0.00375Low-Re extra production coefficient E for G'.

    Default:0.00375

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Low-Re extra production coefficient E for G'.

  • Pr_t0.9Turbulent Prandtl number used in the buoyancy production term.

    Default:0.9

    C++ Type:double

    Unit:(no unit assumed)

    Controllable:No

    Description:Turbulent Prandtl number used in the buoyancy production term.

  • betaThermal expansion coefficient functor used for buoyancy production (beta(T)). A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Thermal expansion coefficient functor used for buoyancy production (beta(T)). A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • blockThe list of blocks (ids or names) that this object will be applied

    C++ Type:std::vector<SubdomainName>

    Controllable:No

    Description:The list of blocks (ids or names) that this object will be applied

  • curvature_modelnoneCurvature / rotation correction model: 'none' (default) or 'standard' (Spalart–Shur style).

    Default:none

    C++ Type:MooseEnum

    Options:none, standard

    Controllable:No

    Description:Curvature / rotation correction model: 'none' (default) or 'standard' (Spalart–Shur style).

  • gravity0 0 0Gravity vector used for buoyancy production.

    Default:0 0 0

    C++ Type:libMesh::VectorValue<double>

    Unit:(no unit assumed)

    Controllable:No

    Description:Gravity vector used for buoyancy production.

  • k_epsilon_variantStandardk-epsilon model variant used for epsilon.

    Default:Standard

    C++ Type:MooseEnum

    Options:Standard, StandardLowRe, StandardTwoLayer, Realizable, RealizableTwoLayer

    Controllable:No

    Description:k-epsilon model variant used for epsilon.

  • nonlinear_modelnoneNon-linear constitutive relation for standard k-epsilon.

    Default:none

    C++ Type:MooseEnum

    Options:none, quadratic, cubic

    Controllable:No

    Description:Non-linear constitutive relation for standard k-epsilon.

  • speed_of_soundSpeed of sound functor used for compressibility correction gamma_M. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Speed of sound functor used for compressibility correction gamma_M. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • temperatureTemperature functor used for buoyancy production. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Temperature functor used for buoyancy production. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • use_buoyancyFalseInclude buoyancy production Gb in the epsilon equation.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Include buoyancy production Gb in the epsilon equation.

  • use_compressibilityFalseInclude compressibility correction gamma_M in the epsilon formulation (mainly in the k-equation, kept for parity).

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Include compressibility correction gamma_M in the epsilon formulation (mainly in the k-equation, kept for parity).

  • use_curvature_correctionFalseApply a curvature correction factor f_c to the shear production.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Apply a curvature correction factor f_c to the shear production.

  • use_low_re_GprimeFalseInclude additional low-Re production G' in epsilon.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Include additional low-Re production G' in epsilon.

  • use_yapFalseInclude Yap correction gamma_y in epsilon.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Include Yap correction gamma_y in epsilon.

  • vThe velocity in the y direction. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The velocity in the y direction. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • wThe velocity in the z direction. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:The velocity in the z direction. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • wall_distanceDistance to the closest wall; used for Yap and low-Re corrections. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

    C++ Type:MooseFunctorName

    Unit:(no unit assumed)

    Controllable:No

    Description:Distance to the closest wall; used for Yap and low-Re corrections. A functor is any of the following: a variable, a functor material property, a function, a postprocessor or a number.

  • wall_treatmentneqMethod used for wall functions.

    Default:neq

    C++ Type:MooseEnum

    Options:eq_newton, eq_incremental, eq_linearized, neq

    Controllable:No

    Description:Method used for wall functions.

  • wallsBoundaries that correspond to solid walls.

    C++ Type:std::vector<BoundaryName>

    Controllable:No

    Description:Boundaries that correspond to solid walls.

Optional Parameters

  • absolute_value_vector_tagsThe tags for the vectors this residual object should fill with the absolute value of the residual contribution

    C++ Type:std::vector<TagName>

    Controllable:No

    Description:The tags for the vectors this residual object should fill with the absolute value of the residual contribution

  • extra_matrix_tagsThe extra tags for the matrices this Kernel should fill

    C++ Type:std::vector<TagName>

    Controllable:No

    Description:The extra tags for the matrices this Kernel should fill

  • extra_vector_tagsThe extra tags for the vectors this Kernel should fill

    C++ Type:std::vector<TagName>

    Controllable:No

    Description:The extra tags for the vectors this Kernel should fill

  • matrix_onlyFalseWhether this object is only doing assembly to matrices (no vectors)

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether this object is only doing assembly to matrices (no vectors)

  • matrix_tagssystemThe tag for the matrices this Kernel should fill

    Default:system

    C++ Type:MultiMooseEnum

    Options:nontime, system

    Controllable:No

    Description:The tag for the matrices this Kernel should fill

  • vector_tagsrhsThe tag for the vectors this Kernel should fill

    Default:rhs

    C++ Type:MultiMooseEnum

    Options:rhs, time

    Controllable:No

    Description:The tag for the vectors this Kernel should fill

Contribution To Tagged Field Data Parameters

  • control_tagsAdds user-defined labels for accessing object parameters via control logic.

    C++ Type:std::vector<std::string>

    Controllable:No

    Description:Adds user-defined labels for accessing object parameters via control logic.

  • enableTrueSet the enabled status of the MooseObject.

    Default:True

    C++ Type:bool

    Controllable:Yes

    Description:Set the enabled status of the MooseObject.

  • implicitTrueDetermines whether this object is calculated using an implicit or explicit form

    Default:True

    C++ Type:bool

    Controllable:No

    Description:Determines whether this object is calculated using an implicit or explicit form

  • seed0The seed for the master random number generator

    Default:0

    C++ Type:unsigned int

    Controllable:No

    Description:The seed for the master random number generator

  • use_displaced_meshFalseWhether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether or not this object should use the displaced mesh for computation. Note that in the case this is true but no displacements are provided in the Mesh block the undisplaced mesh will still be used.

Advanced Parameters

  • ghost_layers1The number of layers of elements to ghost.

    Default:1

    C++ Type:unsigned short

    Controllable:No

    Description:The number of layers of elements to ghost.

  • use_point_neighborsFalseWhether to use point neighbors, which introduces additional ghosting to that used for simple face neighbors.

    Default:False

    C++ Type:bool

    Controllable:No

    Description:Whether to use point neighbors, which introduces additional ghosting to that used for simple face neighbors.

Parallel Ghosting Parameters

Input Files