diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C index 23146ef869..9eb21c3969 100644 --- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C +++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C @@ -155,28 +155,26 @@ void Foam::RBD::rigidBodyMotion::solve if (Pstream::master()) { solver_->solve(tau, fx); - - if (report_) - { - status(); - } } Pstream::scatter(motionState_); + + // Update the body-state to correspond to the current joint-state + forwardDynamicsCorrection(motionState_); } -void Foam::RBD::rigidBodyMotion::status() const +void Foam::RBD::rigidBodyMotion::status(const label bodyID) const { - /* - Info<< "Rigid body motion" << nl - << " Centre of rotation: " << centreOfRotation() << nl - << " Centre of mass: " << centreOfMass() << nl - << " Orientation: " << orientation() << nl - << " Linear velocity: " << v() << nl - << " Angular velocity: " << omega() + const spatialTransform CofR(X0(bodyID)); + const spatialVector vCofR(v(bodyID, Zero)); + + Info<< "Rigid-body motion of the " << name(bodyID) << nl + << " Centre of rotation: " << CofR.r() << nl + << " Orientation: " << CofR.E() << nl + << " Linear velocity: " << vCofR.l() << nl + << " Angular velocity: " << vCofR.w() << endl; - */ } diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H index a88763e15d..c386169064 100644 --- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H +++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H @@ -177,8 +177,8 @@ public: const Field& fx ); - //- Report the status of the motion - void status() const; + //- Report the status of the motion of the given body + void status(const label bodyID) const; // Transformations diff --git a/src/rigidBodyDynamics/rigidBodySolvers/CrankNicolson/CrankNicolson.C b/src/rigidBodyDynamics/rigidBodySolvers/CrankNicolson/CrankNicolson.C index fc15b3e6f7..d056d784f6 100644 --- a/src/rigidBodyDynamics/rigidBodySolvers/CrankNicolson/CrankNicolson.C +++ b/src/rigidBodyDynamics/rigidBodySolvers/CrankNicolson/CrankNicolson.C @@ -83,9 +83,6 @@ void Foam::RBD::rigidBodySolvers::CrankNicolson::solve q() = q0() + deltaT()*(voc_*qDot() + (1 - voc_)*qDot0()); correctQuaternionJoints(); - - // Update the body-state - model_.forwardDynamicsCorrection(state()); } diff --git a/src/rigidBodyDynamics/rigidBodySolvers/Newmark/Newmark.C b/src/rigidBodyDynamics/rigidBodySolvers/Newmark/Newmark.C index 11f80a3732..48a88c606c 100644 --- a/src/rigidBodyDynamics/rigidBodySolvers/Newmark/Newmark.C +++ b/src/rigidBodyDynamics/rigidBodySolvers/Newmark/Newmark.C @@ -93,9 +93,6 @@ void Foam::RBD::rigidBodySolvers::Newmark::solve + sqr(deltaT())*(beta_*qDdot() + (0.5 - beta_)*qDdot0()); correctQuaternionJoints(); - - // Update the body-state - model_.forwardDynamicsCorrection(state()); } diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C b/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C index 6397e637ed..a207cfa0c0 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C @@ -270,6 +270,13 @@ void Foam::rigidBodyMeshMotion::solve() ); } + if (Pstream::master() && model_.report()) + { + forAll(bodyMeshes_, bi) + { + model_.status(bodyMeshes_[bi].bodyID_); + } + } // Update the displacements if (bodyMeshes_.size() == 1)