Computes the Obukhov length field and associated friction velocity field. More...
#include <ObukhovLength.H>


Public Member Functions | |
| TypeName ("ObukhovLength") | |
| Run-time type information. | |
| ObukhovLength (const word &name, const Time &runTime, const dictionary &dict) | |
| Construct from Time and dictionary. | |
| ObukhovLength (const ObukhovLength &)=delete | |
| No copy construct. | |
| void | operator= (const ObukhovLength &)=delete |
| No copy assignment. | |
| virtual | ~ObukhovLength ()=default |
| Destructor. | |
| void | removeObukhovLength () |
| Remove (checkOut) the output fields from the object registry. | |
| virtual bool | read (const dictionary &dict) |
| Read the data. | |
| virtual bool | execute () |
| Calculate the output fields. | |
| virtual bool | write () |
| Write the output fields. | |
| virtual void | updateMesh (const mapPolyMesh &mpm) |
| Update for changes of mesh. | |
| virtual void | movePoints (const polyMesh &m) |
| Update for mesh point-motion. | |
| Public Member Functions inherited from fvMeshFunctionObject | |
| TypeName ("fvMeshFunctionObject") | |
| Runtime type information. | |
| fvMeshFunctionObject (const word &name, const Time &runTime, const dictionary &dict) | |
| Construct from Time and dictionary. | |
| fvMeshFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict) | |
| Construct from the region objectRegistry and dictionary. | |
| virtual | ~fvMeshFunctionObject ()=default |
| Destructor. | |
| Public Member Functions inherited from regionFunctionObject | |
| TypeName ("regionFunctionObject") | |
| Runtime type information. | |
| regionFunctionObject (const word &name, const Time &runTime, const dictionary &dict) | |
| Construct from Time and dictionary. | |
| regionFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict) | |
| Construct from the region objectRegistry and dictionary. | |
| virtual | ~regionFunctionObject ()=default |
| Destructor. | |
| template<class ObjectType> | |
| const ObjectType * | lookupObjectPtr (const word &fieldName) const |
| Deprecated(2018-10). | |
| template<class ObjectType> | |
| ObjectType * | lookupObjectRefPtr (const word &fieldName) const |
| Deprecated(2018-10). | |
| Public Member Functions inherited from stateFunctionObject | |
| stateFunctionObject (const word &name, const Time &runTime) | |
| Construct from components. | |
| virtual | ~stateFunctionObject ()=default |
| Destructor. | |
| dictionary & | propertyDict () |
| Return access to the property dictionary. | |
| bool | foundProperty (const word &entryName) const |
| Return true if the property exists. | |
| void | clearTrigger () |
| Remove the trigger index from the properties. | |
| label | getTrigger () const |
| Get the current trigger index. | |
| bool | setTrigger (const label triggeri) |
| Set new trigger index. | |
| bool | getDict (const word &entryName, dictionary &dict) const |
| Set dictionary, return true if set. | |
| bool | getObjectDict (const word &objectName, const word &entryName, dictionary &dict) const |
| Set dictionary from named object, return true if set. | |
| template<class Type> | |
| Type | getProperty (const word &entryName, const Type &defaultValue=Type(Zero)) const |
| Retrieve generic property. | |
| template<class Type> | |
| bool | getProperty (const word &entryName, Type &value) const |
| Set generic property, return true if set. | |
| template<class Type> | |
| void | setProperty (const word &entryName, const Type &value) |
| Add generic property. | |
| template<class Type> | |
| Type | getObjectProperty (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const |
| Retrieve generic property from named object. | |
| template<class Type> | |
| bool | getObjectProperty (const word &objectName, const word &entryName, Type &value) const |
| Set generic property from named object, return true if set. | |
| template<class Type> | |
| void | setObjectProperty (const word &objectName, const word &entryName, const Type &value) |
| Add generic property from named object. | |
| bool | getObjectResultDict (const word &objectName, dictionary &dict) const |
| template<class Type> | |
| void | setResult (const word &entryName, const Type &value) |
| Add result. | |
| template<class Type> | |
| void | setObjectResult (const word &objectName, const word &entryName, const Type &value) |
| Add result from named object. | |
| template<class Type> | |
| Type | getResult (const word &entryName, const Type &defaultValue=Type(Zero)) const |
| Retrieve result. | |
| template<class Type> | |
| Type | getObjectResult (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const |
| Retrieve result from named object. | |
| template<class Type> | |
| bool | getObjectResult (const word &objectName, const word &entryName, Type &value) const |
| Set result from named object, return true if set. | |
| word | resultType (const word &entryName) const |
| Retrieve the result type. | |
| word | objectResultType (const word &objectName, const word &entryName) const |
| Return the type of result. | |
| wordList | objectResultEntries () const |
| Retrieve the result entries. | |
| wordList | objectResultEntries (const word &objectName) const |
| Return result entries for named object. | |
| void | writeResultEntries (Ostream &os) const |
| Write the results entries for all objects to stream. | |
| void | writeResultEntries (const word &objectName, Ostream &os) const |
| Write the results entries for named object to stream. | |
| void | writeAllResultEntries (Ostream &os) const |
| Write the results entries for all objects to stream. | |
| Public Member Functions inherited from timeFunctionObject | |
| timeFunctionObject (const word &name, const Time &runTime) | |
| Construct from Time. | |
| virtual | ~timeFunctionObject ()=default |
| Destructor. | |
| const Time & | time () const |
| Return time database. | |
| objectRegistry & | storedObjects () |
| Write access to the output objects ("functionObjectObjects") registered on Time. | |
| const objectRegistry & | storedObjects () const |
| Const access to the output objects ("functionObjectObjects") registered on Time. | |
| Public Member Functions inherited from functionObject | |
| declareRunTimeSelectionTable (autoPtr, functionObject, dictionary,(const word &name, const Time &runTime, const dictionary &dict),(name, runTime, dict)) | |
| functionObject (const word &name, const bool withNamePrefix=defaultUseNamePrefix) | |
| Construct from components. | |
| autoPtr< functionObject > | clone () const |
| Return clone. | |
| virtual | ~functionObject ()=default |
| Destructor. | |
| virtual const word & | type () const =0 |
| Runtime type information. | |
| const word & | name () const noexcept |
| Return the name of this functionObject. | |
| bool | useNamePrefix () const noexcept |
| Return the flag for adding a scoping name prefix. | |
| bool | useNamePrefix (bool on) noexcept |
| Modify the flag for adding a scoping name prefix. | |
| virtual bool | execute (const label subIndex) |
| Execute using the specified subIndex. | |
| virtual bool | end () |
| Called when Time::run() determines that the time-loop exits. | |
| virtual bool | adjustTimeStep () |
| Called at the end of Time::adjustDeltaT() if adjustTime is true. | |
| virtual bool | filesModified () const |
| Did any file get changed during execution? | |
Protected Member Functions | |
| bool | calcOL () |
| Hard-coded Obukhov length field and friction velocity. | |
| Protected Member Functions inherited from fvMeshFunctionObject | |
| fvMeshFunctionObject (const fvMeshFunctionObject &)=delete | |
| No copy construct. | |
| void | operator= (const fvMeshFunctionObject &)=delete |
| No copy assignment. | |
| Protected Member Functions inherited from regionFunctionObject | |
| virtual const objectRegistry & | obr () const |
| The region or sub-region registry being used. | |
| template<class ObjectType> | |
| bool | foundObject (const word &fieldName) const |
| Find object (eg, a field) in the (sub) objectRegistry. | |
| template<class ObjectType> | |
| const ObjectType * | cfindObject (const word &fieldName) const |
| Return const pointer to the object (eg, a field) in the (sub) objectRegistry. | |
| template<class ObjectType> | |
| const ObjectType * | findObject (const word &fieldName) const |
| Return const pointer to the object (eg, a field) in the (sub) objectRegistry. | |
| template<class ObjectType> | |
| ObjectType * | findObject (const word &fieldName) |
| Return non-const pointer to the object of the given Type, (sub) objectRegistry. | |
| template<class ObjectType> | |
| ObjectType * | getObjectPtr (const word &fieldName) const |
| Return non-const pointer to the object of the given Type, using a const-cast to have it behave like a mutable. | |
| template<class ObjectType> | |
| const ObjectType & | lookupObject (const word &fieldName) const |
| Lookup and return object (eg, a field) from the (sub) objectRegistry. | |
| template<class ObjectType> | |
| ObjectType & | lookupObjectRef (const word &fieldName) const |
| Lookup and return object (eg, a field) from the (sub) objectRegistry. | |
| template<class ObjectType> | |
| bool | store (word &fieldName, const tmp< ObjectType > &tfield, bool cacheable=false) |
| Store the field in the (sub) objectRegistry under the given name. | |
| template<class ObjectType> | |
| bool | storeInDb (const word &fieldName, const tmp< ObjectType > &tfield, const objectRegistry &obr) |
| Store the field in an optional objectRegistry under the given name. | |
| bool | writeObject (const word &fieldName) |
| Write field if present in the (sub) objectRegistry. | |
| bool | clearObject (const word &fieldName) |
| Clear field from the (sub) objectRegistry if present. | |
| void | clearObjects (const wordList &objNames) |
| Clear fields from the (sub) objectRegistry if present. | |
| regionFunctionObject (const regionFunctionObject &)=delete | |
| No copy construct. | |
| void | operator= (const regionFunctionObject &)=delete |
| No copy assignment. | |
| Protected Member Functions inherited from stateFunctionObject | |
| const functionObjects::properties & | stateDict () const |
| Return a const reference to the state dictionary. | |
| functionObjects::properties & | stateDict () |
| Return non-const access to the state dictionary. | |
| stateFunctionObject (const stateFunctionObject &)=delete | |
| No copy construct. | |
| void | operator= (const stateFunctionObject &)=delete |
| No copy assignment. | |
| Protected Member Functions inherited from timeFunctionObject | |
| void | clearOutputObjects (const wordList &objNames) |
| Remove specified items from "functionObjectObjects". | |
| timeFunctionObject (const timeFunctionObject &)=delete | |
| No copy construct. | |
| void | operator= (const timeFunctionObject &)=delete |
| No copy assignment. | |
| Protected Member Functions inherited from functionObject | |
| word | scopedName (const word &name) const |
| Return a scoped (prefixed) name. | |
Protected Attributes | |
| word | UName_ |
| Name of velocity field. | |
| word | resultName1_ |
| Name of the output field for ObukhovLength. | |
| word | resultName2_ |
| Name of the output field for Ustar. | |
| scalar | rhoRef_ |
| Reference density (to convert from kinematic to static pressure). | |
| scalar | kappa_ |
| von Kármán constant [-] | |
| dimensionedScalar | beta_ |
| Thermal expansion coefficient [1/K]. | |
| const dimensionedVector | g_ |
| Gravitational acceleration vector [m/s2]. | |
| Protected Attributes inherited from fvMeshFunctionObject | |
| const fvMesh & | mesh_ |
| Reference to the fvMesh. | |
| Protected Attributes inherited from regionFunctionObject | |
| word | subRegistryName_ |
| Name for alternative object registry. | |
| const objectRegistry & | obr_ |
| Reference to the region objectRegistry. | |
| const objectRegistry * | obrPtr_ |
| Pointer to alternative (eg, sub-region) objectRegistry. | |
| Protected Attributes inherited from timeFunctionObject | |
| const Time & | time_ |
| Reference to the time database. | |
Additional Inherited Members | |
| Static Public Member Functions inherited from functionObject | |
| static autoPtr< functionObject > | New (const word &name, const Time &runTime, const dictionary &dict) |
| Select from dictionary, based on its "type" entry. | |
| Public Attributes inherited from functionObject | |
| bool | log |
| Flag to write log into Info. | |
| Static Public Attributes inherited from functionObject | |
| static int | debug |
| Flag to execute debug content. | |
| static bool | postProcess |
| Global post-processing mode switch. | |
| static bool | defaultUseNamePrefix |
| Global default for useNamePrefix. | |
| static word | outputPrefix |
| Directory prefix. | |
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.
![\[ u^* = \sqrt{\max (\nu_t \sqrt{2 |\symm{\grad{u}}|^2}, VSMALL)}
\]](form_45.png)
![\[ L_o = - \frac{(u^*)^3}{sign(B) \kappa \max (|B|, VSMALL)}
\]](form_46.png)
with
![\[ B = \alpha_t \beta \frac{\grad{T} \cdot \vec{g}}{\rho}
\]](form_47.png)
where
![]() | = | Friction velocity [m/s] |
![]() | = | Turbulent viscosity [m2/s] |
![]() | = | Velocity [m/s] |
![]() | = | Obukhov length [m] |
![]() | = | Buoyancy production term [m2/s3] |
![]() | = | Kinematic turbulent thermal conductivity [m2/s]/[kg/m/s] |
![]() | = | Density of fluid [-]/[kg/m3] |
![]() | = | Thermal expansion coefficient [1/K] |
![]() | = | Temperature [K] |
![]() | = | Gravitational acceleration [m/s2] |
![]() | = | A very small number to avoid floating point exceptions |
References:
Definition of the Obukhov length (tag:O):
Obukhov, A. M. (1946).
Turbulentnost'v temperaturnoj-neodnorodnoj atmosfere.
Trudy Inst. Theor. Geofiz. AN SSSR, 1, 95-115.
Obukhov, A. M. (1971).
Turbulence in an atmosphere with a non-uniform temperature.
Boundary-layer meteorology, 2(1), 7-29.
DOI:10.1007/BF00718085
Obukhov length. (2016).
In American Meteorological Society - Glossary of meteorology.
Retrieved Apr 1, 2020, from glossary.ametsoc.org/wiki/Obukhov_length
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]
| Operand | Type | Location |
|---|---|---|
input | - | - |
output file | - | - |
output field 1 | volScalarField | $FOAM_CASE/<time>/<ObukhovLength> |
output field 2 | volScalarField | $FOAM_CASE/<time>/<Ustar> |
system/controlDict.functions: 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
...
}
where the entries mean:
| Property | Description | Type | Req'd | Dflt |
|---|---|---|---|---|
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:
Minimal example by using the postProcess utility:
postProcess -func "ObukhovLength(<UField>)"
Definition at line 293 of file ObukhovLength.H.
| ObukhovLength | ( | const word & | name, |
| const Time & | runTime, | ||
| const dictionary & | dict ) |
Construct from Time and dictionary.
Definition at line 177 of file ObukhovLength.C.
References beta_, dict, Foam::dimless, Foam::dimTemperature, e, fvMeshFunctionObject::fvMeshFunctionObject(), kappa_, Foam::name(), resultName1_, resultName2_, rhoRef_, runTime, UName_, and x.
Referenced by ObukhovLength(), and operator=().


