Six degree of freedom motion for a rigid body. More...
Public Member Functions | |
rigidBodyMotion () | |
Construct null. More... | |
rigidBodyMotion (const dictionary &dict) | |
Construct from dictionary. More... | |
rigidBodyMotion (const dictionary &dict, const dictionary &stateDict) | |
Construct from constant and state dictionaries. More... | |
rigidBodyMotion (const rigidBodyMotion &) | |
Disallow default bitwise copy construction. More... | |
~rigidBodyMotion () | |
Destructor. More... | |
bool | report () const |
Return the report Switch. More... | |
const rigidBodyModelState & | state () const |
Return the motion state. More... | |
rigidBodyModelState & | state () |
Return the motion state for modification. More... | |
spatialTransform | X00 (const label bodyId) const |
Return the initial transform to the global frame for the. More... | |
void | newTime () |
Store the motion state at the beginning of the time-step. More... | |
void | forwardDynamics (rigidBodyModelState &state, const scalarField &tau, const Field< spatialVector > &fx) const |
Calculate and optionally relax the joint acceleration qDdot from. More... | |
void | solve (const scalar t, const scalar deltaT, const scalarField &tau, const Field< spatialVector > &fx) |
Integrate velocities, orientation and position. More... | |
void | status (const label bodyID) const |
Report the status of the motion of the given body. More... | |
tmp< pointField > | transformPoints (const label bodyID, const pointField &initialPoints) const |
Transform the given initial pointField of the specified body. More... | |
tmp< pointField > | transformPoints (const label bodyID, const scalarField &weight, const pointField &initialPoints) const |
Transform the given initial pointField of the specified body. More... | |
tmp< pointField > | transformPoints (const labelList &bodyIDs, const List< const scalarField *> &weights, const pointField &initialPoints) const |
Transform the given initial pointField of the specified body. More... | |
virtual void | write (Ostream &) const |
Write. More... | |
bool | read (const dictionary &dict) |
Read coefficients dictionary and update system parameters,. More... | |
void | operator= (const rigidBodyMotion &)=delete |
Disallow default bitwise assignment. More... | |
Public Member Functions inherited from rigidBodyModel | |
TypeName ("rigidBodyModel") | |
Runtime type information. More... | |
rigidBodyModel () | |
Null-constructor which adds the single root-body at the origin. More... | |
rigidBodyModel (const dictionary &dict) | |
Construct from dictionary. More... | |
virtual | ~rigidBodyModel () |
Destructor. More... | |
label | nBodies () const |
Return the number of bodies in the model (bodies().size()) More... | |
PtrList< rigidBody > | bodies () const |
Return the list of the bodies in the model. More... | |
const DynamicList< label > & | lambda () const |
List of indices of the parent of each body. More... | |
const PtrList< joint > & | joints () const |
Return the list of joints in the model. More... | |
label | nDoF () const |
Return the number of degrees of freedom of the model. More... | |
bool | unitQuaternions () const |
Return true if any of the joints using quaternions. More... | |
const vector & | g () const |
Return the acceleration due to gravity. More... | |
vector & | g () |
Allow the acceleration due to gravity to be set. More... | |
const word & | name (const label bodyID) const |
Return the name of body with the given ID. More... | |
wordList | movingBodyNames () const |
Return the names of the moving bodies. More... | |
const rigidBodyInertia & | I (const label i) const |
Return the inertia of body i. More... | |
const spatialVector & | v (const label i) const |
Return the spatial velocity of the bodies. More... | |
virtual label | join (const label parentID, const spatialTransform &XT, autoPtr< joint > jointPtr, autoPtr< rigidBody > bodyPtr) |
Join the given body to the parent with ID parentID via the given. More... | |
label | join (const label parentID, const spatialTransform &XT, autoPtr< joints::composite > cJoint, autoPtr< rigidBody > bodyPtr) |
Join the given body to the parent with ID parentID via the given. More... | |
label | merge (const label parentID, const spatialTransform &X, autoPtr< rigidBody > bodyPtr) |
Merge the given body with transform X into the parent with ID. More... | |
bool | merged (label bodyID) const |
Return true if the body with given ID has been merged with a parent. More... | |
label | master (label bodyID) const |
Return the ID of the master body for a sub-body otherwise. More... | |
label | mergedBodyIndex (const label mergedBodyID) const |
Return the index of the merged body in the mergedBody list. More... | |
label | mergedBodyID (const label mergedBodyIndex) const |
Return the merged body ID for the given merged body index. More... | |
const subBody & | mergedBody (label mergedBodyID) const |
Return the merged body for the given body ID. More... | |
label | bodyID (const word &name) const |
Return the ID of the body with the given name. More... | |
spatialTransform | X0 (const label bodyId) const |
Return the current transform to the global frame for the given body. More... | |
vector | masterPoint (const label bodyID, const vector &p) const |
spatialVector | v (const label bodyID, const vector &p) const |
Return the velocity of the given point on the given body. More... | |
void | applyRestraints (scalarField &tau, Field< spatialVector > &fx, const rigidBodyModelState &state) const |
Apply the restraints and accumulate the internal joint forces. More... | |
void | forwardDynamics (rigidBodyModelState &state, const scalarField &tau, const Field< spatialVector > &fx) const |
Calculate the joint acceleration qDdot from the joint state q,. More... | |
void | forwardDynamicsCorrection (const rigidBodyModelState &state) const |
Correct the velocity and acceleration of the bodies in the model. More... | |
bool | read (const dictionary &dict) |
Read coefficients dictionary and update system parameters,. More... | |
Friends | |
class | rigidBodySolver |
Additional Inherited Members | |
Protected Member Functions inherited from rigidBodyModel | |
virtual label | join_ (const label parentID, const spatialTransform &XT, autoPtr< joint > jointPtr, autoPtr< rigidBody > bodyPtr) |
Join the given body to the parent with ID parentID via the given. More... | |
Protected Attributes inherited from rigidBodyModel | |
PtrList< rigidBody > | bodies_ |
List of the bodies. More... | |
PtrList< subBody > | mergedBodies_ |
Bodies may be merged into existing bodies, the inertia of which is. More... | |
HashTable< label, word > | bodyIDs_ |
Lookup-table of the IDs of the bodies. More... | |
DynamicList< label > | lambda_ |
List of indices of the parent of each body. More... | |
PtrList< joint > | joints_ |
Each body it attached with a joint which are held on this list. More... | |
DynamicList< spatialTransform > | XT_ |
Transform from the parent body frame to the joint frame. More... | |
label | nDoF_ |
The number of degrees of freedom of the model. More... | |
bool | unitQuaternions_ |
True if any of the joints using quaternions. More... | |
PtrList< restraint > | restraints_ |
Motion restraints. More... | |
vector | g_ |
Acceleration due to gravity. More... | |
DynamicList< spatialTransform > | Xlambda_ |
Transform from the parent body to the current body. More... | |
DynamicList< spatialTransform > | X0_ |
Transform for external forces to the bodies reference frame. More... | |
DynamicList< spatialVector > | v_ |
The spatial velocity of the bodies. More... | |
DynamicList< spatialVector > | a_ |
The spatial acceleration of the bodies. More... | |
DynamicList< spatialVector > | c_ |
The velocity dependent spatial acceleration of the joints. More... | |
DynamicList< spatialTensor > | IA_ |
Velocity-product acceleration. More... | |
DynamicList< spatialVector > | pA_ |
Articulated body bias force. More... | |
DynamicList< compactSpatialTensor > | S_ |
Motion subspace for joints with 3 degrees of freedom. More... | |
DynamicList< spatialVector > | S1_ |
Motion subspace for joints with 1 degrees of freedom. More... | |
DynamicList< compactSpatialTensor > | U_ |
Sub-expression IA.S in the forward-dynamics algorithm. More... | |
DynamicList< spatialVector > | U1_ |
Sub-expression IA.S1 in the forward-dynamics algorithm. More... | |
DynamicList< tensor > | Dinv_ |
Sub-expression (S^T.U)^-1 in the forward-dynamics algorithm. More... | |
DynamicList< vector > | u_ |
Sub-expression tau - S^T.pA in the forward-dynamics algorithm. More... | |
Six degree of freedom motion for a rigid body.
Angular momentum stored in body fixed reference frame. Reference orientation of the body (where Q = I) must align with the cartesian axes such that the Inertia tensor is in principle component form. Can add restraints (e.g. a spring) and constraints (e.g. motion may only be on a plane).
The time-integrator for the motion is run-time selectable with options for symplectic (explicit), Crank-Nicolson and Newmark schemes.
Definition at line 67 of file rigidBodyMotion.H.
rigidBodyMotion | ( | ) |
Construct null.
Definition at line 45 of file rigidBodyMotion.C.
Referenced by rigidBodyMotion::rigidBodyMotion().
rigidBodyMotion | ( | const dictionary & | dict | ) |
Construct from dictionary.
Definition at line 57 of file rigidBodyMotion.C.
References dictionary::found(), rigidBodyModel::g(), dictionary::lookup(), and rigidBodyMotion::rigidBodyMotion().
rigidBodyMotion | ( | const dictionary & | dict, |
const dictionary & | stateDict | ||
) |
Construct from constant and state dictionaries.
Definition at line 80 of file rigidBodyMotion.C.
References dictionary::found(), rigidBodyModel::g(), and dictionary::lookup().
rigidBodyMotion | ( | const rigidBodyMotion & | ) |
Disallow default bitwise copy construction.
~rigidBodyMotion | ( | ) |
Destructor.
Definition at line 105 of file rigidBodyMotion.C.
References rigidBodyMotion::X00().
|
inline |
Return the report Switch.
Definition at line 28 of file rigidBodyMotionI.H.
Referenced by rigidBodyMeshMotionSolver::solve(), and rigidBodyMeshMotion::solve().
|
inline |
Return the motion state.
Definition at line 35 of file rigidBodyMotionI.H.
Referenced by rigidBodyMeshMotion::write(), and rigidBodyMeshMotionSolver::write().
|
inline |
Return the motion state for modification.
Definition at line 42 of file rigidBodyMotionI.H.
Foam::spatialTransform X00 | ( | const label | bodyId | ) | const |
Return the initial transform to the global frame for the.
given body
Definition at line 112 of file rigidBodyMotion.C.
References rigidBodyMotion::forwardDynamics(), subBody::masterID(), subBody::masterXT(), rigidBodyModel::merged(), and rigidBodyModel::mergedBody().
Referenced by rigidBodyMotion::transformPoints(), and rigidBodyMotion::~rigidBodyMotion().
|
inline |
Store the motion state at the beginning of the time-step.
Definition at line 48 of file rigidBodyMotionI.H.
Referenced by rigidBodyMeshMotionSolver::solve(), and rigidBodyMeshMotion::solve().
void forwardDynamics | ( | rigidBodyModelState & | state, |
const scalarField & | tau, | ||
const Field< spatialVector > & | fx | ||
) | const |
Calculate and optionally relax the joint acceleration qDdot from.
the joint state q, velocity qDot, internal force tau (in the joint frame) and external force fx (in the global frame)
Definition at line 129 of file rigidBodyMotion.C.
References rigidBodyModel::forwardDynamics(), rigidBodyModelState::qDdot(), and rigidBodyMotion::solve().
Referenced by rigidBodyMotion::X00().
void solve | ( | const scalar | t, |
const scalar | deltaT, | ||
const scalarField & | tau, | ||
const Field< spatialVector > & | fx | ||
) |
Integrate velocities, orientation and position.
for the given time and time-step
Definition at line 142 of file rigidBodyMotion.C.
References rigidBodyModelState::deltaT(), rigidBodyModel::forwardDynamicsCorrection(), UPstream::master(), Pstream::scatter(), and rigidBodyModelState::t().
Referenced by rigidBodyMotion::forwardDynamics(), rigidBodyMeshMotionSolver::solve(), and rigidBodyMeshMotion::solve().
void status | ( | const label | bodyID | ) | const |
Report the status of the motion of the given body.
Definition at line 170 of file rigidBodyMotion.C.
References spatialTransform::E(), Foam::endl(), Foam::Info, SpatialVector< Cmpt >::l(), rigidBodyModel::name(), Foam::nl, spatialTransform::r(), rigidBodyMotion::transformPoints(), rigidBodyModel::v(), SpatialVector< Cmpt >::w(), rigidBodyModel::X0(), and Foam::Zero.
Referenced by rigidBodyMeshMotionSolver::solve(), and rigidBodyMeshMotion::solve().
Foam::tmp< Foam::pointField > transformPoints | ( | const label | bodyID, |
const pointField & | initialPoints | ||
) | const |
Transform the given initial pointField of the specified body.
to correspond to the current motion state
Definition at line 185 of file rigidBodyMotion.C.
References forAll, Foam::inv(), points, tmp< T >::ref(), List< T >::size(), spatialTransform::transformPoint(), rigidBodyModel::X0(), and rigidBodyMotion::X00().
Referenced by rigidBodyMeshMotionSolver::solve(), rigidBodyMeshMotion::solve(), rigidBodyMotion::status(), and rigidBodyMotion::transformPoints().
Foam::tmp< Foam::pointField > transformPoints | ( | const label | bodyID, |
const scalarField & | weight, | ||
const pointField & | initialPoints | ||
) | const |
Transform the given initial pointField of the specified body.
to correspond to the current motion state scaled using 'slerp' interpolation
Definition at line 207 of file rigidBodyMotion.C.
References forAll, septernion::I, Foam::inv(), points, tmp< T >::ref(), s(), Foam::slerp(), spatialTransform::transformPoint(), rigidBodyMotion::transformPoints(), rigidBodyModel::X0(), and rigidBodyMotion::X00().
Foam::tmp< Foam::pointField > transformPoints | ( | const labelList & | bodyIDs, |
const List< const scalarField *> & | weights, | ||
const pointField & | initialPoints | ||
) | const |
Transform the given initial pointField of the specified body.
to correspond to the current motion state scaled using 'slerp' interpolation
Definition at line 249 of file rigidBodyMotion.C.
References Foam::average(), forAll, septernion::I, Foam::inv(), rigidBodyModel::lambda(), points, tmp< T >::ref(), List< T >::size(), rigidBodyModel::X0(), and rigidBodyMotion::X00().
|
virtual |
Write.
Reimplemented from rigidBodyModel.
Definition at line 43 of file rigidBodyMotionIO.C.
References rigidBodyModel::write(), and Foam::writeEntry().
bool read | ( | const dictionary & | dict | ) |
Read coefficients dictionary and update system parameters,.
constraints and restraints but not the current state
Definition at line 31 of file rigidBodyMotionIO.C.
References dictionary::lookupOrDefault(), and rigidBodyModel::read().
|
delete |
Disallow default bitwise assignment.
|
friend |
Definition at line 71 of file rigidBodyMotion.H.