From 160e7ea6dda5d26fe45b3b79959431fad19faf48 Mon Sep 17 00:00:00 2001 From: Henry <Henry> Date: Tue, 17 Dec 2013 14:58:34 +0000 Subject: [PATCH] sixDoFRigidBodyMotion: support re-reading of motion coefficients --- .../motionSolver/motionSolver/motionSolver.C | 15 +++++++++++++++ .../motionSolver/motionSolver/motionSolver.H | 3 +++ .../sixDoFRigidBodyMotion.C | 18 ++++++++++++++++++ .../sixDoFRigidBodyMotion.H | 5 +++++ .../sixDoFRigidBodyMotionSolver.C | 15 +++++++++++++++ .../sixDoFRigidBodyMotionSolver.H | 3 +++ 6 files changed, 59 insertions(+) diff --git a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C index 01f37cbf622..5613ac6b410 100644 --- a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C +++ b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C @@ -190,4 +190,19 @@ bool Foam::motionSolver::writeObject } +bool Foam::motionSolver::read() +{ + if (regIOobject::read()) + { + coeffDict_ = subDict(type() + "Coeffs"); + + return true; + } + else + { + return false; + } +} + + // ************************************************************************* // diff --git a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H index 7a53d4e81d7..651c0d9d183 100644 --- a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H +++ b/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H @@ -156,6 +156,9 @@ public: IOstream::versionNumber ver, IOstream::compressionType cmp ) const; + + //- Read dynamicMeshDict dictionary + virtual bool read(); }; diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C index 99d3728c06e..db88b739620 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C @@ -493,4 +493,22 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition } +bool Foam::sixDoFRigidBodyMotion::read(const dictionary& dict) +{ + dict.lookup("momentOfInertia") >> momentOfInertia_; + dict.lookup("mass") >> mass_; + aRelax_ = dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0); + aDamp_ = dict.lookupOrDefault<scalar>("accelerationDamping", 1.0); + report_ = dict.lookupOrDefault<Switch>("report", false); + + restraints_.clear(); + addRestraints(dict); + + constraints_.clear(); + addConstraints(dict); + + return true; +} + + // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H index 0e4ab39da26..a2d4c3236ff 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H @@ -404,6 +404,11 @@ public: void write(Ostream&) const; + //- Read coefficients dictionary and update system parameters, + // constraints and restraints but not the current state + bool read(const dictionary& dict); + + // IOstream Operators friend Istream& operator>>(Istream&, sixDoFRigidBodyMotion&); diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C index 2e208340428..d19ac3fb158 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C @@ -250,4 +250,19 @@ bool Foam::sixDoFRigidBodyMotionSolver::writeObject } +bool Foam::sixDoFRigidBodyMotionSolver::read() +{ + if (displacementMotionSolver::read()) + { + motion_.read(coeffDict()); + + return true; + } + else + { + return false; + } +} + + // ************************************************************************* // diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H index 410745d96cd..4f4e1ca31c5 100644 --- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H +++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H @@ -133,6 +133,9 @@ public: IOstream::versionNumber ver, IOstream::compressionType cmp ) const; + + //- Read dynamicMeshDict dictionary + virtual bool read(); }; -- GitLab