|
delete |
|
virtualdefault |
Destructor.
References dict.
|
protected |
Hard-coded Obukhov length field and friction velocity.
Definition at line 46 of file ObukhovLength.C.
References B, beta_, GeometricField< Type, PatchField, GeoMesh >::boundaryFieldRef(), Foam::dimLength, Foam::dimless, Foam::dimVelocity, g_, Foam::fvc::grad(), Foam::isA(), kappa_, Foam::mag(), Foam::magSqr(), Foam::max(), fvMeshFunctionObject::mesh_, Foam::min(), IOobjectOption::NO_READ, IOobjectOption::NO_REGISTER, IOobjectOption::NO_WRITE, nut, Foam::pow3(), IOobjectOption::REGISTER, resultName1_, resultName2_, rho, rhoPtr, rhoRef_, Foam::sign(), Foam::sqr(), Foam::sqrt(), Foam::symm(), Foam::T(), U, UName_, and fvPatchFieldBase::zeroGradientType().
Referenced by execute().


| TypeName | ( | "ObukhovLength" | ) |
Run-time type information.
References dict, Foam::name(), and runTime.

|
delete |
| void removeObukhovLength | ( | ) |
Remove (checkOut) the output fields from the object registry.
Definition at line 275 of file ObukhovLength.C.
References fvMeshFunctionObject::mesh_, resultName1_, and resultName2_.
Referenced by movePoints(), and updateMesh().

