diff --git a/applications/test/rigidBodyDynamics/pendulum/pendulum b/applications/test/rigidBodyDynamics/pendulum/pendulum index 4a8378b9f..d179af443 100644 --- a/applications/test/rigidBodyDynamics/pendulum/pendulum +++ b/applications/test/rigidBodyDynamics/pendulum/pendulum @@ -3,10 +3,10 @@ bodies0 pendulum { type rigidBody; - parent root; mass 1; centreOfMass (0 -1 0); inertia (0.001 0 0 0.001 0 0.001); + parent root; transform (1 0 0 0 1 0 0 0 1) (0 0 0); joint { @@ -30,9 +30,9 @@ bodies weight { type sphere; - mergeWith hinge; mass 1; radius 0.05; transform (1 0 0 0 1 0 0 0 1) (0 -1 0); + mergeWith hinge; } } diff --git a/src/rigidBodyDynamics/bodies/masslessBody/masslessBody.C b/src/rigidBodyDynamics/bodies/masslessBody/masslessBody.C index e41379243..61e5b4bc7 100644 --- a/src/rigidBodyDynamics/bodies/masslessBody/masslessBody.C +++ b/src/rigidBodyDynamics/bodies/masslessBody/masslessBody.C @@ -67,7 +67,10 @@ bool Foam::RBD::masslessBody::massless() const void Foam::RBD::masslessBody::write(Ostream& os) const -{} +{ + os.writeKeyword("type") + << type() << token::END_STATEMENT << nl; +} // ************************************************************************* // diff --git a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C index a02ad4207..123f2794a 100644 --- a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C +++ b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C @@ -119,6 +119,9 @@ void Foam::RBD::rigidBody::merge(const subBody& subBody) void Foam::RBD::rigidBody::write(Ostream& os) const { + os.writeKeyword("type") + << type() << token::END_STATEMENT << nl; + os.writeKeyword("mass") << m() << token::END_STATEMENT << nl; diff --git a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H index 0d763727d..2c8679b1e 100644 --- a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H +++ b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H @@ -48,6 +48,12 @@ namespace RBD // Forward declaration of classes class subBody; +// Forward declaration of friend functions and operators +class rigidBody; + +inline Ostream& operator<<(Ostream&, const rigidBody&); + + /*---------------------------------------------------------------------------*\ Class rigidBody Declaration \*---------------------------------------------------------------------------*/ @@ -146,6 +152,11 @@ public: //- Write virtual void write(Ostream&) const; + + + // Ostream Operator + + friend Ostream& operator<<(Ostream&, const rigidBody&); }; diff --git a/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H b/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H index 497eddf6a..3a74d42ea 100644 --- a/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H +++ b/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H @@ -68,4 +68,13 @@ inline const Foam::word& Foam::RBD::rigidBody::name() const } +// * * * * * * * * * * * * * * * Ostream Operator * * * * * * * * * * * * * // + +inline Foam::Ostream& Foam::RBD::operator<<(Ostream& os, const rigidBody& rb) +{ + rb.write(os); + return os; +} + + // ************************************************************************* // diff --git a/src/rigidBodyDynamics/bodies/sphere/sphere.C b/src/rigidBodyDynamics/bodies/sphere/sphere.C index 15523961a..ea4d13653 100644 --- a/src/rigidBodyDynamics/bodies/sphere/sphere.C +++ b/src/rigidBodyDynamics/bodies/sphere/sphere.C @@ -62,6 +62,9 @@ Foam::RBD::sphere::~sphere() void Foam::RBD::sphere::write(Ostream& os) const { + os.writeKeyword("type") + << type() << token::END_STATEMENT << nl; + os.writeKeyword("mass") << m() << token::END_STATEMENT << nl; diff --git a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C index 6d93c8f5b..0e8482fc5 100644 --- a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C +++ b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C @@ -344,14 +344,11 @@ void Foam::RBD::rigidBodyModel::write(Ostream& os) const os << indent << bodies_[i].name() << nl << indent << token::BEGIN_BLOCK << incrIndent << endl; - os.writeKeyword("type") - << bodies_[i].type() << token::END_STATEMENT << nl; + bodies_[i].write(os); os.writeKeyword("parent") << bodies_[lambda_[i]].name() << token::END_STATEMENT << nl; - bodies_[i].write(os); - os.writeKeyword("transform") << XT_[i] << token::END_STATEMENT << nl; @@ -366,17 +363,14 @@ void Foam::RBD::rigidBodyModel::write(Ostream& os) const os << indent << mergedBodies_[i].name() << nl << indent << token::BEGIN_BLOCK << incrIndent << endl; - os.writeKeyword("type") - << mergedBodies_[i].body().type() << token::END_STATEMENT << nl; - - os.writeKeyword("mergeWith") - << mergedBodies_[i].parentName() << token::END_STATEMENT << nl; - mergedBodies_[i].body().write(os); os.writeKeyword("transform") << mergedBodies_[i].parentXT() << token::END_STATEMENT << nl; + os.writeKeyword("mergeWith") + << mergedBodies_[i].parentName() << token::END_STATEMENT << nl; + os << decrIndent << indent << token::END_BLOCK << endl; }