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^* = \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:
API:
History:
- Introduced in version v2006