|
virtual |
Read the data.
Reimplemented from regionFunctionObject.
Definition at line 216 of file ObukhovLength.C.
References beta_, dict, e, kappa_, functionObject::read(), resultName1_, resultName2_, rhoRef_, and UName_.

|
virtual |
Calculate the output fields.
Implements functionObject.
Definition at line 242 of file ObukhovLength.C.
References calcOL(), Foam::endl(), Log, name, Foam::nl, and Foam::type().

|
virtual |
Write the output fields.
Implements functionObject.
Definition at line 256 of file ObukhovLength.C.
References Foam::endl(), Log, fvMeshFunctionObject::mesh_, IOobject::name(), name, Foam::nl, resultName1_, resultName2_, Foam::type(), and regIOobject::write().

|
virtual |
Update for changes of mesh.
Reimplemented from functionObject.
Definition at line 282 of file ObukhovLength.C.
References mapPolyMesh::mesh(), fvMeshFunctionObject::mesh_, and removeObukhovLength().

|
virtual |
Update for mesh point-motion.
Reimplemented from functionObject.
Definition at line 291 of file ObukhovLength.C.
References fvMeshFunctionObject::mesh_, and removeObukhovLength().

|
protected |
Name of velocity field.
Definition at line 304 of file ObukhovLength.H.
Referenced by calcOL(), ObukhovLength(), and read().
|
protected |
Name of the output field for ObukhovLength.
Definition at line 309 of file ObukhovLength.H.
Referenced by calcOL(), ObukhovLength(), read(), removeObukhovLength(), and write().
|
protected |
Name of the output field for Ustar.
Definition at line 314 of file ObukhovLength.H.
Referenced by calcOL(), ObukhovLength(), read(), removeObukhovLength(), and write().
|
protected |
Reference density (to convert from kinematic to static pressure).
Definition at line 319 of file ObukhovLength.H.
Referenced by calcOL(), ObukhovLength(), and read().
|
protected |
von Kármán constant [-]
Definition at line 324 of file ObukhovLength.H.
Referenced by calcOL(), ObukhovLength(), and read().
|
protected |
Thermal expansion coefficient [1/K].
Definition at line 329 of file ObukhovLength.H.
Referenced by calcOL(), ObukhovLength(), and read().
|
protected |
Gravitational acceleration vector [m/s2].
Definition at line 334 of file ObukhovLength.H.
Referenced by calcOL().