TurbulenceClosures
ClimateMachine.TurbulenceClosures — ModuleTurbulenceClosuresFunctions for turbulence, sub-grid scale modeling. These include viscosity terms, diffusivity and stress tensors.
Turbulence Closure Model Constructors
ClimateMachine.TurbulenceClosures.TurbulenceClosureModel — TypeTurbulenceClosureModelAbstract type with default do-nothing behaviour for arbitrary turbulence closure models.
ClimateMachine.TurbulenceClosures.WithDivergence — TypeWithDivergenceA divergence type which includes the divergence term in the momentum flux tensor
ClimateMachine.TurbulenceClosures.WithoutDivergence — TypeWithoutDivergenceA divergence type which does not include the divergence term in the momentum flux tensor
ClimateMachine.TurbulenceClosures.ConstantViscosity — TypeConstantViscosity <: TurbulenceClosureModelAbstract type for constant viscosity models
ClimateMachine.TurbulenceClosures.ConstantDynamicViscosity — TypeConstantDynamicViscosity <: ConstantViscosityTurbulence with constant dynamic viscosity (ρν). Divergence terms are included in the momentum flux tensor if divergence_type is WithDivergence.
Fields
ρνDynamic Viscosity [kg/m/s]
divergence_type
ClimateMachine.TurbulenceClosures.ConstantKinematicViscosity — TypeConstantKinematicViscosity <: ConstantViscosityTurbulence with constant kinematic viscosity (ν). Divergence terms are included in the momentum flux tensor if divergence_type is WithDivergence.
Fields
νKinematic Viscosity [m2/s]
divergence_type
ClimateMachine.TurbulenceClosures.SmagorinskyLilly — TypeSmagorinskyLilly <: TurbulenceClosureModelFields
C_smagSmagorinsky Coefficient [dimensionless]
Smagorinsky Model Reference
Lilly Model Reference
Brunt-Väisälä Frequency Reference
ClimateMachine.TurbulenceClosures.Vreman — TypeVreman{FT} <: TurbulenceClosureModelFilter width Δ is the local grid resolution calculated from the mesh metric tensor. A Smagorinsky coefficient is specified and used to compute the equivalent Vreman coefficient.
- ν_e = √(Bᵦ/(αᵢⱼαᵢⱼ)) where αᵢⱼ = ∂uⱼ∂uᵢ with uᵢ the resolved scale velocity component.
- βij = Δ²αₘᵢαₘⱼ
- Bᵦ = β₁₁β₂₂ + β₂₂β₃₃ + β₁₁β₃₃ - β₁₂² - β₁₃² - β₂₃²
βᵢⱼ is symmetric, positive-definite. If Δᵢ = Δ, then β = Δ²αᵀα
Fields
C_smagSmagorinsky Coefficient [dimensionless]
Reference
ClimateMachine.TurbulenceClosures.AnisoMinDiss — TypeAnisoMinDiss{FT} <: TurbulenceClosureModelFilter width Δ is the local grid resolution calculated from the mesh metric tensor. A Poincare coefficient is specified and used to compute the equivalent AnisoMinDiss coefficient (computed as the solution to the eigenvalue problem for the Laplacian operator).
Fields
C_poincare
Reference
ClimateMachine.TurbulenceClosures.HyperDiffusion — TypeHyperDiffusionAbstract type for HyperDiffusion models
ClimateMachine.TurbulenceClosures.NoHyperDiffusion — TypeNoHyperDiffusion <: HyperDiffusionDefines a default hyperdiffusion model with zero hyperdiffusive fluxes.
ClimateMachine.TurbulenceClosures.DryBiharmonic — TypeDryBiharmonic{FT} <: HyperDiffusionAssumes dry compressible flow. Horizontal hyperdiffusion methods for application in GCM and LES settings Timescales are prescribed by the user while the diffusion coefficient is computed as a function of the grid lengthscale.
Fields
τ_timescale
ClimateMachine.TurbulenceClosures.EquilMoistBiharmonic — TypeEquilMoistBiharmonic{FT} <: HyperDiffusionAssumes equilibrium thermodynamics in compressible flow. Horizontal hyperdiffusion methods for application in GCM and LES settings Timescales are prescribed by the user while the diffusion coefficient is computed as a function of the grid lengthscale.
Fields
τ_timescaleτ_timescale_q_tot
ClimateMachine.TurbulenceClosures.ViscousSponge — TypeViscousSpongeAbstract type for viscous sponge layers. Modifier for viscosity computed from existing turbulence closures.
ClimateMachine.TurbulenceClosures.NoViscousSponge — TypeNoViscousSpongeNo modifiers applied to viscosity/diffusivity in sponge layer
Fields
ClimateMachine.TurbulenceClosures.UpperAtmosSponge — TypeUpperAtmosSponge{FT} <: ViscousSpongeUpper domain viscous relaxation.
Applies modifier to viscosity and diffusivity terms in a user-specified upper domain sponge region
Fields
z_maxMaximum domain altitude (m)
z_spongeAltitude at with sponge starts (m)
α_maxSponge Strength 0 ⩽ α_max ⩽ 1
γSponge exponent
Supporting Methods
ClimateMachine.TurbulenceClosures.turbulence_tensors — Functionν, D_t, τ = turbulence_tensors(
::TurbulenceClosureModel,
orientation::Orientation,
param_set::AbstractParameterSet,
state::Vars,
diffusive::Vars,
aux::Vars,
t::Real
)Compute the kinematic viscosity (ν), the diffusivity (D_t) and SGS momentum flux tensor (τ) for a given turbulence closure. Each closure overloads this method with the appropriate calculations for the returned quantities.
Arguments
::TurbulenceClosureModel= Struct identifier for turbulence closure modelorientation=BalanceLaw.orientationparam_setparameter setstate= Array of prognostic (state) variables. Seevars_stateinBalanceLawdiffusive= Array of diffusive variablesaux= Array of auxiliary variablest= time
ClimateMachine.TurbulenceClosures.init_aux_turbulence! — Functioninit_aux_turbulence!Initialise auxiliary variables for turbulence models. Overload for specific turbulence closure type.
ClimateMachine.TurbulenceClosures.principal_invariants — Functionprincipal_invariants(X)Calculates principal invariants of a tensor X. Returns 3 element tuple containing the invariants.
ClimateMachine.TurbulenceClosures.symmetrize — Functionsymmetrize(X)Given a (3,3) second rank tensor X, compute (X + X')/2, returning a symmetric SHermitianCompact object.
ClimateMachine.TurbulenceClosures.norm2 — Functionnorm2(X)Given a tensor X, computes X:X.
ClimateMachine.TurbulenceClosures.strain_rate_magnitude — Functionstrain_rate_magnitude(S)Given the rate-of-strain tensor S, computes its magnitude.