Calculates and outputs 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... | |
virtual | ~stabilityBlendingFactor () |
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... | |
virtual | ~fieldExpression ()=default |
Destructor. More... | |
virtual bool | execute () |
Calculate 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... | |
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... | |
label | getTrigger () const |
Get the current trigger index. More... | |
bool | setTrigger (const label triggeri) |
Set the current 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... | |
List< word > | objectResultEntries () const |
Retrieve the result entries. More... | |
List< word > | 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 | |
virtual const word & | type () const =0 |
Runtime type information. More... | |
declareRunTimeSelectionTable (autoPtr, functionObject, dictionary,(const word &name, const Time &runTime, const dictionary &dict),(name, runTime, dict)) | |
functionObject (const word &name) | |
Construct from components. More... | |
autoPtr< functionObject > | clone () const |
Return clone. More... | |
virtual | ~functionObject ()=default |
Destructor. More... | |
const word & | name () const |
Return the name of this functionObject. More... | |
virtual bool | execute (const label subIndex) |
Execute using the specified subIndex. 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 OFstream & | file () |
Return access to the file (if only 1) More... | |
virtual bool | writeToFile () const |
Flag to allow writing to file. 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... | |
Protected Member Functions | |
virtual void | writeFileHeader (Ostream &os) const |
Write the file header. More... | |
Protected Member Functions inherited from fieldExpression | |
void | setResultName (const word &typeName, const word &defaultArg) |
template<class Type > | |
bool | foundObject (const word &name, const bool verbose=true) const |
fieldExpression (const fieldExpression &)=delete | |
No copy construct. More... | |
void | operator= (const fieldExpression &)=delete |
No copy assignment. 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... | |
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 IOdictionary & | stateDict () const |
Return a const reference to the state dictionary. More... | |
IOdictionary & | 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 name, e.g. used to construct local field names. 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 |
Switch write log to Info. More... | |
Static Public Attributes inherited from functionObject | |
static int | debug |
static bool | postProcess |
Global post-processing mode switch. 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... | |
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 | writtenHeader_ |
Flag to identify whether the header has been written. More... | |
bool | useUserTime_ |
scalar | startTime_ |
Start time value. More... | |
Calculates and outputs 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 is given by a function of the blending factor, f:
\[ weight = f scheme1 + (1 - f) scheme2 \]
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) Co number
The user can enable them individually.
For option 1, the following relation is used:
\[ fNon = min ( max ( 0.0, (nonOrthogonality - maxNonOrthogonality) /(minNonOrthogonality - maxNonOrthogonality) ), 1.0 ) \]
For option 2, the following relation is used:
\[ fMagGradCc = min ( max ( 0.0, (magGradCC - maxGradCc) / (minGradCc - maxGradCc) ), 1.0 ) \]
Note that magGradCC is equal to 3 for ortoghonal meshes
For option 3 a PID control is used in order to control residual unbouded 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 is an user input
fRes will blend more towards one as the cell residual is larger then the domain mean residuals.
For option 4 , the following relation is used:
\[ ffaceWeight = min ( max ( 0.0, (minFaceWeight - faceWeights) / (minFaceWeight - maxFaceWeight) ), 1.0 ) \]
Note that faceWeights for a orthogonal mesh is 0.5.
For option 5 , the following relation is used:
\[ fskewness = min ( max ( 0.0, (skewness - maxSkewness) / (minSkewness - maxSkewness) ), 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.
stabilityBlendingFactor1 { type stabilityBlendingFactor; libs ("libfieldFunctionObjects.so"); log true; writeToFile false; switchNonOrtho yes; switchGradCc no; switchResiduals yes; switchFaceWeight no; switchSkewness no; switchCo no; maxNonOrthogonality 20; minNonOrthogonality 60; maxGradCc 3; minGradCc 4; maxFaceWeight 0.3; minFaceWeight 0.2; maxSkewness 2; minSkewness 3; maxResidual 10; result UBlendingFactor; residual initialResidual:p; P 1.5; I 0; D 0.5; Co1 1; Co2 10; ... ... field U; } Example of function object specification to calculate the residuals used by stabilityBlendingFactor. The following writes 'initialResidual:p' field residuals { type residuals; libs ("libutilityFunctionObjects.so"); writeFields true; writeControl outputTime; fields (p); }
Where the entries comprise:
Property | Description | Required | Default value |
---|---|---|---|
type | Type name: stabilityBlendingFactor | yes | |
log
Log to standard output
no
yes
writeToFile
Log to file
no
yes
switchNonOrtho
non-orthogonal method
no
false
switchGradCc
cell centre gradient method
no
false
switchResiduals
residual evolution method
no
false
switchFaceWeight
face weight method
no
false
switchSkewness
skewness method
no
false
switchCo
Co blended
no
false
maxNonOrthogonality
maximum non-orthogonal for scheme2
no
20
minNonOrthogonality
minimum non-orthogonal for scheme1
no
60
maxGradCc
maximum gradient for scheme2
no
2
minGradCc
minimum gradient for scheme1
no
4
maxResidual
maximum residual-mean ratio for scheme1
no
10
P
proportional factor for PID
no
3
I
integral factor for PID
no
0
D
differential factor for PID
no
0.25
maxFaceWeight
maximum face weight for scheme1
no
0.2
minFaceWeight
minimum face weight for scheme2
no
0.3
maxSkewness
maximum skewness for scheme2
no
2
minSkewness
minimum skewness for scheme1
no
3
faceWeight
Name of the faceWeight field
no
faceWeight
skewness
Name of the skewness field
no
skewness
nonOrthogonality
Name of the non-orthogonal field
no
nonOrthoAngle
residual
Name of the residual field
no
initialResidual:p
U
Name of the flux field for Co blended
no
U
Co1
Courant number below which scheme2 is used
no
1
Co2
Courant number above which scheme1 is used
no
10
tolerance
Tolerance for number of blended cells
no
0.001
field
Name of field to evaluate
yes
result
Name of surface field to be used in the localBlended scheme
yes
The 'log' flag true write the number of cells on each scheme, plus it writes the field name "blendedIndicator".
The 'result' entry is the field which is read by the localBlended scheme specified in fvSchemes. This name is determined by the localBlended class.
Definition at line 502 of file stabilityBlendingFactor.H.
stabilityBlendingFactor | ( | const word & | name, |
const Time & | runTime, | ||
const dictionary & | dict | ||
) |
Construct from Time and dictionary.
Definition at line 426 of file stabilityBlendingFactor.C.
References IOobject::AUTO_WRITE, dict, Foam::dimless, Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::log(), IOobject::MUST_READ, tmp< T >::New(), IOobject::NO_READ, IOobject::NO_WRITE, Foam::read(), and Foam::Zero.
|
virtual |
Destructor.
Definition at line 632 of file stabilityBlendingFactor.C.
|
protectedvirtual |
Write the file header.
Definition at line 85 of file stabilityBlendingFactor.C.
References Foam::endl(), and Foam::writeHeader().
TypeName | ( | "stabilityBlendingFactor" | ) |
Runtime type information.
|
virtual |
Read the stabilityBlendingFactor data.
Reimplemented from fieldExpression.
Definition at line 639 of file stabilityBlendingFactor.C.
References dict, Foam::endl(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::Info, Foam::name(), Foam::nl, fieldExpression::read(), writeFile::read(), and Foam::type().
|
virtual |
Write the stabilityBlendingFactor.
Reimplemented from fieldExpression.
Definition at line 721 of file stabilityBlendingFactor.C.
References Foam::endl(), and Foam::tab.