Public Member Functions | Protected Member Functions | Protected Attributes | List of all members
ObukhovLength Class Reference

Computes the Obukhov length field and associated friction velocity field. More...

Inheritance diagram for ObukhovLength:
Inheritance graph
[legend]
Collaboration diagram for ObukhovLength:
Collaboration graph
[legend]

Public Member Functions

 TypeName ("ObukhovLength")
 
 ObukhovLength (const word &name, const Time &runTime, const dictionary &dict)
 
 ObukhovLength (const ObukhovLength &)=delete
 
void operator= (const ObukhovLength &)=delete
 
virtual ~ObukhovLength ()=default
 
void removeObukhovLength ()
 
virtual bool read (const dictionary &dict)
 
virtual bool execute ()
 
virtual bool write ()
 
virtual void updateMesh (const mapPolyMesh &mpm)
 
virtual void movePoints (const polyMesh &m)
 
- Public Member Functions inherited from fvMeshFunctionObject
 TypeName ("fvMeshFunctionObject")
 
 fvMeshFunctionObject (const word &name, const Time &runTime, const dictionary &dict)
 
 fvMeshFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict)
 
virtual ~fvMeshFunctionObject ()=default
 
- Public Member Functions inherited from regionFunctionObject
 TypeName ("regionFunctionObject")
 
 regionFunctionObject (const word &name, const Time &runTime, const dictionary &dict)
 
 regionFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict)
 
virtual ~regionFunctionObject ()=default
 
template<class ObjectType >
const ObjectType * lookupObjectPtr (const word &fieldName) const
 
template<class ObjectType >
ObjectType * lookupObjectRefPtr (const word &fieldName) const
 
- Public Member Functions inherited from stateFunctionObject
 stateFunctionObject (const word &name, const Time &runTime)
 
virtual ~stateFunctionObject ()=default
 
dictionarypropertyDict ()
 
bool foundProperty (const word &entryName) const
 
void clearTrigger ()
 
label getTrigger () const
 
bool setTrigger (const label triggeri, bool increaseOnly=true)
 
bool getDict (const word &entryName, dictionary &dict) const
 
bool getObjectDict (const word &objectName, const word &entryName, dictionary &dict) const
 
template<class Type >
Type getProperty (const word &entryName, const Type &defaultValue=Type(Zero)) const
 
template<class Type >
bool getProperty (const word &entryName, Type &value) const
 
template<class Type >
void setProperty (const word &entryName, const Type &value)
 
template<class Type >
Type getObjectProperty (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const
 
template<class Type >
bool getObjectProperty (const word &objectName, const word &entryName, Type &value) const
 
template<class Type >
void setObjectProperty (const word &objectName, const word &entryName, const Type &value)
 
template<class Type >
void setResult (const word &entryName, const Type &value)
 
template<class Type >
void setObjectResult (const word &objectName, const word &entryName, const Type &value)
 
template<class Type >
Type getResult (const word &entryName, const Type &defaultValue=Type(Zero)) const
 
template<class Type >
Type getObjectResult (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const
 
template<class Type >
bool getObjectResult (const word &objectName, const word &entryName, Type &value) const
 
word resultType (const word &entryName) const
 
word objectResultType (const word &objectName, const word &entryName) const
 
wordList objectResultEntries () const
 
wordList objectResultEntries (const word &objectName) const
 
void writeResultEntries (Ostream &os) const
 
void writeResultEntries (const word &objectName, Ostream &os) const
 
void writeAllResultEntries (Ostream &os) const
 
- Public Member Functions inherited from timeFunctionObject
 timeFunctionObject (const word &name, const Time &runTime)
 
virtual ~timeFunctionObject ()=default
 
const Timetime () const
 
objectRegistrystoredObjects ()
 
const objectRegistrystoredObjects () const
 
- 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)
 
autoPtr< functionObjectclone () const
 
virtual ~functionObject ()=default
 
virtual const wordtype () const =0
 
const wordname () const noexcept
 
bool useNamePrefix () const noexcept
 
bool useNamePrefix (bool on) noexcept
 
virtual bool execute (const label subIndex)
 
virtual bool end ()
 
virtual bool adjustTimeStep ()
 
virtual bool filesModified () const
 

Protected Member Functions

bool calcOL ()
 
- Protected Member Functions inherited from fvMeshFunctionObject
 fvMeshFunctionObject (const fvMeshFunctionObject &)=delete
 
void operator= (const fvMeshFunctionObject &)=delete
 
- Protected Member Functions inherited from regionFunctionObject
virtual const objectRegistryobr () const
 
template<class ObjectType >
bool foundObject (const word &fieldName) const
 
template<class ObjectType >
const ObjectType * cfindObject (const word &fieldName) const
 
template<class ObjectType >
const ObjectType * findObject (const word &fieldName) const
 
template<class ObjectType >
ObjectType * findObject (const word &fieldName)
 
template<class ObjectType >
ObjectType * getObjectPtr (const word &fieldName) const
 
template<class ObjectType >
const ObjectType & lookupObject (const word &fieldName) const
 
template<class ObjectType >
ObjectType & lookupObjectRef (const word &fieldName) const
 
template<class ObjectType >
bool store (word &fieldName, const tmp< ObjectType > &tfield, bool cacheable=false)
 
template<class ObjectType >
bool storeInDb (const word &fieldName, const tmp< ObjectType > &tfield, const objectRegistry &obr)
 
bool writeObject (const word &fieldName)
 
bool clearObject (const word &fieldName)
 
void clearObjects (const wordList &objNames)
 
 regionFunctionObject (const regionFunctionObject &)=delete
 
void operator= (const regionFunctionObject &)=delete
 
- Protected Member Functions inherited from stateFunctionObject
const functionObjects::propertiesstateDict () const
 
functionObjects::propertiesstateDict ()
 
 stateFunctionObject (const stateFunctionObject &)=delete
 
void operator= (const stateFunctionObject &)=delete
 
- Protected Member Functions inherited from timeFunctionObject
void clearOutputObjects (const wordList &objNames)
 
 timeFunctionObject (const timeFunctionObject &)=delete
 
void operator= (const timeFunctionObject &)=delete
 
- Protected Member Functions inherited from functionObject
word scopedName (const word &name) const
 

Protected Attributes

word UName_
 
word resultName1_
 
word resultName2_
 
scalar rhoRef_
 
scalar kappa_
 
dimensionedScalar beta_
 
const dimensionedVector g_
 
- Protected Attributes inherited from fvMeshFunctionObject
const fvMeshmesh_
 
- Protected Attributes inherited from regionFunctionObject
word subRegistryName_
 
const objectRegistryobr_
 
const objectRegistryobrPtr_
 
- Protected Attributes inherited from timeFunctionObject
const Timetime_
 

Additional Inherited Members

- Static Public Member Functions inherited from functionObject
static autoPtr< functionObjectNew (const word &name, const Time &runTime, const dictionary &dict)
 
- Public Attributes inherited from functionObject
bool log
 
- Static Public Attributes inherited from functionObject
static int debug
 
static bool postProcess
 
static bool defaultUseNamePrefix
 
static word outputPrefix
 

Detailed Description

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)} \]

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

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]
$ g $ = Gravitational acceleration [m/s2]
$ VSMALL $ = 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>
Usage
Minimal example by using 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>)"
See also
Source files

