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