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 ([58], Eq. 26):

\[ u^* = \sqrt{ \max \left(\nu_t \sqrt{| \grad{\u} + \grad{\u}^T |^2}, \zeta \right)} \]

\[ L_o = - \frac{(u^*)^3}{ {sign}(B) \kappa \max (|B|, \zeta)} \]

with

\[ B = \alpha_t \beta \frac{\grad{T} \cdot \vec{g}}{\rho} \]

where

\( u^* \) = Friction velocity [m/s]
\( \nu_t \) = Turbulent viscosity [m2/s]
\( \u \) = Velocity [m/s]
\( L_o \) = Obukhov length [m]
\( B \) = Buoyancy production term [m2/s3]
\( \alpha_t \) = Kinematic turbulent thermal conductivity [m2/s]/[kg/m/s]
\( \rho \) = Density of fluid [-]/[kg/m3]
\( \beta \) = Thermal expansion coefficient [1/K]
\( T \) = Temperature [K]
\( \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

Operand Type Location
input - -
output file - -
output field 1 volScalarField $FOAM_CASE/\<time\>/<ObukhovLength>
output field 2 volScalarField $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:

Property Description Type Required Default
type Type name: ObukhovLength word yes -
libs Library name: fieldFunctionObjects word yes -
U Name of the velocity field word no U
result1 Name of the output field for ObukhovLength word no ObukhovLength
result2 Name of the output field for Ustar word no Ustar
rhoRef Reference density (to convert from kinematic to static pressure) scalar no 1.0
kappa von Kármán constant scalar no 0.40
beta Thermal expansion coefficient scalar no 3e-3

The inherited entries are elaborated in:

Example by using the postProcess -func utility:

postProcess -func "ObukhovLength(<UField>)"

Further information

Tutorial:

Source code:

History

  • Introduced in version v2006