Definition at line 293 of file ObukhovLength.H.

Constructor & Destructor Documentation

◆ ObukhovLength() [1/2]

ObukhovLength ( const word name,
const Time runTime,
const dictionary dict 
)

Definition at line 137 of file ObukhovLength.C.

References dict, and Foam::read().

Here is the call graph for this function:

◆ ObukhovLength() [2/2]

ObukhovLength ( const ObukhovLength )
delete

◆ ~ObukhovLength()

virtual ~ObukhovLength ( )
virtualdefault

Member Function Documentation

◆ calcOL()

bool calcOL ( )
protected

◆ TypeName()

TypeName ( "ObukhovLength"  )

◆ operator=()

void operator= ( const ObukhovLength )
delete

◆ removeObukhovLength()

void removeObukhovLength ( )

Definition at line 234 of file ObukhovLength.C.

◆ read()

bool read ( const dictionary dict)
virtual

Reimplemented from regionFunctionObject.

Definition at line 175 of file ObukhovLength.C.

References dict, Foam::constant::electromagnetic::e, and regionFunctionObject::read().

Here is the call graph for this function:

◆ execute()

bool execute ( )
virtual

Implements functionObject.

Definition at line 201 of file ObukhovLength.C.

References Foam::endl(), Log, Foam::name(), Foam::nl, and Foam::type().

Here is the call graph for this function:

◆ write()

bool write ( )
virtual

Implements functionObject.

Definition at line 215 of file ObukhovLength.C.

References Foam::endl(), Log, Foam::name(), IOobject::name(), Foam::nl, Foam::type(), Ostream::write(), and regIOobject::write().

Here is the call graph for this function:

◆ updateMesh()

void updateMesh ( const mapPolyMesh mpm)
virtual

Reimplemented from functionObject.

Definition at line 241 of file ObukhovLength.C.

References mapPolyMesh::mesh().

Here is the call graph for this function:

◆ movePoints()

void movePoints ( const polyMesh m)
virtual

Reimplemented from functionObject.

Definition at line 250 of file ObukhovLength.C.

Member Data Documentation

◆ UName_

word UName_
protected

Definition at line 302 of file ObukhovLength.H.

Referenced by ObukhovLength::calcOL().

◆ resultName1_

word resultName1_
protected

Definition at line 305 of file ObukhovLength.H.

Referenced by ObukhovLength::calcOL().

◆ resultName2_

word resultName2_
protected

Definition at line 308 of file ObukhovLength.H.

Referenced by ObukhovLength::calcOL().

◆ rhoRef_

scalar rhoRef_
protected

Definition at line 311 of file ObukhovLength.H.

Referenced by ObukhovLength::calcOL().

◆ kappa_

scalar kappa_
protected

Definition at line 314 of file ObukhovLength.H.

Referenced by ObukhovLength::calcOL().

◆ beta_

dimensionedScalar beta_
protected

Definition at line 317 of file ObukhovLength.H.

Referenced by ObukhovLength::calcOL().

◆ g_

const dimensionedVector g_
protected

Definition at line 320 of file ObukhovLength.H.

Referenced by ObukhovLength::calcOL().


The documentation for this class was generated from the following files: