This function object 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 objectRegistry &, const dictionary &, const bool loadFromFiles=false, const bool readFields=true) | |
Construct for given objectRegistry and dictionary. More... | |
forces (const word &name, const objectRegistry &, const labelHashSet &patchSet, const word &pName, const word &UName, const word &rhoName, const scalar rhoInf, const scalar pRef, const coordinateSystem &coordSys) | |
Construct from components. More... | |
virtual | ~forces () |
Destructor. More... | |
virtual const word & | name () const |
Return name of the set of forces. More... | |
virtual void | read (const dictionary &) |
Read the forces data. More... | |
virtual void | execute () |
Execute, currently does nothing. More... | |
virtual void | end () |
Execute at the final time-loop, currently does nothing. More... | |
virtual void | timeSet () |
Called when time was set at the end of the Time::operator++. More... | |
virtual void | write () |
Write the forces. 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 void | updateMesh (const mapPolyMesh &) |
Update for changes of mesh. More... | |
virtual void | movePoints (const polyMesh &) |
Update for changes of mesh. More... | |
![]() | |
functionObjectState (const objectRegistry &obr, const word &name) | |
Construct from components. More... | |
virtual | ~functionObjectState () |
Destructor. More... | |
const word & | name () const |
Return the name. More... | |
bool | active () const |
Return the active flag. More... | |
const IOdictionary & | stateDict () const |
Return access to the state dictionary. More... | |
dictionary & | propertyDict () |
Return access to the property dictionary. More... | |
template<class Type > | |
bool | setActive () |
Set the active status by querying objectRegistry type. More... | |
bool | foundProperty (const word &entryName) const |
Return true if the property exists. More... | |
template<class Type > | |
Type | getProperty (const word &entryName, const Type &defaultValue=pTraits< Type >::zero) const |
Retrieve generic property. More... | |
template<class Type > | |
void | getProperty (const word &entryName, Type &value) const |
Retrieve generic property. 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=pTraits< Type >::zero) const |
Retrieve generic property from named object. More... | |
template<class Type > | |
void | getObjectProperty (const word &objectName, const word &entryName, Type &value) const |
Retrieve generic property from named object. 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=pTraits< Type >::zero) const |
Retrieve result. More... | |
template<class Type > | |
Type | getObjectResult (const word &objectName, const word &entryName, const Type &defaultValue=pTraits< Type >::zero) const |
Retrieve result from named object. More... | |
template<class Type > | |
void | getObjectResult (const word &objectName, const word &entryName, Type &value) const |
Retrieve result from named object. 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... | |
![]() | |
functionObjectFile (const objectRegistry &obr, const word &prefix) | |
Construct null. More... | |
functionObjectFile (const objectRegistry &obr, const word &prefix, const word &fileName, const dictionary &dict) | |
Construct from components and read options from dictionary. More... | |
virtual | ~functionObjectFile () |
Destructor. More... | |
void | read (const dictionary &dict) |
Read. More... | |
OFstream & | file () |
Return access to the file (if only 1) More... | |
bool | writeToFile () const |
Return true if can write to file. More... | |
void | writeCommented (Ostream &os, const string &str) const |
Write a commented string to stream. More... | |
void | writeTabbed (Ostream &os, const string &str) const |
Write a tabbed string to stream. More... | |
void | writeHeader (Ostream &os, const string &str) const |
Write a commented header to stream. More... | |
void | writeTime (Ostream &os) const |
Write the current time to 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... | |
label | charWidth () const |
Return width of character stream output. More... | |
Protected Member Functions | |
word | fieldName (const word &name) const |
Create a field name. More... | |
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 | 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 rhoName is 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 &) | |
Disallow default bitwise copy construct. More... | |
void | operator= (const forces &) |
Disallow default bitwise assignment. More... | |
![]() | |
functionObjectState (const functionObjectState &) | |
Disallow default bitwise copy construct. More... | |
void | operator= (const functionObjectState &) |
Disallow default bitwise assignment. More... | |
![]() | |
virtual void | initStream (Ostream &os) const |
Initialise the output stream for writing. More... | |
virtual fileName | baseFileDir () const |
Return the base directory for output. More... | |
virtual fileName | baseTimeDir () const |
Return the base directory for the current time value. More... | |
virtual autoPtr< OFstream > | createFile (const word &name) const |
Return an autoPtr to a new file. More... | |
virtual void | resetFile (const word &name) |
Reset internal file pointer to new file with new name. More... | |
virtual Omanip< int > | valueWidth (const label offset=0) const |
Return the value width when writing to stream with optional offset. More... | |
functionObjectFile (const functionObjectFile &) | |
Disallow default bitwise copy construct. More... | |
void | operator= (const functionObjectFile &) |
Disallow default bitwise assignment. More... | |
Protected Attributes | |
const objectRegistry & | obr_ |
Reference to the database. More... | |
Switch | log_ |
Switch to send output to Info as well as to file. More... | |
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... | |
autoPtr< OFstream > | localForceFilePtr_ |
Local force. More... | |
autoPtr< OFstream > | localMomentFilePtr_ |
Local moment. More... | |
autoPtr< OFstream > | localForceBinFilePtr_ |
Local force bins. More... | |
autoPtr< OFstream > | localMomentBinFilePtr_ |
Local 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... | |
coordinateSystem | coordSys_ |
Coordinate system used when evaluting forces/moments. More... | |
bool | localSystem_ |
Flag to indicate whether we are using a local co-ordinate sys. 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... | |
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 word | name_ |
Name of model. More... | |
bool | active_ |
Flag to indicate whether the object is active. More... | |
IOdictionary & | stateDict_ |
Reference to the state dictionary. More... | |
![]() | |
bool | writeToFile_ |
Flag to enable/disable writing to file. More... | |
Additional Inherited Members | |
![]() | |
static const word | outputPrefix = "postProcessing" |
Directory prefix. More... | |
static label | addChars = 7 |
Additional characters for writing. More... | |
This function object 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, with optional co-ordinate system and writing of binned data, where force and moment contributions are collected into a user-defined number of bins that span the input geometries for a user-defined direction vector.
Data is written into multiple files in the postProcessing/<functionObjectName> directory:
Example of function object specification:
forces1 { type forces; functionObjectLibs ("libforces.so"); ... log yes; writeFields yes; patches (walls); binData { nBin 20; direction (1 0 0); cumulative yes; } }
Function object usage
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 | |
pName | pressure field name | no | p |
UName | velocity field name | no | U |
rhoName | 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 |
fDName | 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 |
rhoName
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
coordinateSystem { origin (0 0 0); e3 (0 0 1); e1 (1 0 0); }
Disallow default bitwise copy construct.
Referenced by SprayParcel::calcBreakup(), and KinematicParcel::calcVelocity().
forces | ( | const word & | name, |
const objectRegistry & | obr, | ||
const dictionary & | dict, | ||
const bool | loadFromFiles = false , |
||
const bool | readFields = true |
||
) |
Construct for given objectRegistry and dictionary.
Allow the possibility to load fields from files
Definition at line 738 of file forces.C.
References dict, Foam::endl(), Foam::Info, and Foam::read().
forces | ( | const word & | name, |
const objectRegistry & | obr, | ||
const labelHashSet & | patchSet, | ||
const word & | pName, | ||
const word & | UName, | ||
const word & | rhoName, | ||
const scalar | rhoInf, | ||
const scalar | pRef, | ||
const coordinateSystem & | coordSys | ||
) |
|
protected |
Create a field name.
Definition at line 46 of file forces.C.
References forces::name(), and functionObjectState::name_.
Write header for integrated data.
Definition at line 91 of file forces.C.
References Foam::endl().
Write header for binned data.
Definition at line 113 of file forces.C.
References Foam::endl(), forAll, Foam::jn(), Foam::name(), Foam::nl, and Foam::tab.
|
protected |
Initialise the fields.
Definition at line 164 of file forces.C.
References Foam::endl(), Foam::Info, Foam::nl, and WarningInFunction.
|
protected |
Initialise the collection bins.
Definition at line 215 of file forces.C.
References polyMesh::boundaryMesh(), fvMesh::C(), porosityModel::cellZoneIDs(), polyMesh::cellZones(), polyPatch::faceCentres(), forAll, forAllConstIter(), Foam::max(), mesh, Foam::min(), and Foam::reduce().
|
protected |
Reset the fields prior to accumulation of force/moments.
Definition at line 289 of file forces.C.
References Vector< scalar >::zero.
|
protected |
Return the effective viscous stress (laminar + turbulent).
Definition at line 320 of file forces.C.
References Foam::dev(), Foam::exit(), Foam::FatalError, FatalErrorInFunction, Foam::fvc::grad(), dictionary::lookup(), transportModel::nu(), nu, GeometricField::null(), rho, turb, Foam::twoSymm(), and U.
|
protected |
Dynamic viscosity field.
Definition at line 382 of file forces.C.
References basicThermo::dictName, Foam::exit(), Foam::FatalError, FatalErrorInFunction, dictionary::lookup(), transportModel::nu(), nu, GeometricField::null(), and rho.
|
protected |
Return rho if rhoName is specified otherwise rhoRef.
Definition at line 421 of file forces.C.
References Foam::dimDensity, mesh, fvMesh::time(), and Time::timeName().
|
protected |
Return rhoRef if the pressure field is dynamic, i.e. p/rho.
otherwise return 1
Definition at line 449 of file forces.C.
References Foam::dimPressure, Foam::exit(), Foam::FatalError, FatalErrorInFunction, and p.
|
protected |
Accumulate bin data.
Definition at line 470 of file forces.C.
References forAll, Foam::max(), Foam::min(), and Foam::sum().
|
protected |
Add patch contributions to force and moment fields.
Definition at line 507 of file forces.C.
References GeometricField::boundaryField().
|
protected |
|
protected |
Helper function to write integrated forces and moments.
Definition at line 576 of file forces.C.
References Foam::endl(), Foam::Info, Foam::nl, Foam::sum(), and Foam::tab.
|
protected |
Write force data.
Definition at line 621 of file forces.C.
References Foam::endl(), Foam::Info, Foam::nl, and Foam::type().
|
protected |
Disallow default bitwise assignment.
TypeName | ( | "forces" | ) |
Runtime type information.
|
inlinevirtual |
Return name of the set of forces.
Definition at line 484 of file forces.H.
References functionObjectState::name_.
Referenced by forces::fieldName().
|
virtual |
Read the forces data.
Reimplemented in forceCoeffs.
Definition at line 858 of file forces.C.
References polyMesh::boundaryMesh(), dict, Foam::dimForce, Foam::dimLength, Foam::endl(), Foam::exit(), Foam::FatalIOError, FatalIOErrorInFunction, forAll, dictionary::found(), Foam::Info, dictionary::lookup(), dictionary::lookupOrDefault(), Foam::mag(), mesh, Foam::nl, IOobject::NO_READ, IOobject::NO_WRITE, polyBoundaryMesh::patchSet(), tmp::ptr(), functionObjectFile::read(), dictionary::readIfPresent(), Foam::readScalar(), dictionary::subDict(), fvMesh::time(), Time::timeName(), Foam::type(), and Vector< scalar >::zero.
Referenced by forceCoeffs::read().
|
virtual |
Execute, currently does nothing.
Reimplemented in forceCoeffs.
Definition at line 999 of file forces.C.
References Foam::endl(), Foam::Info, UPstream::master(), and Foam::sum().
|
virtual |
Execute at the final time-loop, currently does nothing.
Reimplemented in forceCoeffs.
|
virtual |
Called when time was set at the end of the Time::operator++.
Reimplemented in forceCoeffs.
|
virtual |
Write the forces.
Reimplemented in forceCoeffs.
Definition at line 1048 of file forces.C.
References write().
|
virtual |
Calculate the forces and moments.
Porous force
Definition at line 1063 of file forces.C.
References GeometricField::boundaryField(), fvMesh::C(), porosityModel::cellZoneIDs(), polyMesh::cellZones(), HashTable::empty(), Foam::endl(), forAll, forAllConstIter(), porosityModel::force(), Pstream::listCombineGather(), Pstream::listCombineScatter(), Foam::mag(), mesh, Foam::constant::physicoChemical::mu, p, pRef, rho, fvMesh::Sf(), U, WarningInFunction, and Vector< scalar >::zero.
Referenced by forceCoeffs::execute().
|
virtual |
Return the total force.
Definition at line 1214 of file forces.C.
References Foam::sum().
|
virtual |
Return the total moment.
Definition at line 1220 of file forces.C.
References Foam::sum().
|
inlinevirtual |
|
inlinevirtual |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
|
protected |
Copyright © 2011-2018 OpenFOAM | OPENFOAM® is a registered trademark of OpenCFD Ltd.