Calculates the forces and moments by integrating the pressure and skin-friction forces over a given list of patches, and the resistance from porous zones. More...
Public Member Functions | |
TypeName ("forces") | |
Runtime type information. More... | |
forces (const word &name, const Time &runTime, const dictionary &dict, const bool readFields=true) | |
Construct from Time and dictionary. More... | |
forces (const word &name, const objectRegistry &obr, const dictionary &dict, const bool readFields=true) | |
Construct from objectRegistry and dictionary. More... | |
virtual | ~forces ()=default |
Destructor. More... | |
virtual bool | read (const dictionary &) |
Read the forces data. More... | |
virtual void | calcForcesMoment () |
Calculate the forces and moments. More... | |
virtual vector | forceEff () const |
Return the total force. More... | |
virtual vector | momentEff () const |
Return the total moment. More... | |
virtual bool | execute () |
Execute, currently does nothing. More... | |
virtual bool | write () |
Write the forces. More... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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, bool increaseOnly=true) |
Set the trigger index. Normally only if greater than current. 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... | |
![]() | |
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 |
![]() | |
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 | 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... | |
![]() | |
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 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... | |
Protected Member Functions | |
void | createFiles () |
Create the output files. More... | |
void | writeIntegratedHeader (const word &header, Ostream &os) const |
Write header for integrated data. More... | |
void | writeBinHeader (const word &header, Ostream &os) const |
Write header for binned data. More... | |
void | setCoordinateSystem (const dictionary &dict, const word &e3Name=word::null, const word &e1Name=word::null) |
Set the co-ordinate system from dictionary and axes names. More... | |
void | initialise () |
Initialise the fields. More... | |
void | initialiseBins () |
Initialise the collection bins. More... | |
void | resetFields () |
Reset the fields prior to accumulation of force/moments. More... | |
tmp< volSymmTensorField > | devRhoReff () const |
Return the effective viscous stress (laminar + turbulent). More... | |
tmp< volScalarField > | mu () const |
Dynamic viscosity field. More... | |
tmp< volScalarField > | rho () const |
Return rho if specified otherwise rhoRef. More... | |
scalar | rho (const volScalarField &p) const |
Return rhoRef if the pressure field is dynamic, i.e. p/rho. More... | |
void | applyBins (const vectorField &Md, const vectorField &fN, const vectorField &fT, const vectorField &fP, const vectorField &d) |
Accumulate bin data. More... | |
void | addToFields (const label patchi, const vectorField &Md, const vectorField &fN, const vectorField &fT, const vectorField &fP) |
Add patch contributions to force and moment fields. More... | |
void | addToFields (const labelList &cellIDs, const vectorField &Md, const vectorField &fN, const vectorField &fT, const vectorField &fP) |
Add cell contributions to force and moment fields. More... | |
void | writeIntegratedForceMoment (const string &descriptor, const vectorField &fm0, const vectorField &fm1, const vectorField &fm2, autoPtr< OFstream > &osPtr) const |
Helper function to write integrated forces and moments. More... | |
void | writeForces () |
Write force data. More... | |
void | writeBinnedForceMoment (const List< Field< vector >> &fm, autoPtr< OFstream > &osPtr) const |
Helper function to write binned forces and moments. More... | |
void | writeBins () |
Write binned data. More... | |
forces (const forces &)=delete | |
No copy construct. More... | |
void | operator= (const forces &)=delete |
No copy assignment. More... | |
![]() | |
fvMeshFunctionObject (const fvMeshFunctionObject &)=delete | |
No copy construct. More... | |
void | operator= (const fvMeshFunctionObject &)=delete |
No copy assignment. More... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
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... | |
![]() | |
word | scopedName (const word &name) const |
Return a scoped (prefixed) name. More... | |
![]() | |
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... | |
Protected Attributes | |
List< Field< vector > > | force_ |
Pressure, viscous and porous force per bin. More... | |
List< Field< vector > > | moment_ |
Pressure, viscous and porous moment per bin. More... | |
autoPtr< OFstream > | forceFilePtr_ |
Forces. More... | |
autoPtr< OFstream > | momentFilePtr_ |
Moments. More... | |
autoPtr< OFstream > | forceBinFilePtr_ |
Force bins. More... | |
autoPtr< OFstream > | momentBinFilePtr_ |
Moment bins. More... | |
labelHashSet | patchSet_ |
Patches to integrate forces over. More... | |
word | pName_ |
Name of pressure field. More... | |
word | UName_ |
Name of velocity field. More... | |
word | rhoName_ |
Name of density field (optional) More... | |
Switch | directForceDensity_ |
Is the force density being supplied directly? More... | |
word | fDName_ |
The name of the force density (fD) field. More... | |
scalar | rhoRef_ |
Reference density needed for incompressible calculations. More... | |
scalar | pRef_ |
Reference pressure. More... | |
autoPtr< coordinateSystem > | coordSysPtr_ |
Coordinate system used when evaluating forces/moments. More... | |
bool | porosity_ |
Flag to include porosity effects. More... | |
label | nBin_ |
Number of bins. More... | |
vector | binDir_ |
Direction used to determine bin orientation. More... | |
scalar | binDx_ |
Distance between bin divisions. More... | |
scalar | binMin_ |
Minimum bin bounds. More... | |
scalar | binMax_ |
Maximum bin bounds. More... | |
List< point > | binPoints_ |
Bin positions along binDir. More... | |
bool | binCumulative_ |
Should bin data be cumulative? More... | |
bool | writeFields_ |
Write fields flag. More... | |
bool | initialised_ |
Initialised flag. More... | |
![]() | |
const fvMesh & | mesh_ |
Reference to the fvMesh. More... | |
![]() | |
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... | |
![]() | |
const Time & | time_ |
Reference to the time database. More... | |
![]() | |
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... | |
Additional Inherited Members | |
![]() | |
static autoPtr< functionObject > | New (const word &name, const Time &runTime, const dictionary &dict) |
Select from dictionary, based on its "type" entry. More... | |
![]() | |
bool | log |
Flag to write log into Info. More... | |
![]() | |
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 label | addChars = 8 |
Additional characters for writing. More... | |
Calculates the forces and moments by integrating the pressure and skin-friction forces over a given list of patches, and the resistance from porous zones.
Forces and moments are calculated in a global Cartesian coordinate system by default, or using a user-defined system. Contributions can be 'binned' according to a user-defined number of uniform-width collection zones (bins) that span the input geometries, oriented by a user-defined direction vector.
Results are written to multiple files as a function of time in the postProcessing/<functionObjectName> directory:
forces1 { type forces; libs (forces); ... log yes; writeFields yes; patches (walls); binData { nBin 20; direction (1 0 0); cumulative yes; } }
Where the entries comprise:
Property | Description | Required | Default value |
---|---|---|---|
type | Type name: forces | yes | |
log | Write force data to standard output | no | no |
writeFields | Write the force and moment fields | no | no |
patches | Patches included in the forces calculation | yes | |
p | Pressure field name | no | p |
U | Velocity field name | no | U |
rho | Density field name (see below) | no | rho |
CofR | Centre of rotation (see below) | no | |
porosity | flag to include porosity contributions | no | no |
directForceDensity | Force density supplied directly (see below) | no | no |
fD | Name of force density field (see below) | no | fD |
Bin data is optional, but if the dictionary is present, the entries must be defined according o
nBin | number of data bins | yes | |
---|---|---|---|
direction | direction along which bins are defined | yes | |
cumulative | bin data accumulated with incresing distance | yes |
rho
to rhoInf
. You will then be required to provide a rhoInf
value corresponding to the free-stream constant density.directForceDensity
flag to 'yes', and supply the force density field using the fDName
entryCofR
entry, or be taken from origin of the local coordinate system. For example, CofR (0 0 0);or
origin (0 0 0); e1 (0 1 0); e3 (0 0 1);or
coordinateSystem { origin (0 0 0); rotation { type axes; e3 (0 0 1); e1 (1 0 0); } }
forces | ( | const word & | name, |
const Time & | runTime, | ||
const dictionary & | dict, | ||
const bool | readFields = true |
||
) |
Construct from Time and dictionary.
Definition at line 697 of file forces.C.
References dict, Foam::endl(), Log, and Foam::read().
forces | ( | const word & | name, |
const objectRegistry & | obr, | ||
const dictionary & | dict, | ||
const bool | readFields = true |
||
) |
Construct from objectRegistry and dictionary.
Definition at line 742 of file forces.C.
References dict, Foam::endl(), Log, and Foam::read().
|
virtualdefault |
Destructor.
|
protected |
Create the output files.
Definition at line 51 of file forces.C.
References writeFile::createFile(), forces::forceBinFilePtr_, forces::forceFilePtr_, forces::momentBinFilePtr_, forces::momentFilePtr_, forces::nBin_, forces::writeBinHeader(), forces::writeIntegratedHeader(), and writeFile::writeToFile().
Write header for integrated data.
Definition at line 74 of file forces.C.
References Foam::endl(), os(), and Foam::writeHeader().
Referenced by forces::createFiles().
Write header for binned data.
Definition at line 97 of file forces.C.
References Foam::endl(), forAll, Foam::jn(), Foam::name(), Foam::nl, os(), Foam::tab, and Foam::writeHeader().
Referenced by forces::createFiles().
|
protected |
Set the co-ordinate system from dictionary and axes names.
Definition at line 153 of file forces.C.
References dict, coordinateSystem::New(), word::null, and Foam::Zero.
|
protected |
Initialise the fields.
Definition at line 196 of file forces.C.
References Foam::exit(), Foam::FatalError, and FatalErrorInFunction.
|
protected |
Initialise the collection bins.
Definition at line 241 of file forces.C.
References porosityModel::cellZoneIDs(), polyPatch::faceCentres(), forAll, forAllConstIters(), Foam::max(), Foam::min(), Foam::reduce(), and VectorSpace< Vector< scalar >, scalar, 3 >::zero.
|
protected |
Reset the fields prior to accumulation of force/moments.
Definition at line 316 of file forces.C.
References Foam::Zero.
|
protected |
Return the effective viscous stress (laminar + turbulent).
Definition at line 342 of file forces.C.
References Foam::dev(), dictionary::dictName(), Foam::dimViscosity, Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::fvc::grad(), transportModel::nu(), nu, GeometricField< symmTensor, fvPatchField, volMesh >::null(), rho, transportProperties(), turb, Foam::twoSymm(), and U.
|
protected |
Dynamic viscosity field.
Definition at line 397 of file forces.C.
References dictionary::dictName(), Foam::dimViscosity, Foam::exit(), Foam::FatalError, FatalErrorInFunction, transportModel::nu(), nu, GeometricField< scalar, fvPatchField, volMesh >::null(), rho, and transportProperties().
|
protected |
Return rho if specified otherwise rhoRef.
Definition at line 433 of file forces.C.
References Foam::dimDensity, and tmp< T >::New().
|
protected |
Return rhoRef if the pressure field is dynamic, i.e. p/rho.
otherwise return 1
Definition at line 454 of file forces.C.
References Foam::dimPressure, Foam::exit(), Foam::FatalError, FatalErrorInFunction, and p.
|
protected |
Accumulate bin data.
Definition at line 473 of file forces.C.
References forAll, Foam::max(), Foam::min(), and Foam::sum().
|
protected |
|
protected |
|
protected |
Helper function to write integrated forces and moments.
Definition at line 560 of file forces.C.
References Foam::endl(), Log, Foam::nl, os(), Foam::sum(), and Foam::tab.
|
protected |
Write force data.
Definition at line 603 of file forces.C.
References Foam::endl(), Log, Foam::name(), Foam::nl, and Foam::type().
|
protecteddelete |
No copy assignment.
TypeName | ( | "forces" | ) |
Runtime type information.
|
virtual |
Read the forces data.
Reimplemented from writeFile.
Reimplemented in propellerInfo, and forceCoeffs.
Definition at line 799 of file forces.C.
References dict, Foam::dimForce, Foam::dimLength, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, dictionary::get(), Foam::Info, Foam::name(), Foam::nl, IOobject::NO_READ, IOobject::NO_WRITE, Vector< Cmpt >::normalise(), regionFunctionObject::read(), writeFile::read(), Foam::type(), and Foam::Zero.
Referenced by forceCoeffs::read(), and propellerInfo::read().
|
virtual |
Calculate the forces and moments.
Definition at line 951 of file forces.C.
References GeometricField< Type, PatchField, GeoMesh >::boundaryField(), porosityModel::cellZoneIDs(), HashTable< T, Key, Hash >::empty(), Foam::endl(), forAllConstIters(), porosityModel::force(), Pstream::listCombineGather(), Pstream::listCombineScatter(), Foam::mag(), Foam::constant::physicoChemical::mu, p, rho, U, WarningInFunction, and Foam::Zero.
Referenced by forceCoeffs::execute().
|
virtual |
Return the total force.
Definition at line 1073 of file forces.C.
References Foam::sum().
|
virtual |
Return the total moment.
Definition at line 1079 of file forces.C.
References Foam::sum().
|
virtual |
Execute, currently does nothing.
Implements functionObject.
Reimplemented in propellerInfo, and forceCoeffs.
Definition at line 1085 of file forces.C.
References Foam::endl(), Log, UPstream::master(), and Foam::sum().
|
virtual |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Number of bins.
Definition at line 303 of file forces.H.
Referenced by forces::createFiles(), and forceCoeffs::createFiles().
|
protected |
|
protected |