diff --git a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C index 7d797f014..a02ad4207 100644 --- a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C +++ b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.C @@ -46,6 +46,14 @@ namespace RBD } +// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * // + +Foam::autoPtr Foam::RBD::rigidBody::clone() const +{ + return autoPtr(new rigidBody(*this)); +} + + // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * // Foam::autoPtr Foam::RBD::rigidBody::New @@ -104,7 +112,7 @@ void Foam::RBD::rigidBody::merge(const subBody& subBody) *this = rigidBody ( name(), - *this + transform(subBody.parentXT(), subBody) + *this + transform(subBody.parentXT(), subBody.body()) ); } diff --git a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H index 9d2b3f279..0d763727d 100644 --- a/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H +++ b/src/rigidBodyDynamics/bodies/rigidBody/rigidBody.H @@ -107,7 +107,7 @@ public: ); //- Return clone of this rigidBody - inline autoPtr clone() const; + virtual autoPtr clone() const; // Selectors diff --git a/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H b/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H index 5b6a66e87..497eddf6a 100644 --- a/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H +++ b/src/rigidBodyDynamics/bodies/rigidBody/rigidBodyI.H @@ -60,12 +60,6 @@ inline Foam::RBD::rigidBody::rigidBody {} -inline Foam::autoPtr Foam::RBD::rigidBody::clone() const -{ - return autoPtr(new rigidBody(*this)); -} - - // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // inline const Foam::word& Foam::RBD::rigidBody::name() const diff --git a/src/rigidBodyDynamics/bodies/subBody/subBody.C b/src/rigidBodyDynamics/bodies/subBody/subBody.C index 1508b8f43..b83953862 100644 --- a/src/rigidBodyDynamics/bodies/subBody/subBody.C +++ b/src/rigidBodyDynamics/bodies/subBody/subBody.C @@ -25,12 +25,6 @@ License #include "subBody.H" -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // - -Foam::RBD::subBody::~subBody() -{} - - // * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // void Foam::RBD::subBody::write(Ostream& os) const diff --git a/src/rigidBodyDynamics/bodies/subBody/subBody.H b/src/rigidBodyDynamics/bodies/subBody/subBody.H index a9163e8e3..f030d32ab 100644 --- a/src/rigidBodyDynamics/bodies/subBody/subBody.H +++ b/src/rigidBodyDynamics/bodies/subBody/subBody.H @@ -51,8 +51,6 @@ namespace RBD \*---------------------------------------------------------------------------*/ class subBody -: - public rigidBody { // Private data @@ -84,9 +82,8 @@ public: const spatialTransform& parentXT ); - - //- Destructor - virtual ~subBody(); + //- Return clone of this subBody + inline autoPtr clone() const; // Member Functions @@ -94,6 +91,9 @@ public: //- Return the original body from which this sub-body was constructed inline const rigidBody& body() const; + //- Return the body name + inline const word& name() const; + //- Return the parent body name inline const word& parentName() const; @@ -104,7 +104,7 @@ public: inline const spatialTransform& parentXT() const; //- Write - virtual void write(Ostream&) const; + void write(Ostream&) const; }; diff --git a/src/rigidBodyDynamics/bodies/subBody/subBodyI.H b/src/rigidBodyDynamics/bodies/subBody/subBodyI.H index b8c2813d4..79104889e 100644 --- a/src/rigidBodyDynamics/bodies/subBody/subBodyI.H +++ b/src/rigidBodyDynamics/bodies/subBody/subBodyI.H @@ -33,7 +33,6 @@ inline Foam::RBD::subBody::subBody const spatialTransform& parentXT ) : - rigidBody(bodyPtr()), body_(bodyPtr), parentName_(parentName), parentID_(parentID), @@ -41,6 +40,12 @@ inline Foam::RBD::subBody::subBody {} +inline Foam::autoPtr Foam::RBD::subBody::clone() const +{ + return autoPtr(new subBody(*this)); +} + + // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // inline const Foam::RBD::rigidBody& Foam::RBD::subBody::body() const @@ -49,6 +54,12 @@ inline const Foam::RBD::rigidBody& Foam::RBD::subBody::body() const } +inline const Foam::word& Foam::RBD::subBody::name() const +{ + return body_->name(); +} + + inline const Foam::word& Foam::RBD::subBody::parentName() const { return parentName_;