Turbulence Modeling in OpenPronghorn

This page documents the Reynolds-averaged Navier–Stokes (RANS) turbulence-modeling capabilities implemented in OpenPronghorn. It focuses on the family of eddy-viscosity models and practical guidance for choosing and using each model in applications.

For general background on turbulence and RANS closures, see Pope Pope (2000) and Wilcox Wilcox (2006). The baseline model follows Launder and Spalding Launder and Spalding (1974), with additional options inspired by realizable, low-Reynolds-number, two-layer, curvature/rotation, buoyancy, and compressibility corrections Shih et al. (1995), Spalart and Shur (1997), Yap (1987), Wolfstein (1969), and NORRIS III (1975).

Introduction

Most OpenPronghorn applications use RANS turbulence modeling to represent the effect of unresolved turbulent fluctuations on the mean flow. The main motivations are:

  • Cost: Direct numerical simulation is generally infeasible at reactor-relevant Reynolds numbers, and even LES can be prohibitively expensive for large, geometrically complex configurations.

  • Robustness: Two-equation eddy-viscosity models are well established, robust, and widely used in engineering practice.

  • Integration with thermal–hydraulics: The use of RANS models fits naturally into finite-volume formulations for coupled momentum, energy, and species transport equations.

OpenPronghorn’s turbulence infrastructure is designed to be:

  • Modular: The same utilities are reused by several kernels and auxiliary objects.

  • Extensible: New turbulence models can be added by leveraging the existing functor and finite-volume infrastructure.

  • Configurable: Users can select a model variant and enable or disable individual corrections (low-Re, two-layer, Yap, nonlinear, curvature, buoyancy, compressibility) through input-file parameters.

Theory of RANS modeling

Reynolds decomposition and RANS equations

Let and denote the instantaneous velocity and pressure of a constant-property Newtonian fluid with density and dynamic viscosity . In RANS modeling we write

where the overbar denotes a suitable average (e.g., time or ensemble) and primes denote fluctuations Pope (2000).

Substituting into the Navier–Stokes equations and averaging yields the mean-momentum equations

with the Reynolds-stress tensor

The appearance of introduces the closure problem of turbulence: additional equations or models are required to express the Reynolds stresses in terms of mean quantities.

Boussinesq eddy-viscosity hypothesis

In classical eddy-viscosity models we assume that the anisotropic part of the Reynolds stresses is proportional to the mean strain-rate tensor

where

  • is the turbulent (eddy) viscosity,

  • is the turbulent kinetic energy,

  • is the strain-rate tensor with components

In OpenPronghorn, is provided by the models via kEpsilonViscosity. The Boussinesq hypothesis is reasonably accurate for many wall-bounded shear flows, but is known to underperform in strongly anisotropic, rotating, or curvature-dominated flows Pope (2000) and Wilcox (2006). To mitigate these limitations OpenPronghorn includes:

  • optional nonlinear stress models (quadratic and cubic) that extend the constitutive relation beyond linear dependence on ;

  • a curvature/rotation correction that modifies production based on invariants of and the rotation tensor ;

  • realizable formulations in which depends on local invariants of and Shih et al. (1995).

The models implemented

General transport equations

The baseline OpenPronghorn implementation follows the two-equation model of Launder and Spalding Launder and Spalding (1974). In conservative form the transport equations for and are

where

  • and are the molecular and turbulent kinematic viscosities;

  • is the density, which may have a functional dependency with temperature and pressure;

  • is shear production of turbulent kinetic energy;

  • is production (or destruction) of turbulence by buoyancy;

  • and collect additional user- or model-specific source terms, including compressibility (), Yap (), and low-Re corrections ();

  • and are damping functions (typically in high-Re models, with used in low-Re variants).

The eddy viscosity is given by

where can be:

  • the classical constant (standard model),

  • a realizable value depending on and ,

  • a two-layer or low-Re modified value, which depends on wall distance and Reynolds numbers specific to the chosen near-wall treatment.

