From 189c6c6820aa2d8bec38cd1848ff979831f7aeb4 Mon Sep 17 00:00:00 2001 From: Henry Weller <http://cfd.direct> Date: Sun, 17 Apr 2016 15:46:22 +0100 Subject: [PATCH] rigidBodyMeshMotion: Read initial state and g from dictionary if present --- .../rigidBodyModelState/rigidBodyModelStateIO.C | 2 +- .../rigidBodyMotion/rigidBodyMotion.C | 12 +++++++++++- src/rigidBodyMeshMotion/rigidBodyMeshMotion.C | 11 ++--------- 3 files changed, 14 insertions(+), 11 deletions(-) diff --git a/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C b/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C index bf30398b9b..c17819b410 100644 --- a/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C +++ b/src/rigidBodyDynamics/rigidBodyModelState/rigidBodyModelStateIO.C @@ -76,7 +76,7 @@ Foam::Ostream& Foam::RBD::operator<< const rigidBodyModelState& state ) { - os << token::SPACE << state.q_ + os << state.q_ << token::SPACE << state.qDot_ << token::SPACE << state.qDdot_ << token::SPACE << state.deltaT_; diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C index d6bf0ffbef..30ad316f6c 100644 --- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C +++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C @@ -59,7 +59,7 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion ) : rigidBodyModel(dict), - motionState_(*this), + motionState_(*this, dict), motionState0_(motionState_), X00_(X0_.size()), aRelax_(dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0)), @@ -67,6 +67,11 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion report_(dict.lookupOrDefault<Switch>("report", false)), solver_(rigidBodySolver::New(*this, dict.subDict("solver"))) { + if (dict.found("g")) + { + g() = vector(dict.lookup("g")); + } + initialize(); } @@ -86,6 +91,11 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion report_(dict.lookupOrDefault<Switch>("report", false)), solver_(rigidBodySolver::New(*this, dict.subDict("solver"))) { + if (dict.found("g")) + { + g() = vector(dict.lookup("g")); + } + initialize(); } diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C b/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C index a770c7ced9..f114cfc6b6 100644 --- a/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C +++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotion.C @@ -221,19 +221,12 @@ void Foam::rigidBodyMeshMotion::solve() curTimeIndex_ = this->db().time().timeIndex(); } - dimensionedVector g("g", dimAcceleration, Zero); - if (db().foundObject<uniformDimensionedVectorField>("g")) { - g = db().lookupObject<uniformDimensionedVectorField>("g"); - } - else if (coeffDict().found("g")) - { - coeffDict().lookup("g") >> g; + model_.g() = + db().lookupObject<uniformDimensionedVectorField>("g").value(); } - model_.g() = g.value(); - if (test_) { label nIter(readLabel(coeffDict().lookup("nIter"))); -- GitLab