Skip to main content

ObukhovLength

Description

The ObukhovLength function object computes the Obukhov length field and associated friction velocity field.

When scaled by the ground-normal height, i.e. z, the Obukhov length becomes a dimensionless stability parameter, i.e. z/L, for atmospheric boundary layer modelling, expressing the relative roles of buoyancy and shear in the production and dissipation of turbulent kinetic energy.

The model expressions (56, Eq. 26):

u=max(νtu+uT2,ζ) u^* = \sqrt{ \max \left(\nu_t \sqrt{| \grad{\u} + \grad{\u}^T |^2}, \zeta \right)} Lo=(u)3sign(B)κmax(B,ζ) L_o = - \frac{(u^*)^3}{ {sign}(B) \kappa \max (|B|, \zeta)}

with

B=αtβTgρ B = \alpha_t \beta \frac{\grad{T} \cdot \vec{g}}{\rho}

where:

uu^* : Friction velocity, [m/s]

νt\nu_t : Turbulent viscosity, [m2/s]

u\u : Velocity, [m/s]

LoL_o : Obukhov length, [m]

BB : Buoyancy production term, [m2/s3]

αt\alpha_t : Kinematic turbulent thermal conductivity, [m2/s]/[kg/m/s]

ρ\rho : Density of fluid, [kg/m3]

β\beta : Thermal expansion coefficient, [1/K]

TT : Temperature, [K]

g\vec{g} : Gravitational acceleration, [m/s2]

ζ\zeta : A very small number to avoid floating point exceptions, [-]

Required fields:

U | Velocity [m/s]
T | Temperature [K]
nut | Turbulent viscosity [m2/s]
alphat | Kinematic turbulent thermal conductivity [m2/s]/[kg/m/s]
g | Gravitational acceleration [m/s2]

Operands

OperandTypeLocation
input--
output file--
output field 1volScalarField$FOAM_CASE/<time>/<ObukhovLength>
output field 2volScalarField$FOAM_CASE/<time>/<Ustar>

Usage

Example of the ObukhovLength function object by using functions sub-dictionary in system/controlDict file:

ObukhovLength1
{
// Mandatory entries (unmodifiable)
type ObukhovLength;
libs (fieldFunctionObjects);

// Optional entries (runtime modifiable)
U U;
result1 ObukhovLength;
result2 Ustar;
rhoRef 1.0;
kappa 0.4;
beta 3e-3;

// Optional (inherited) entries
region region0;
enabled true;
log true;
timeStart 0;
timeEnd 1000;
executeControl timeStep;
executeInterval 1;
writeControl timeStep;
writeInterval 1;
}

where the entries mean:

PropertyDescriptionTypeRequiredDefault
typeType name: ObukhovLengthwordyes-
libsLibrary name: fieldFunctionObjectswordyes-
UName of the velocity fieldwordnoU
result1Name of the output field for ObukhovLengthwordnoObukhovLength
result2Name of the output field for UstarwordnoUstar
rhoRefReference density (to convert from kinematic to static pressure)scalarno1.0
kappavon Kármán constantscalarno0.40
betaThermal expansion coefficientscalarno3e-3

The inherited entries are elaborated in:

Example by using the postProcess -func utility:

postProcess -func "ObukhovLength(<UField>)"

Further information

Tutorial:

Source code:

API:

History: Introduced in version v2006