Computes the stabilityBlendingFactor
to be used by the local blended convection scheme. The output is a surface field weight between 0-1.
More...
Public Member Functions | |
TypeName ("stabilityBlendingFactor") | |
Runtime type information. More... | |
stabilityBlendingFactor (const word &name, const Time &runTime, const dictionary &dict) | |
Construct from Time and dictionary. More... | |
stabilityBlendingFactor (const stabilityBlendingFactor &)=delete | |
No copy construct. More... | |
void | operator= (const stabilityBlendingFactor &)=delete |
No copy assignment. More... | |
virtual | ~stabilityBlendingFactor ()=default |
Destructor. More... | |
virtual bool | read (const dictionary &) |
Read the stabilityBlendingFactor data. More... | |
virtual bool | write () |
Write the stabilityBlendingFactor. More... | |
Public Member Functions inherited from fieldExpression | |
TypeName ("fieldExpression") | |
Runtime type information. More... | |
fieldExpression (const word &name, const Time &runTime, const dictionary &dict, const word &fieldName=word::null, const word &resultName=word::null) | |
Construct from Time and dictionary. More... | |
fieldExpression (const fieldExpression &)=delete | |
No copy construct. More... | |
void | operator= (const fieldExpression &)=delete |
No copy assignment. More... | |
virtual | ~fieldExpression ()=default |
Destructor. More... | |
virtual bool | read (const dictionary &dict) |
Read the fieldExpression data. More... | |
virtual bool | execute () |
Calculate the result field. More... | |
virtual bool | write () |
Write the result field. More... | |
virtual bool | clear () |
Clear the result field from the objectRegistry. More... | |
Public Member Functions inherited from fvMeshFunctionObject | |
TypeName ("fvMeshFunctionObject") | |
Runtime type information. More... | |
fvMeshFunctionObject (const word &name, const Time &runTime, const dictionary &dict) | |
Construct from Time and dictionary. More... | |
fvMeshFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict) | |
Construct from the region objectRegistry and dictionary. More... | |
virtual | ~fvMeshFunctionObject ()=default |
Destructor. More... | |
Public Member Functions inherited from regionFunctionObject | |
TypeName ("regionFunctionObject") | |
Runtime type information. More... | |
regionFunctionObject (const word &name, const Time &runTime, const dictionary &dict) | |
Construct from Time and dictionary. More... | |
regionFunctionObject (const word &name, const objectRegistry &obr, const dictionary &dict) | |
Construct from the region objectRegistry and dictionary. More... | |
virtual | ~regionFunctionObject ()=default |
Destructor. More... | |
virtual bool | read (const dictionary &dict) |
Read optional controls. More... | |
template<class ObjectType > | |
const ObjectType * | lookupObjectPtr (const word &fieldName) const |
Deprecated(2018-10) More... | |
template<class ObjectType > | |
ObjectType * | lookupObjectRefPtr (const word &fieldName) const |
Deprecated(2018-10) More... | |
Public Member Functions inherited from stateFunctionObject | |
stateFunctionObject (const word &name, const Time &runTime) | |
Construct from components. More... | |
virtual | ~stateFunctionObject ()=default |
Destructor. More... | |
dictionary & | propertyDict () |
Return access to the property dictionary. More... | |
bool | foundProperty (const word &entryName) const |
Return true if the property exists. More... | |
void | clearTrigger () |
Remove the trigger index from the properties. More... | |
label | getTrigger () const |
Get the current trigger index. More... | |
bool | setTrigger (const label triggeri) |
Set new trigger index. More... | |
bool | getDict (const word &entryName, dictionary &dict) const |
Set dictionary, return true if set. More... | |
bool | getObjectDict (const word &objectName, const word &entryName, dictionary &dict) const |
Set dictionary from named object, return true if set. More... | |
template<class Type > | |
Type | getProperty (const word &entryName, const Type &defaultValue=Type(Zero)) const |
Retrieve generic property. More... | |
template<class Type > | |
bool | getProperty (const word &entryName, Type &value) const |
Set generic property, return true if set. More... | |
template<class Type > | |
void | setProperty (const word &entryName, const Type &value) |
Add generic property. More... | |
template<class Type > | |
Type | getObjectProperty (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const |
Retrieve generic property from named object. More... | |
template<class Type > | |
bool | getObjectProperty (const word &objectName, const word &entryName, Type &value) const |
Set generic property from named object, return true if set. More... | |
template<class Type > | |
void | setObjectProperty (const word &objectName, const word &entryName, const Type &value) |
Add generic property from named object. More... | |
template<class Type > | |
void | setResult (const word &entryName, const Type &value) |
Add result. More... | |
template<class Type > | |
void | setObjectResult (const word &objectName, const word &entryName, const Type &value) |
Add result from named object. More... | |
template<class Type > | |
Type | getResult (const word &entryName, const Type &defaultValue=Type(Zero)) const |
Retrieve result. More... | |
template<class Type > | |
Type | getObjectResult (const word &objectName, const word &entryName, const Type &defaultValue=Type(Zero)) const |
Retrieve result from named object. More... | |
template<class Type > | |
bool | getObjectResult (const word &objectName, const word &entryName, Type &value) const |
Set result from named object, return true if set. More... | |
word | resultType (const word &entryName) const |
Retrieve the result type. More... | |
word | objectResultType (const word &objectName, const word &entryName) const |
Return the type of result. More... | |
wordList | objectResultEntries () const |
Retrieve the result entries. More... | |
wordList | objectResultEntries (const word &objectName) const |
Return result entries for named object. More... | |
void | writeResultEntries (Ostream &os) const |
Write the results entries for all objects to stream. More... | |
void | writeResultEntries (const word &objectName, Ostream &os) const |
Write the results entries for named object to stream. More... | |
void | writeAllResultEntries (Ostream &os) const |
Write the results entries for all objects to stream. More... | |
Public Member Functions inherited from timeFunctionObject | |
timeFunctionObject (const word &name, const Time &runTime) | |
Construct from Time. More... | |
virtual | ~timeFunctionObject ()=default |
Destructor. More... | |
const Time & | time () const |
Return time database. More... | |
objectRegistry & | storedObjects () |
const objectRegistry & | storedObjects () 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) | |
Construct from components. More... | |
autoPtr< functionObject > | clone () const |
Return clone. More... | |
virtual | ~functionObject ()=default |
Destructor. More... | |
virtual const word & | type () const =0 |
Runtime type information. More... | |
const word & | name () const noexcept |
Return the name of this functionObject. More... | |
bool | useNamePrefix () const noexcept |
Return the flag for adding a scoping name prefix. More... | |
bool | useNamePrefix (bool on) noexcept |
Modify the flag for adding a scoping name prefix. More... | |
virtual bool | read (const dictionary &dict) |
Read and set the function object if its data have changed. More... | |
virtual bool | execute ()=0 |
Called at each ++ or += of the time-loop. More... | |
virtual bool | execute (const label subIndex) |
Execute using the specified subIndex. More... | |
virtual bool | write ()=0 |
Called at each ++ or += of the time-loop. More... | |
virtual bool | end () |
Called when Time::run() determines that the time-loop exits. More... | |
virtual bool | adjustTimeStep () |
Called at the end of Time::adjustDeltaT() if adjustTime is true. More... | |
virtual bool | filesModified () const |
Did any file get changed during execution? More... | |
virtual void | updateMesh (const mapPolyMesh &mpm) |
Update for changes of mesh. More... | |
virtual void | movePoints (const polyMesh &mesh) |
Update for changes of mesh. More... | |
Public Member Functions inherited from writeFile | |
writeFile (const objectRegistry &obr, const fileName &prefix, const word &name="undefined", const bool writeToFile=true) | |
Construct from objectRegistry, prefix, fileName. More... | |
writeFile (const objectRegistry &obr, const fileName &prefix, const word &name, const dictionary &dict, const bool writeToFile=true) | |
writeFile (const writeFile &wf) | |
Construct copy. More... | |
virtual | ~writeFile ()=default |
Destructor. More... | |
virtual bool | read (const dictionary &dict) |
Read. More... | |
virtual OFstream & | file () |
Return access to the file (if only 1) More... | |
virtual bool | writeToFile () const |
Flag to allow writing to file. More... | |
virtual bool | canWriteHeader () const |
Flag to allow writing the header. More... | |
virtual label | charWidth () const |
Return width of character stream output. More... | |
virtual void | writeCommented (Ostream &os, const string &str) const |
Write a commented string to stream. More... | |
virtual void | writeTabbed (Ostream &os, const string &str) const |
Write a tabbed string to stream. More... | |
virtual void | writeHeader (Ostream &os, const string &str) const |
Write a commented header to stream. More... | |
virtual void | writeCurrentTime (Ostream &os) const |
Write the current time to stream. More... | |
virtual void | writeBreak (Ostream &os) const |
Write a break marker to the stream. More... | |
template<class Type > | |
void | writeHeaderValue (Ostream &os, const string &property, const Type &value) const |
Write a (commented) header property and value pair. More... | |
template<class Type > | |
void | writeValue (Ostream &os, const Type &val) const |
Write a given value to stream with the space delimiter. More... | |
Protected Member Functions | |
virtual void | writeFileHeader (Ostream &os) const |
Write the file header. More... | |
Protected Member Functions inherited from fieldExpression | |
virtual bool | calc ()=0 |
Calculate the components of the field and return true if successful. More... | |
void | setResultName (const word &typeName, const word &defaultArg) |
Set the name of result field. More... | |
template<class Type > | |
bool | foundObject (const word &name, const bool verbose=true) const |
Return true if required objects are found. More... | |
Protected Member Functions inherited from fvMeshFunctionObject | |
fvMeshFunctionObject (const fvMeshFunctionObject &)=delete | |
No copy construct. More... | |
void | operator= (const fvMeshFunctionObject &)=delete |
No copy assignment. More... | |
Protected Member Functions inherited from regionFunctionObject | |
virtual const objectRegistry & | obr () const |
The region or sub-region registry being used. More... | |
template<class ObjectType > | |
bool | foundObject (const word &fieldName) const |
Find object (eg, a field) in the (sub) objectRegistry. More... | |
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 |
Lookup and return object (eg, a field) from the (sub) objectRegistry. More... | |
template<class ObjectType > | |
ObjectType & | lookupObjectRef (const word &fieldName) const |
Lookup and return object (eg, a field) from the (sub) objectRegistry. More... | |
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. More... | |
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. More... | |
bool | writeObject (const word &fieldName) |
Write field if present in the (sub) objectRegistry. More... | |
bool | clearObject (const word &fieldName) |
Clear field from the (sub) objectRegistry if present. More... | |
void | clearObjects (const wordList &objNames) |
Clear fields from the (sub) objectRegistry if present. More... | |
regionFunctionObject (const regionFunctionObject &)=delete | |
No copy construct. More... | |
void | operator= (const regionFunctionObject &)=delete |
No copy assignment. More... | |
Protected Member Functions inherited from stateFunctionObject | |
const functionObjects::properties & | stateDict () const |
Return a const reference to the state dictionary. More... | |
functionObjects::properties & | stateDict () |
Return non-const access to the state dictionary. More... | |
stateFunctionObject (const stateFunctionObject &)=delete | |
No copy construct. More... | |
void | operator= (const stateFunctionObject &)=delete |
No copy assignment. More... | |
Protected Member Functions inherited from timeFunctionObject | |
void | clearOutputObjects (const wordList &objNames) |
Remove specified items from "functionObjectObjects". More... | |
timeFunctionObject (const timeFunctionObject &)=delete | |
No copy construct. More... | |
void | operator= (const timeFunctionObject &)=delete |
No copy assignment. More... | |
Protected Member Functions inherited from functionObject | |
word | scopedName (const word &name) const |
Return a scoped (prefixed) name. More... | |
Protected Member Functions inherited from writeFile | |
void | initStream (Ostream &os) const |
Initialise the output stream for writing. More... | |
fileName | baseFileDir () const |
Return the base directory for output. More... | |
fileName | baseTimeDir () const |
Return the base directory for the current time value. More... | |
virtual autoPtr< OFstream > | createFile (const word &name, scalar timeValue) const |
Return autoPtr to a new file for a given time. More... | |
virtual autoPtr< OFstream > | createFile (const word &name) const |
Return autoPtr to a new file using the simulation start time. More... | |
virtual void | resetFile (const word &name) |
Reset internal file pointer to new file with new name. More... | |
Omanip< int > | valueWidth (const label offset=0) const |
Return the value width when writing to stream with optional offset. More... | |
void | operator= (const writeFile &)=delete |
No copy assignment. More... | |
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. More... | |
Public Attributes inherited from functionObject | |
bool | log |
Flag to write log into Info. More... | |
Static Public Attributes inherited from functionObject | |
static int | debug |
Flag to execute debug content. More... | |
static bool | postProcess |
Global post-processing mode switch. More... | |
static bool | defaultUseNamePrefix |
Global default for useNamePrefix. More... | |
static word | outputPrefix |
Directory prefix. More... | |
Static Public Attributes inherited from writeFile | |
static label | addChars = 8 |
Additional characters for writing. More... | |
Protected Attributes inherited from fieldExpression | |
word | fieldName_ |
Name of field to process. More... | |
word | resultName_ |
Name of result field. More... | |
autoPtr< Detail::zoneSubSet > | zoneSubSetPtr_ |
Sub-set mesh. More... | |
Protected Attributes inherited from fvMeshFunctionObject | |
const fvMesh & | mesh_ |
Reference to the fvMesh. More... | |
Protected Attributes inherited from regionFunctionObject | |
word | subRegistryName_ |
Name for alternative object registry. More... | |
const objectRegistry & | obr_ |
Reference to the region objectRegistry. More... | |
const objectRegistry * | obrPtr_ |
Pointer to alternative (eg, sub-region) objectRegistry. More... | |
Protected Attributes inherited from timeFunctionObject | |
const Time & | time_ |
Reference to the time database. More... | |
Protected Attributes inherited from writeFile | |
const objectRegistry & | fileObr_ |
Reference to the region objectRegistry. More... | |
const fileName | prefix_ |
Prefix. More... | |
word | fileName_ |
Name of file. More... | |
autoPtr< OFstream > | filePtr_ |
File pointer. More... | |
label | writePrecision_ |
Write precision. More... | |
bool | writeToFile_ |
Flag to enable/disable writing to file. More... | |
bool | updateHeader_ |
bool | writtenHeader_ |
Flag to identify whether the header has been written. More... | |
bool | useUserTime_ |
scalar | startTime_ |
Start time value. More... | |
Computes the stabilityBlendingFactor
to be used by the local blended convection scheme. The output is a surface field weight between 0-1.
The weight of a blended scheme, i.e. w
, is given by a function of the blending factor, f:
\[ w = f_{scheme_1} + (1 - f_{scheme_2}) \]
The factor is calculated based on six criteria:
1. mesh non-orthogonality field 2. magnitude of cell centres gradient 3. convergence rate of residuals 4. faceWeight 5. skewness 6. Courant number
The user can enable them individually.
For option 1, the following relation is used, where \(\phi_1\) is the non-orthogonality:
\[ fNon = min ( max ( 0.0, (\phi_1 - max(\phi_1)) /(min(\phi_1) - max(\phi_1)) ), 1.0 ) \]
For option 2, the following relation is used, where \(\phi_2\) is the magnitude of cell centres gradient (Note that \(\phi_2 = 3\) for orthogonal meshes):
\[ fMagGradCc = min ( max ( 0.0, (\phi_2 - max(\phi_2)) / (min(\phi_2) - max(\phi_2)) ), 1.0 ) \]
For option 3, a PID control is used in order to control residual unbounded fluctuations for individual cells.
\[ factor = P*residual + I*residualIntegral + D*residualDifferential \]
where P
, I
and D
are user inputs.
The following relation is used:
\[ fRes = (factor - meanRes)/(maxRes*meanRes); \]
where
\( meanRes \) | = | Average(residual) |
\( maxRes \) | = | User input |
Note that \(f_{Res}\) will blend more towards one as the cell residual is larger then the domain mean residuals.
For option 4, the following relation is used, where \(\phi_4\) is the face weight (Note that \(\phi_4 = 0.5\) for orthogonal meshes):
\[ ffaceWeight = min ( max ( 0.0, (min(\phi_4) - \phi_4) / (min(\phi_4) - max(\phi_4)) ), 1.0 ) \]
For option 5, the following relation is used, where \(\phi_5\) is the cell skewness:
\[ fskewness = min ( max ( 0.0, (\phi_5 - max(\phi_5)) / (min(\phi_5) - max(\phi_5)) ), 1.0 ) \]
For option 6, the following relation is used:
\[ fCoWeight = min(max((Co - Co1)/(Co2 - Co1), 0), 1) \]
where
\( Co1 \) | = | Courant number below which scheme2 is used |
\( Co2 \) | = | Courant number above which scheme1 is used |
The final factor is determined by:
\[ f = max(fNon, fMagGradCc, fRes, ffaceWeight, fskewness, fCoWeight) \]
An indicator (volume) field, named blendedIndicator
is generated if the log flag is on:
Additional reporting is written to the standard output, providing statistics as to the number of cells used by each scheme.
Operands:
Operand | Type | Location |
---|---|---|
input | - | - |
output file | dat | $FOAM_CASE/postProcessing/<FO>/<time>/<file> |
output field | volScalarField | $FOAM_CASE/<time>/<outField> |
system/controlDict.functions
: stabilityBlendingFactor1 { // Mandatory entries (unmodifiable) type stabilityBlendingFactor; libs (fieldFunctionObjects); // Mandatory entries (unmodifiable) field <field>; // U; result <outField>; // UBlendingFactor; // Optional entries (runtime modifiable) tolerance 0.001; // Any of the options can be chosen in combinations // Option-1 switchNonOrtho true; nonOrthogonality nonOrthoAngle; maxNonOrthogonality 20; minNonOrthogonality 60; // Option-2 switchGradCc true; maxGradCc 3; minGradCc 4; // Option-3 switchResiduals true; maxResidual 10; residual initialResidual:p; P 1.5; I 0; D 0.5; // Option-4 switchFaceWeight true; maxFaceWeight 0.3; minFaceWeight 0.2; // Option-5 switchSkewness true; maxSkewness 2; minSkewness 3; // Option-6 switchCo true; U U; Co1 1; Co2 10; // Optional (inherited) entries ... }
Example of function object specification to calculate the residuals
used by stabilityBlendingFactor
. The following writes 'initialResidual:p' field
residuals { type residuals; libs (utilityFunctionObjects); writeFields true; writeControl writeTime; fields (p); }
where the entries mean:
Property | Description | Type | Req'd | Dflt |
---|---|---|---|---|
type | Type name: stabilityBlendingFactor | word | yes | - |
libs | Library name: fieldFunctionObjects | word | yes | - |
field | Name of operand field | word | yes | - |
result | Name of surface field to be used in the localBlended scheme | word | yes | |
switchNonOrtho | Select non-orthogonal method | bool | no | false |
nonOrthogonality | Name of the non-orthogonal field | word | no | nonOrthoAngle |
maxNonOrthogonality | Maximum non-orthogonal for scheme2 | scalar | no | 20 |
minNonOrthogonality | Minimum non-orthogonal for scheme1 | scalar | no | 60 |
switchGradCc | Select cell centre gradient method | bool | no | false |
maxGradCc | Maximum gradient for scheme2 | scalar | no | 2 |
minGradCc | Minimum gradient for scheme1 | scalar | no | 4 |
switchResiduals | Select residual evolution method | bool | no | false |
residual | Name of the residual field | word | no | initialResidual:p |
maxResidual | Maximum residual-mean ratio for scheme1 | scalar | no | 10 |
P | Proportional factor for PID | scalar | no | 3 |
I | Integral factor for PID | scalar | no | 0 |
D | Differential factor for PID | scalar | no | 0.25 |
switchFaceWeight | Select face weight method | bool | no | false |
faceWeight | Name of the faceWeight field | word | no | faceWeight |
maxFaceWeight | Maximum face weight for scheme1 | scalar | no | 0.2 |
minFaceWeight | Minimum face weight for scheme2 | scalar | no | 0.3 |
switchSkewness | Select skewness method | bool | no | false |
skewness | Name of the skewness field | word | no | skewness |
maxSkewness | Maximum skewness for scheme2 | scalar | no | 2 |
minSkewness | Minimum skewness for scheme1 | scalar | no | 3 |
switchCo | Select Co blended method | bool | no | false |
U | Name of the flux field for Co blended | word | no | U |
Co1 | Courant number below which scheme2 is used | scalar | no | 1 |
Co2 | Courant number above which scheme1 is used | scalar | no | 10 |
tolerance | Tolerance for number of blended cells | scalar | no | 0.001 |
The result
entry is the field which is read by the localBlended
scheme specified in fvSchemes
. This name is determined by the localBlended
class.
The inherited entries are elaborated in:
Usage by the postProcess
utility is not available.
Definition at line 556 of file stabilityBlendingFactor.H.
stabilityBlendingFactor | ( | const word & | name, |
const Time & | runTime, | ||
const dictionary & | dict | ||
) |
Construct from Time and dictionary.
Definition at line 465 of file stabilityBlendingFactor.C.
References IOobject::AUTO_WRITE, TimePaths::constant(), dict, Foam::dimless, Foam::exit(), Foam::FatalError, FatalErrorInFunction, writeFile::file(), objectRegistry::findObject(), fvMeshFunctionObject::mesh_, IOobject::MUST_READ, Time::New(), IOobject::NO_READ, IOobject::NO_WRITE, stabilityBlendingFactor::read(), fieldExpression::resultName_, fieldExpression::setResultName(), regionFunctionObject::store(), fvMesh::time(), timeFunctionObject::time_, Time::timeName(), IOobject::typeHeaderOk(), stabilityBlendingFactor::writeFileHeader(), IOobject::writeOpt(), writeFile::writeToFile_, and Foam::Zero.
|
delete |
No copy construct.
|
virtualdefault |
Destructor.
|
protectedvirtual |
Write the file header.
Definition at line 125 of file stabilityBlendingFactor.C.
References Foam::endl(), os(), and Foam::writeHeader().
Referenced by stabilityBlendingFactor::stabilityBlendingFactor().
TypeName | ( | "stabilityBlendingFactor" | ) |
Runtime type information.
|
delete |
No copy assignment.
|
virtual |
Read the stabilityBlendingFactor data.
Reimplemented from fieldExpression.
Definition at line 651 of file stabilityBlendingFactor.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, Foam::name(), Foam::nl, kEpsilonLopesdaCosta< BasicTurbulenceModel >::read(), and Foam::type().
Referenced by stabilityBlendingFactor::stabilityBlendingFactor().
|
virtual |
Write the stabilityBlendingFactor.
Reimplemented from fieldExpression.
Definition at line 734 of file stabilityBlendingFactor.C.
References Foam::endl(), and Foam::tab.