28 inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorX
42 inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorY
56 inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorZ
71 Foam::sixDoFRigidBodyMotion::rotate
78 Tuple2<tensor, vector> Qpi(Q0, pi0);
82 tensor R = rotationTensorX(0.5*deltaT*
pi.x()/momentOfInertia_.xx());
86 R = rotationTensorY(0.5*deltaT*
pi.y()/momentOfInertia_.yy());
90 R = rotationTensorZ(deltaT*
pi.z()/momentOfInertia_.zz());
94 R = rotationTensorY(0.5*deltaT*
pi.y()/momentOfInertia_.yy());
98 R = rotationTensorX(0.5*deltaT*
pi.x()/momentOfInertia_.xx());
107 Foam::sixDoFRigidBodyMotion::restraints()
const
114 Foam::sixDoFRigidBodyMotion::constraints()
const
121 Foam::sixDoFRigidBodyMotion::initialCentreOfRotation()
const
123 return initialCentreOfRotation_;
128 Foam::sixDoFRigidBodyMotion::initialQ()
const
134 inline const Foam::tensor& Foam::sixDoFRigidBodyMotion::Q()
const
136 return motionState_.Q();
142 return motionState_.v();
146 inline const Foam::vector& Foam::sixDoFRigidBodyMotion::a()
const
148 return motionState_.a();
152 inline const Foam::vector& Foam::sixDoFRigidBodyMotion::pi()
const
154 return motionState_.pi();
158 inline const Foam::vector& Foam::sixDoFRigidBodyMotion::tau()
const
160 return motionState_.tau();
164 inline Foam::point& Foam::sixDoFRigidBodyMotion::initialCentreOfRotation()
166 return initialCentreOfRotation_;
170 inline Foam::tensor& Foam::sixDoFRigidBodyMotion::initialQ()
178 return motionState_.Q();
184 return motionState_.v();
190 return motionState_.a();
196 return motionState_.pi();
202 return motionState_.tau();
217 return momentOfInertia_;
230 return motionState_.centreOfRotation();
237 return initialCentreOfMass_;
249 return centreOfMass() - motionState_.centreOfRotation();
262 return Q() & (
inv(momentOfInertia_) &
pi());
274 motionState0_ = motionState_;
280 return motionState_.centreOfRotation();
289 return (
omega() ^ (pt - centreOfRotation())) + v();
299 q.
transform(initialCentreOfRotation()) - centreOfRotation(),
307 const point& initialPoint
313 + (Q() & initialQ_.T() & (initialPoint - initialCentreOfRotation_))
A 2-tuple for storing two objects of different types.
Quaternion class used to perform rotations in 3D space.
vector transform(const vector &v) const
Rotate the given vector.
Septernion class used to perform translations and rotations in 3D space.
Holds the motion state of sixDoF object. Wrapped up together to allow rapid scatter to other processo...
point centreOfMass() const
Return the current centre of mass.
const diagTensor & momentOfInertia() const
Return the inertia tensor.
void newTime()
Store the motion state at the beginning of the time-step.
const point & initialCentreOfMass() const
Return the initial centre of mass.
bool report() const
Return the report Switch.
const tensor & orientation() const
Return the orientation tensor, Q.
septernion transform0() const
Return the transformation relative to the initial time.
vector omega() const
Return the angular velocity in the global frame.
scalar mass() const
Return the mass.
point transform(const point &initialPoint) const
Transform the given initial state point by the current motion.
point velocity(const point &pt) const
Return the velocity of a position.
const point & centreOfRotation() const
Return the current centre of rotation.
const sixDoFRigidBodyMotionState & state() const
Return the motion state.
Tensor< scalar > tensor
Tensor of scalars.
void transform(GeometricField< Type, GeoMesh > &rtf, const GeometricField< tensor, GeoMesh > &trf, const GeometricField< Type, GeoMesh > &tf)
dimensionedScalar sin(const dimensionedScalar &ds)
Vector< scalar > vector
A scalar version of the templated Vector.
void inv(pointPatchField< tensor > &, const pointPatchField< tensor > &)
static scalar R(const scalar a, const scalar x)
void T(GeometricField< Type, GeoMesh, PrimitiveField1 > &gf, const GeometricField< Type, GeoMesh, PrimitiveField2 > &gf1)
dimensionedScalar cos(const dimensionedScalar &ds)