Shear production is computed as

with . The final two terms are optional compressibility corrections that vanish when the flow is strictly incompressible. Buoyancy production is modeled as

where is the turbulent Prandtl number, is gravity, is temperature, and is the thermal expansion coefficient.

Model constants (standard high-Re model)

The standard high-Re model uses the classical constants Launder and Spalding (1974):

  • ,

  • ,

  • ,

  • ,

  • .

These can be overridden through the parameters of the relevant kernels (kEpsilonTKESourceSink, kEpsilonTKEDSourceSink, and kEpsilonViscosity) if a different calibration is required.

Variant-specific forms

The implementation supports several model variants. For clarity we summarize the main differences in the equation and definition.

Standard (high-Re)

  • Eddy viscosity: .

  • , .

  • No explicit low-Re damping; near-wall behavior is typically handled by wall functions.

  • Optional terms:

  1. compressibility correction in ,

  2. Yap correction in ,

  3. curvature factor multiplying ,

  4. nonlinear production added to .

StandardLowRe

  • Same basic structure as the standard model, but:

  • is multiplied by a low-Re damping function ,

  • is given by f2_SKE_LRe(Re_t),

  • an additional term may appear in the equation, scaled by a low-Re damping factor.

  • These modifications allow integration to the wall () without wall functions, but require much finer near-wall meshes Wilcox (2006).

StandardTwoLayer

  • Near the wall, and the dissipation length scale are given by one of the two-layer prescriptions:

  • twoLayerWolfstein Wolfstein (1969),

  • twoLayerNorrisReynolds NORRIS III (1975),

  • twoLayerXu Xu et al. (1998).

  • Away from the wall, the model reverts to the standard high-Re form.

  • A blending function based on wall-distance Reynolds numbers provides a smooth transition.

Realizable

  • Uses the realizable form of Shih et al. (1995): where and .

  • Optionally uses a realizable low-Re damping function f2_RKE.

  • Improves predictions for rotating, swirling, and separating flows while maintaining realizability of the normal stresses Shih et al. (1995).

RealizableTwoLayer

  • Combines the realizable formulation with a two-layer near-wall treatment.

  • Often a good default for complex internal flows when mesh resolution allows a near-wall cluster with .

Corrections implemented in the models

All correction functions are defined in TurbulenceMethods: complete list of utilities. This section provides a summary of the corrections implemented in the models.

This section explains the available corrections, their motivation, and how they are used.

Low-Reynolds-number corrections

  • Motivation: Standard high-Re models with wall functions assume an equilibrium logarithmic layer and cannot accurately represent the viscous sublayer and buffer region. Low-Re formulations include damping functions that allow integration to the wall at Wilcox (2006).

  • Implementation: (a) with fmu_SKE_LRe (standard) or combined realizable damping, (b) The equation uses or f2_RKE, (c) An additional production term (via computeGprime) can be added to .

  • Activation: (a) k_epsilon_variant = 'StandardLowRe', (b) use_low_re_Gprime = true/false, (c) near-wall mesh with .

Two-layer near-wall models

  • Motivation: Two-layer models avoid the need to fully resolve the viscous sublayer while improving accuracy over simple wall functions. Near the wall, and are driven by empirical formulas; away from the wall, the standard or realizable equations are used Wolfstein (1969) and NORRIS III (1975).

  • Implementation: (a) The wall distance is obtained from WallDistanceAux, (b) twoLayerWolfstein, twoLayerNorrisReynolds, or twoLayerXu compute and in the near-wall region, (c) A blending function transitions between near-wall and outer-layer behavior.

  • Activation: (a) k_epsilon_variant = 'StandardTwoLayer' or 'RealizableTwoLayer', (b) two_layer_flavor = 'Wolfstein' | 'NorrisReynolds' | 'Xu', (c) wall_distance auxiliary variable and consistent walls list.

