43 A.yx()*xSqr.
zx() +
A.yy()*xSqr.
zy() +
A.yz()*xSqr.
zz()
44 -
A.zx()*xSqr.
yx() -
A.zy()*xSqr.
yy() -
A.zz()*xSqr.
yz(),
46 A.zx()*xSqr.
xx() +
A.zy()*xSqr.
xy() +
A.zz()*xSqr.
xz()
47 -
A.xx()*xSqr.
zx() -
A.xy()*xSqr.
zy() -
A.xz()*xSqr.
zz(),
49 A.xx()*xSqr.
yx() +
A.xy()*xSqr.
yy() +
A.xz()*xSqr.
yz()
50 -
A.yx()*xSqr.
xx() -
A.yy()*xSqr.
xy() -
A.yz()*xSqr.
xz()
72 namespace functionObjects
85 refCast<const fvMeshMovers::pointMeshMover>(
mesh_.
mover());
87 return refCast<const RBD::rigidBodyMotion>(mover.
mover());
94 return motion().bodyIndex(body_);
101 return motion().bodies()[bodyIndex()];
135 return motion().X0(bodyIndex()).E().vectorComponent(axisi_);
141 return motion().X0(bodyIndex()).inv().transformPoint(localOrigin_);
158 const tensor E = motion().X0(bodyIndex()).E();
178 const vector& v0 = motion().v(bodyIndex()).l();
179 const vector&
w0 = motion().v(bodyIndex()).w();
180 const vector vDot0 = motion().a(bodyIndex()).l() - (v0 ^
w0);
181 const vector wDot0 = motion().a(bodyIndex()).w();
182 const tensor wDotXPlusWXWX(*wDot0 + (*
w0 & *
w0));
187 body().sectionMu0s(axisi_, distances + localOrigin_[axisi_])
191 body().sectionMu1s(axisi_, distances + localOrigin_[axisi_])
195 body().sectionMu2s(axisi_, distances + localOrigin_[axisi_])
202 - (wDotXPlusWXWX & mu1s)
208 - (localOrigin_ ^ intervalForces)
215 f += intervalForces[i];
216 m += intervalMoments[i];
218 moment[i] += m - (distances[i]*axis() ^
f);
258 localOrigin_ =
dict.lookupOrDefault<
point>(
"origin", body().c());
279 static_cast<label>(axis_)
#define forAll(list, i)
Loop across all elements in list.
#define forAllReverse(list, i)
Reverse loop across all elements in list.
Macros for easy insertion into run-time selection tables.
void size(const label)
Override size to be inconsistent with allocated storage.
Enum read(Istream &) const
Read a word from Istream and return the corresponding.
Six degree of freedom motion for a rigid body.
Class to control time during OpenFOAM simulations that is also the top-level objectRegistry.
static const NamedEnum< axisType, 6 > axisTypeNames_
String representation of axis enums.
A list of keywords followed by any number of values (e.g. words and numbers) or sub-dictionaries.
const fvMesh & mesh_
Reference to the fvMesh.
Base class for rigid-body sectional forces function objects.
virtual ~rigidBodySectionalForcesBase()
Destructor.
const RBD::rigidBodyMotion & motion() const
Return the motion system.
label axisi() const
Return the axis on which to plot the result.
label bodyIndex() const
Return the index of the body.
vector axis() const
Return the vector axis on which to plot the result. Note that this.
const point & localOrigin() const
Return the local origin of the plot.
rigidBodySectionalForcesBase(const word &name, const Time &runTime, const dictionary &dict)
Construct from Time and dictionary.
virtual void movePoints(const polyMesh &)
Update for mesh point-motion.
void addFluid(vectorField &force, vectorField &moment) const
Calculate the forces and moments at the cuts.
const word & axisName() const
Return the name of the axis on which to plot the result.
const RBD::rigidBody & body() const
Return the body.
virtual point origin() const
Return the origin of the plot.
virtual vector normal() const
Return the normal to the section planes.
void addBody(vectorField &force, vectorField &moment) const
Calculate the forces and moments at the cuts.
virtual bool read(const dictionary &)
Read the rigidBodySectionalForcesBase data.
Base class for sectional forces function objects.
void addFluid(vectorField &force, vectorField &moment) const
Calculate the forces and moments at the cuts.
virtual bool read(const dictionary &)
Read the sectionalForcesBase data.
Wrapper class so that a pointMeshMover can be instantiated to move an fvMesh.
const Foam::pointMeshMover & mover() const
Return the pointMeshMover.
const fvMeshMover & mover() const
Return the mover function class.
Mesh consisting of general polyhedral cells.
A class for managing temporary objects.
T & ref() const
Return non-const reference or generate a fatal error.
Template function which returns the un-mangled name of a given type. Useful for types which do not ha...
A class for handling words, derived from string.
Foam::fvMesh mesh(Foam::IOobject(regionName, runTime.name(), runTime, Foam::IOobject::MUST_READ), false)
#define FatalIOErrorInFunction(ios)
Report an error message using Foam::FatalIOError.
defineTypeNameAndDebug(fvMeshFunctionObject, 0)
static const coefficient A("A", dimPressure, 611.21)
errorManipArg< error, int > exit(error &err, const int errNo=1)
bool read(const char *, int32_t &)
intWM_LABEL_SIZE_t label
A label is an int32_t or int64_t as specified by the pre-processor macro WM_LABEL_SIZE.
void transform(GeometricField< Type, GeoMesh > &rtf, const GeometricField< tensor, GeoMesh > &trf, const GeometricField< Type, GeoMesh > &tf)
Vector< scalar > vector
A scalar version of the templated Vector.
Field< vector > vectorField
Specialisation of Field<T> for vector.
word name(const LagrangianState state)
Return a string representation of a Lagrangian state enumeration.
vector AxCrossX(const tensor &A, const symmTensor &xSqr)