Go to the documentation of this file.
51 const bool loadFromFiles
72 Foam::immersedBoundaryForces::forcesMoments
81 if (directForceDensity_)
89 label patchI = iter.key();
94 isA<immersedBoundaryFvPatchVectorField>
103 refCast<const immersedBoundaryFvPatch>
105 mesh.boundary()[patchI]
108 const immersedBoundaryFvPatchVectorField& fDpatch =
109 refCast<const immersedBoundaryFvPatchVectorField>
146 fm.first().first() +=
sum(fN);
147 fm.second().first() +=
sum(Md ^ fN);
152 fm.first().second() +=
sum(fT);
153 fm.second().second() +=
sum(Md ^ fT);
169 label patchI = iter.key();
174 isA<immersedBoundaryFvPatch>
176 mesh.boundary()[patchI]
182 const immersedBoundaryFvPatchScalarField& pPatch =
183 refCast<const immersedBoundaryFvPatchScalarField>
185 p.boundaryField()[patchI]
208 fm.first().first() +=
rho(
p)*
sum(pf);
209 fm.second().first() +=
rho(
p)*
sum(Md ^ pf);
213 isA<immersedBoundaryVelocityWallFunctionFvPatchVectorField>
215 U.boundaryField()[patchI]
231 U.boundaryField()[patchI]
244 fm.first().second() +=
sum(vf);
245 fm.second().second() +=
sum(Md ^ vf);
249 isA<immersedBoundaryFvPatchVectorField>
251 U.boundaryField()[patchI]
258 const immersedBoundaryFvPatchVectorField& UPatch =
259 refCast<const immersedBoundaryFvPatchVectorField>
261 U.boundaryField()[patchI]
270 "transportProperties"
282 fm.first().second() +=
sum(vf);
283 fm.second().second() +=
sum(Md ^ vf);
289 "immersedBoundaryForces::forcesMoments"
290 "immersedBoundaryForces::calcForcesMoment() const"
291 ) <<
"Laminar flow, but cannot find nu. Skipping"
#define InfoIn(functionName)
Report a information message using Foam::Info.
tmp< GeometricField< typename outerProduct< vector, Type >::type, fvPatchField, volMesh >> grad(const GeometricField< Type, fvsPatchField, surfaceMesh > &ssf)
A class for handling words, derived from string.
virtual ~immersedBoundaryForces()
Destructor.
A class for managing temporary objects.
virtual forcesMoments calcForcesMoment() const
Calculate and return forces and moment.
const vectorField & triSf() const
Return triangular surface face area vectors.
Boundary condition for velocity when using wall functions.
ITstream & lookup(const word &, bool recursive=false, bool patternMatch=true) const
Find and return an entry data stream.
GeometricBoundaryField & boundaryField()
Return reference to GeometricBoundaryField.
Ostream & endl(Ostream &os)
Add newline and flush stream.
dimensioned< scalar > mag(const dimensioned< Type > &)
forAllConstIter(PtrDictionary< phaseModel >, mixture.phases(), phase)
Registry of regIOobjects.
void reduce(const List< UPstream::commsStruct > &comms, T &Value, const BinaryOp &bop, const int tag, const label comm)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
Pre-declare SubField and related Field type.
Immersed boundary FV patch.
defineTypeNameAndDebug(kkLOmega, 0)
A list of keyword definitions, which are a keyword followed by any number of values (e....
const vectorField & triCf() const
Return triangular surface face centres.
Generic dimensioned Type class.
Mesh data needed to do the Finite Volume discretisation.
To & refCast(From &r)
Reference type cast template function.
immersedBoundaryForces(const word &name, const objectRegistry &, const dictionary &, const bool loadFromFiles=false)
Construct for given objectRegistry and dictionary.
This function object calculates the forces and moments by integrating the pressure and skin-friction ...
const vectorField & wallShearStress() const
Return wall shear stress.
dimensioned< Type > sum(const DimensionedField< Type, GeoMesh > &df)
const tmp< Field< Type > > renumberField(const Field< Type > &f) const
Renumber Field to corespond to triangular faces contained.
Generic GeometricField class.
word name(const complex &)
Return a string representation of a complex.
tmp< Field< Type > > toTriFaces(const Field< Type > &ibValues) const
triFace values: collect data from IB fields onto intersection
This function object evaluates and outputs the shear stress at wall patches. The result is written as...