Realizable formulation

  • Motivation: The classical model can violate realizability constraints (e.g., negative normal stresses). The realizable formulation introduces a new expression for and a modified equation to enforce these constraints, improving predictions in rotating and separating flows Shih et al. (1995).

  • Implementation: (a) Cmu_realizable provides based on , , , and . (b) Optional low-Re damping via f2_RKE may be applied.

  • Activation: k_epsilon_variant = 'Realizable' or 'RealizableTwoLayer'.

Nonlinear eddy-viscosity model

  • Motivation: Linear eddy-viscosity models cannot reproduce some important features of anisotropic turbulence (secondary flows, normal stress differences) Pope (2000). Nonlinear constitutive relations add higher-order dependencies on and .

  • Implementation: (a) computeTRANS_NL constructs nonlinear tensor bases, (b) computeGnl computes additional production , (c) Cmu_nonlinear keeps consistent with the nonlinear stress model.

  • Activation: nonlinear_model = 'quadratic' or 'cubic' (in the kernels).

Yap correction

  • Motivation: In separated and impinging flows, classical models may overpredict the turbulence length scale, leading to excessive eddy viscosity and overly diffused separation zones. Yap’s correction adds an extra sink term for to limit the growth of the length scale Yap (1987).

  • Implementation: (a) computeGammaY computes based on , , and model constants, (b) is added to in kEpsilonTKEDSourceSink when enabled.

  • Activation: (a) use_yap = true, (b) consistent wall-distance and two-layer settings if applicable.

Buoyancy production

  • Motivation: In natural or mixed convection, buoyancy can generate or suppress turbulence, especially in strongly stratified regions Wilcox (2006).

  • Implementation: (a) computeGb provides using gravity, temperature gradient, and expansion coefficient , (b) is added to the equation and appears in the equation multiplied by .

  • Activation: (a) use_buoyancy = true, (b) gravity, T_fluid, beta, and Pr_t set appropriately.

Compressibility correction

  • Motivation: At high Mach numbers, dilatational effects can alter the turbulence structure and time scales. Compressibility corrections add an extra term to the equation to account for these effects Wilcox (2006).

  • Implementation: (a) computeGammaM computes based on , , and local speed of sound, (b) is added to when use_compressibility = true.

  • Activation: (a) use_compressibility = true, (b) a speed_of_sound functor is provided and consistent with the equation of state.

Curvature / rotation correction

  • Motivation: Simple eddy-viscosity models tend to mispredict turbulence levels in rotating channels, swirling jets, and flows over curved surfaces. Spalart and Shur proposed a correction factor that modifies production based on curvature/rotation Spalart and Shur (1997).

  • Implementation: (a) computeCurvatureFactor uses and to build , (b) is replaced by in both the and equations when curvature corrections are enabled.

  • Activation: (a) use_curvature_correction = true, (b) curvature_model = 'standard' (or similar option as implemented).

Practical guidance for using each model

Summary table

The table below provides a practical summary for choosing a variant in OpenPronghorn.

VariantNear-wall treatmentTypical first-cell Mesh requirementsTypical domain of applicationExample applications (OpenPronghorn context)Comments
StandardHigh-Re, wall functionsCoarse first cell in log layer; few cells across BLFully turbulent attached flows, mild pressure gradientsStraight channels, simple pipe flows, external bluff body with mild separationFast and robust; good initial choice for simple internal flows.
StandardLowReLow-Re damping (, )Strong wall clustering; many cells in viscous sublayer and buffer regionHeat-transfer-dominated internal flows, strong adverse pressure gradientsHigh-fidelity channel-flow benchmarks, heated rod bundles (resolved near wall)More expensive; sensitive to near-wall mesh quality and wall-distance accuracy.
StandardTwoLayerTwo-layer (Wolfstein/NorrisReynolds/Xu)Moderate wall clustering; smooth near-wall blendingIndustrial internal flows, moderate separation, HVAC and ductworkReactor auxiliary systems, plenum mixing with moderate separationGood compromise between cost and accuracy; pick two_layer_flavor based on target data.
RealizableHigh-Re, wall functionsSimilar to StandardRotating, swirling, and separating flowsMixing tees, swirling jets, complex manifolds with recirculationOften preferred to Standard when rotation or separation is important.
RealizableTwoLayerRealizable + two-layer near-wall modelModerate wall clustering plus two-layer blendingGeneral-purpose model for complex internal flows with heat transferReactor primary loops with moderate mesh resolution near wallsRecommended default in many industrial-like configurations when mesh allows .

Additional configuration guidelines

  1. Wall-distance field

  • Use WallDistanceAux to compute the distance to solid walls.

  • Ensure that the walls list is consistent across WallDistanceAux, kEpsilonTKESourceSink, kEpsilonTKEDSourceSink, and kEpsilonViscosity.

  1. Coupling , , and

  • Always include all three components: kEpsilonTKESourceSink (for ), kEpsilonTKEDSourceSink (for ), and kEpsilonViscosity (for ).

  • The k_epsilon_variant parameter should be the same in all of them.

  1. Incompressible vs compressible

  • For incompressible or low-Mach flows, set use_compressibility = false and omit speed_of_sound.

  • For compressible flows, provide a consistent speed_of_sound functor and consider tighter nonlinear and linear solver tolerances.

  1. Buoyancy-driven and stratified flows

  • Pay attention to Pr_t, beta, and the reference temperature/state.

  • Post-process , , and terms where possible to verify the qualitative behavior of the model.

  1. Enabling corrections judiciously

  • Nonlinear and curvature corrections add complexity and stiffness. Use them when there is clear physical motivation (strong curvature, swirl, or secondary flows) and when validation data are available.

  • Yap and low-Re corrections are valuable in separated flows and near-wall heat transfer, but may not be necessary in simple attached turbulence.

  1. Validation and calibration

  • The default constants are consistent with widely used industrial models Launder and Spalding (1974) and Shih et al. (1995).

  • For critical design calculations, validate against experiments or high-fidelity simulations (DNS/LES) Pope (2000) and Wilcox (2006).

  • If any model coefficients are retuned, document these changes and the validation cases used.

References

  1. Brian E. Launder and David B. Spalding. The numerical computation of turbulent flows. Computer Methods in Applied Mechanics and Engineering, 3(2):269–289, 1974.[BibTeX]
  2. H LEE NORRIS III. Turbulent channel flow with a moving wavy boundary. Stanford University, 1975.[BibTeX]
  3. Stephen B. Pope. Turbulent Flows. Cambridge University Press, 2000.[BibTeX]
  4. Tsan-Hsing Shih, William W. Liou, Aamir Shabbir, Zhigang Yang, and Jiang Zhu. A new k-ε eddy-viscosity model for high reynolds number turbulent flows: model development and validation. Computers & Fluids, 24(3):227–238, 1995.[BibTeX]
  5. P. R. Spalart and M. Shur. On the sensitization of turbulence models to rotation and curvature. Aerospace Science and Technology, 1(5):297–302, 1997.[BibTeX]
  6. David C. Wilcox. Turbulence Modeling for CFD. DCW Industries, 3 edition, 2006.[BibTeX]
  7. M. Wolfstein. The velocity and temperature distribution in one-dimensional flow with turbulence augmentation and pressure gradient. International Journal of Heat and Mass Transfer, 12(3):301–318, 1969.[BibTeX]
  8. Wen Xu, Q Chen, and FTM Nieuwstadt. A new turbulence model for near-wall natural convection. International Journal of Heat and Mass Transfer, 41(21):3161–3176, 1998.[BibTeX]
  9. Christopher R Yap. Turbulent heat and momentum transfer in recirculating and impinging flow. The University of Manchester (United Kingdom), 1987.[BibTeX]