From d49889402f9ac63950b2d2bec546e8e9c2d8eda8 Mon Sep 17 00:00:00 2001
From: Henry <Henry>
Date: Fri, 16 May 2014 15:35:11 +0100
Subject: [PATCH] sixDoFRigidBodyMotion: Add support to specify the centre for
 rotation independent of the centre of mass via the point, line or plane
 constraints.

---
 ...gidBodyDisplacementPointPatchVectorField.C |  10 +-
 ...gidBodyDisplacementPointPatchVectorField.C |   4 +-
 .../sixDoFRigidBodyMotionAxisConstraint.C     |   5 +-
 .../sixDoFRigidBodyMotionAxisConstraint.H     |   9 +-
 .../sixDoFRigidBodyMotionLineConstraint.C     |  35 ++-
 .../sixDoFRigidBodyMotionLineConstraint.H     |  21 +-
 ...xDoFRigidBodyMotionOrientationConstraint.C |   7 +-
 ...xDoFRigidBodyMotionOrientationConstraint.H |   8 +-
 .../sixDoFRigidBodyMotionPlaneConstraint.C    |  27 +-
 .../sixDoFRigidBodyMotionPlaneConstraint.H    |  19 +-
 .../sixDoFRigidBodyMotionPointConstraint.C    |  28 +-
 .../sixDoFRigidBodyMotionPointConstraint.H    |  21 +-
 .../sixDoFRigidBodyMotionConstraint.C         |   8 +-
 .../sixDoFRigidBodyMotionConstraint.H         |  24 +-
 .../sixDoFRigidBodyMotionConstraintNew.C      |   9 +-
 .../linearAxialAngularSpring.C                |   6 +-
 .../restraints/linearSpring/linearSpring.C    |   6 +-
 .../sphericalAngularSpring.C                  |   6 +-
 .../tabulatedAxialAngularSpring.C             |   6 +-
 .../sixDoFRigidBodyMotion.C                   | 223 ++++-----------
 .../sixDoFRigidBodyMotion.H                   | 260 +++++++-----------
 .../sixDoFRigidBodyMotionI.H                  | 118 ++++----
 .../sixDoFRigidBodyMotionIO.C                 |  66 ++---
 .../sixDoFRigidBodyMotionState.C              |  34 +--
 .../sixDoFRigidBodyMotionState.H              |  19 +-
 .../sixDoFRigidBodyMotionStateI.H             |  11 +-
 .../sixDoFRigidBodyMotionStateIO.C            |  12 +-
 .../sixDoFRigidBodyMotionSolver.C             |   8 +-
 .../wingMotion2D_pimpleDyMFoam/0.org/U        |   2 +-
 .../0.org/include/fixedInlet                  |   2 +-
 .../0.org/include/frontBackTopBottomPatches   |   2 +-
 .../0.org/include/initialConditions           |   2 +-
 .../wingMotion2D_pimpleDyMFoam/0.org/k        |   2 +-
 .../wingMotion2D_pimpleDyMFoam/0.org/nut      |   2 +-
 .../wingMotion2D_pimpleDyMFoam/0.org/omega    |   2 +-
 .../wingMotion2D_pimpleDyMFoam/0.org/p        |   2 +-
 .../0.org/pointDisplacement                   |   2 +-
 .../constant/RASProperties                    |   2 +-
 .../constant/dynamicMeshDict                  |   7 +-
 .../constant/polyMesh/boundary                |   2 +-
 .../constant/transportProperties              |   2 +-
 .../constant/turbulenceProperties             |   2 +-
 .../system/controlDict                        |   6 +-
 .../system/decomposeParDict                   |   2 +-
 .../system/fvSchemes                          |   2 +-
 .../system/fvSolution                         |   2 +-
 .../wingMotion2D_simpleFoam/0.org/U           |   2 +-
 .../0.org/include/fixedInlet                  |   2 +-
 .../0.org/include/frontBackTopBottomPatches   |   2 +-
 .../0.org/include/initialConditions           |   2 +-
 .../wingMotion2D_simpleFoam/0.org/k           |   2 +-
 .../wingMotion2D_simpleFoam/0.org/nut         |   2 +-
 .../wingMotion2D_simpleFoam/0.org/omega       |   2 +-
 .../wingMotion2D_simpleFoam/0.org/p           |   2 +-
 .../constant/RASProperties                    |   2 +-
 .../constant/polyMesh/boundary                |   2 +-
 .../constant/transportProperties              |   2 +-
 .../system/controlDict                        |   2 +-
 .../system/createPatchDict                    |   2 +-
 .../system/extrudeMeshDict                    |   2 +-
 .../wingMotion2D_simpleFoam/system/fvSchemes  |   2 +-
 .../wingMotion2D_simpleFoam/system/fvSolution |   2 +-
 .../constant/polyMesh/blockMeshDict           |   2 +-
 .../system/controlDict                        |   2 +-
 .../system/decomposeParDict                   |   2 +-
 .../wingMotion_snappyHexMesh/system/fvSchemes |   2 +-
 .../system/fvSolution                         |   2 +-
 .../system/snappyHexMeshDict                  |   2 +-
 .../interDyMFoam/ras/floatingObject/0.org/U   |   2 +-
 .../ras/floatingObject/0.org/alpha.water      |   2 +-
 .../ras/floatingObject/0.org/epsilon          |   2 +-
 .../interDyMFoam/ras/floatingObject/0.org/k   |   2 +-
 .../interDyMFoam/ras/floatingObject/0.org/nut |   2 +-
 .../ras/floatingObject/0.org/p_rgh            |   2 +-
 .../floatingObject/0.org/pointDisplacement    |   2 +-
 .../ras/floatingObject/constant/RASProperties |   2 +-
 .../floatingObject/constant/dynamicMeshDict   |  61 +++-
 .../ras/floatingObject/constant/g             |   2 +-
 .../constant/polyMesh/blockMeshDict           |   4 +-
 .../floatingObject/constant/polyMesh/boundary |  14 +-
 .../constant/transportProperties              |   2 +-
 .../constant/turbulenceProperties             |   2 +-
 .../ras/floatingObject/system/controlDict     |   2 +-
 .../floatingObject/system/decomposeParDict    |   2 +-
 .../ras/floatingObject/system/fvSchemes       |   2 +-
 .../ras/floatingObject/system/fvSolution      |   2 +-
 .../ras/floatingObject/system/setFieldsDict   |   2 +-
 .../ras/floatingObject/system/topoSetDict     |   4 +-
 88 files changed, 568 insertions(+), 646 deletions(-)

diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
index 3a6db808399..dc731f060a3 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -222,7 +222,7 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
     forcesDict.add("patches", wordList(1, ptPatch.name()));
     forcesDict.add("rhoInf", rhoInf_);
     forcesDict.add("rhoName", rhoName_);
-    forcesDict.add("CofR", motion_.centreOfMass());
+    forcesDict.add("CofR", motion_.centreOfRotation());
 
     forces f("forces", db(), forcesDict);
 
@@ -243,14 +243,14 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
 
     motion_.updateAcceleration
     (
-        ramp*(f.forceEff() + g_*motion_.mass()),
-        ramp*(f.momentEff()),
+        ramp*(f.forceEff() + motion_.mass()*g_),
+        ramp*(f.momentEff() + motion_.mass()*(motion_.momentArm() ^ g_)),
         t.deltaTValue()
     );
 
     Field<vector>::operator=
     (
-        motion_.currentPosition(initialPoints_) - initialPoints_
+        motion_.transform(initialPoints_) - initialPoints_
     );
 
     fixedValuePointPatchField<vector>::updateCoeffs();
diff --git a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
index bb66a5fb14b..fb832ca6c80 100644
--- a/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -180,7 +180,7 @@ void uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
 
     Field<vector>::operator=
     (
-        motion_.currentPosition(initialPoints_) - initialPoints_
+        motion_.transform(initialPoints_) - initialPoints_
     );
 
     fixedValuePointPatchField<vector>::updateCoeffs();
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C
index c577954a364..91fa9908f6d 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.C
@@ -50,10 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::axis::axis
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion),
     axis_()
 {
     read(sDoFRBMCDict);
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H
index 291c3421f86..6ddf4f8b9a6 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/axis/sixDoFRigidBodyMotionAxisConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,8 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::axis
 
 Description
-    sixDoFRigidBodyMotionConstraint.  Body may only rotate around
-    an axis fixed in global space.
+    Orientation constraint:
+        may only rotate around a fixed axis.
 
 SourceFiles
     sixDoFRigidBodyMotionAxisConstraint.C
@@ -73,7 +73,8 @@ public:
         axis
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C
index ff056c25916..ed527a60364 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,11 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::line::line
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
-    dir_()
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion)
 {
     read(sDoFRBMCDict);
 }
@@ -68,12 +68,21 @@ Foam::sixDoFRigidBodyMotionConstraints::line::~line()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+void Foam::sixDoFRigidBodyMotionConstraints::line::setCentreOfRotation
+(
+    point& CofR
+) const
+{
+    CofR = centreOfRotation_;
+}
+
+
 void Foam::sixDoFRigidBodyMotionConstraints::line::constrainTranslation
 (
     pointConstraint& pc
 ) const
 {
-    pc.combine(pointConstraint(Tuple2<label, vector>(2, dir_)));
+    pc.combine(pointConstraint(Tuple2<label, vector>(2, direction_)));
 }
 
 
@@ -91,13 +100,19 @@ bool Foam::sixDoFRigidBodyMotionConstraints::line::read
 {
     sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict);
 
-    sDoFRBMCCoeffs_.lookup("direction") >> dir_;
+    centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault
+    (
+        "centreOfRotation",
+        motion_.initialCentreOfMass()
+    );
+
+    sDoFRBMCCoeffs_.lookup("direction") >> direction_;
 
-    scalar magDir(mag(dir_));
+    scalar magDir(mag(direction_));
 
     if (magDir > VSMALL)
     {
-        dir_ /= magDir;
+        direction_ /= magDir;
     }
     else
     {
@@ -121,8 +136,10 @@ void Foam::sixDoFRigidBodyMotionConstraints::line::write
     Ostream& os
 ) const
 {
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("direction")
-        << dir_ << token::END_STATEMENT << nl;
+        << direction_ << token::END_STATEMENT << nl;
 }
 
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H
index 7d491907202..1f7e68ec102 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/line/sixDoFRigidBodyMotionLineConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,11 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::line
 
 Description
-    sixDoFRigidBodyMotionConstraint.  Reference point may only move
-    along a line.
+    Translation constraint on the centre of rotation:
+        may only move along a line.
+
+    If 'centreOfRotation' is not provided in the dictionary the centre of mass
+    is used.
 
 SourceFiles
     sixDoFRigidBodyMotionLineConstraint.C
@@ -56,8 +59,11 @@ class line
 {
     // Private data
 
+        //- Centre of rotation on line
+        point centreOfRotation_;
+
         //- Direction of the constraining line
-        vector dir_;
+        vector direction_;
 
 
 public:
@@ -72,7 +78,8 @@ public:
         line
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -91,6 +98,10 @@ public:
 
     // Member Functions
 
+        //- Set the centre of rotation to the projection of the
+        //  centre of mass onto the line
+        virtual void setCentreOfRotation(point&) const;
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C
index 28bf1c48117..6652cf7623f 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,10 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::orientation::orientation
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict)
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion)
 {
     read(sDoFRBMCDict);
 }
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H
index 5a41498e952..6f010ab4e07 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/orientation/sixDoFRigidBodyMotionOrientationConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,7 +25,8 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::orientation
 
 Description
-    Fix orientation of body in global space.
+    Orientation constraint:
+        fixed in global space.
 
 SourceFiles
     sixDoFRigidBodyMotionOrientationConstraint.C
@@ -66,7 +67,8 @@ public:
         orientation
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C
index 286e279b77d..7382e5c2d86 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,11 +50,11 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::plane::plane
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
-    normal_(vector::zero)
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion)
 {
     read(sDoFRBMCDict);
 }
@@ -68,6 +68,15 @@ Foam::sixDoFRigidBodyMotionConstraints::plane::~plane()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+void Foam::sixDoFRigidBodyMotionConstraints::plane::setCentreOfRotation
+(
+    point& CofR
+) const
+{
+    CofR = centreOfRotation_;
+}
+
+
 void Foam::sixDoFRigidBodyMotionConstraints::plane::constrainTranslation
 (
     pointConstraint& pc
@@ -91,7 +100,13 @@ bool Foam::sixDoFRigidBodyMotionConstraints::plane::read
 {
     sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict);
 
-    normal_ = sDoFRBMCCoeffs_.lookup("normal");
+    centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault
+    (
+        "centreOfRotation",
+        motion_.initialCentreOfMass()
+    );
+
+    sDoFRBMCCoeffs_.lookup("normal") >> normal_;
 
     return true;
 }
@@ -102,6 +117,8 @@ void Foam::sixDoFRigidBodyMotionConstraints::plane::write
     Ostream& os
 ) const
 {
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("normal")
         << normal_ << token::END_STATEMENT << nl;
 }
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H
index 1467e54e783..621f63bc3f6 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/plane/sixDoFRigidBodyMotionPlaneConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,11 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::plane
 
 Description
-    sixDoFRigidBodyMotionConstraint.  Reference point may only move
-    along a plane.
+    Translation constraint on the centre of rotation:
+        may only move on a plane.
+
+    If 'centreOfRotation' is not provided in the dictionary the centre of mass
+    is used.
 
 SourceFiles
     sixDoFRigidBodyMotionPlaneConstraint.C
@@ -56,6 +59,9 @@ class plane
 {
     // Private data
 
+        //- Centre of rotation on plane
+        point centreOfRotation_;
+
         //- Normal to plane
         vector normal_;
 
@@ -72,7 +78,8 @@ public:
         plane
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -91,6 +98,10 @@ public:
 
     // Member Functions
 
+        //- Set the centre of rotation to the projection of the
+        //  centre of mass onto the plane
+        virtual void setCentreOfRotation(point&) const;
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C
index 1068b01af46..ac19a8bcc12 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -50,11 +50,12 @@ namespace sixDoFRigidBodyMotionConstraints
 Foam::sixDoFRigidBodyMotionConstraints::point::point
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
-    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict),
-    point_()
+    sixDoFRigidBodyMotionConstraint(name, sDoFRBMCDict, motion),
+    centreOfRotation_()
 {
     read(sDoFRBMCDict);
 }
@@ -68,6 +69,15 @@ Foam::sixDoFRigidBodyMotionConstraints::point::~point()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+void Foam::sixDoFRigidBodyMotionConstraints::point::setCentreOfRotation
+(
+    Foam::point& CofR
+) const
+{
+    CofR = centreOfRotation_;
+}
+
+
 void Foam::sixDoFRigidBodyMotionConstraints::point::constrainTranslation
 (
     pointConstraint& pc
@@ -91,7 +101,11 @@ bool Foam::sixDoFRigidBodyMotionConstraints::point::read
 {
     sixDoFRigidBodyMotionConstraint::read(sDoFRBMCDict);
 
-    sDoFRBMCCoeffs_.lookup("point") >> point_;
+    centreOfRotation_ = sDoFRBMCCoeffs_.lookupOrDefault
+    (
+        "centreOfRotation",
+        motion_.initialCentreOfMass()
+    );
 
     return true;
 }
@@ -102,8 +116,8 @@ void Foam::sixDoFRigidBodyMotionConstraints::point::write
     Ostream& os
 ) const
 {
-    os.writeKeyword("point")
-        << point_ << token::END_STATEMENT << nl;
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
 }
 
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H
index 39200c0c5cb..ec4a05ca3fe 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/point/sixDoFRigidBodyMotionPointConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,7 +25,11 @@ Class
     Foam::sixDoFRigidBodyMotionConstraints::point
 
 Description
-    Point fixed in space.
+    Translation constraint on the centre of rotation:
+        fixed in space.
+
+    If 'centreOfRotation' is not provided in the dictionary the centre of mass
+    is used.
 
 SourceFiles
     sixDoFRigidBodyMotionPointConstraint.C
@@ -56,11 +60,8 @@ class point
 {
     // Private data
 
-        //- Point which is rigidly attached to the body and constrains
-        //  it so that this point remains fixed.  This serves as the
-        //  reference point for displacements as well as the target
-        //  position.
-        Foam::point point_;
+        //- Fixed centre of rotation
+        Foam::point centreOfRotation_;
 
 
 public:
@@ -75,7 +76,8 @@ public:
         point
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -94,6 +96,9 @@ public:
 
     // Member Functions
 
+        //- Set the centre of rotation to the point
+        virtual void setCentreOfRotation(Foam::point&) const;
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
index 10044ac8328..255f7996fc5 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -39,11 +39,13 @@ namespace Foam
 Foam::sixDoFRigidBodyMotionConstraint::sixDoFRigidBodyMotionConstraint
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 :
     name_(name),
-    sDoFRBMCCoeffs_(sDoFRBMCDict)
+    sDoFRBMCCoeffs_(sDoFRBMCDict),
+    motion_(motion)
 {}
 
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
index b4eed214f9d..0d6f96cf2b7 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -46,6 +46,7 @@ SourceFiles
 #include "Time.H"
 #include "dictionary.H"
 #include "autoPtr.H"
+#include "point.H"
 #include "pointConstraint.H"
 #include "runTimeSelectionTables.H"
 
@@ -75,6 +76,9 @@ protected:
         //- Constraint model specific coefficient dictionary
         dictionary sDoFRBMCCoeffs_;
 
+        //- Reference to the body motion
+        const sixDoFRigidBodyMotion& motion_;
+
 
 public:
 
@@ -89,8 +93,12 @@ public:
             autoPtr,
             sixDoFRigidBodyMotionConstraint,
             dictionary,
-            (const word& name, const dictionary& sDoFRBMCDict),
-            (name, sDoFRBMCDict)
+            (
+                const word& name,
+                const dictionary& sDoFRBMCDict,
+                const sixDoFRigidBodyMotion& motion
+            ),
+            (name, sDoFRBMCDict, motion)
         );
 
 
@@ -100,7 +108,8 @@ public:
         sixDoFRigidBodyMotionConstraint
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
         //- Construct and return a clone
@@ -113,7 +122,8 @@ public:
         static autoPtr<sixDoFRigidBodyMotionConstraint> New
         (
             const word& name,
-            const dictionary& sDoFRBMCDict
+            const dictionary& sDoFRBMCDict,
+            const sixDoFRigidBodyMotion& motion
         );
 
 
@@ -129,6 +139,10 @@ public:
             return name_;
         }
 
+        //- Set the centre of rotation if not the centre of mass
+        virtual void setCentreOfRotation(point&) const
+        {}
+
         //- Apply and accumulate translational constraints
         virtual void constrainTranslation(pointConstraint&) const = 0;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
index b6f3e8fb1f1..8893d8e8017 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/constraints/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -31,7 +31,8 @@ Foam::autoPtr<Foam::sixDoFRigidBodyMotionConstraint>
 Foam::sixDoFRigidBodyMotionConstraint::New
 (
     const word& name,
-    const dictionary& sDoFRBMCDict
+    const dictionary& sDoFRBMCDict,
+    const sixDoFRigidBodyMotion& motion
 )
 {
     const word constraintType
@@ -48,7 +49,9 @@ Foam::sixDoFRigidBodyMotionConstraint::New
         (
             "sixDoFRigidBodyMotionConstraint::New"
             "("
+                "const word& name,"
                 "const dictionary& sDoFRBMCDict"
+                "const sixDoFRigidBodyMotion& motion"
             ")"
         )   << "Unknown sixDoFRigidBodyMotionConstraint type "
             << constraintType << nl << nl
@@ -59,7 +62,7 @@ Foam::sixDoFRigidBodyMotionConstraint::New
 
     return autoPtr<sixDoFRigidBodyMotionConstraint>
     (
-        cstrIter()(name, sDoFRBMCDict)
+        cstrIter()(name, sDoFRBMCDict, motion)
     );
 }
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C
index 504944bb29a..44e65ee03ec 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearAxialAngularSpring/linearAxialAngularSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -129,8 +129,8 @@ Foam::sixDoFRigidBodyMotionRestraints::linearAxialAngularSpring::restrain
     restraintForce = vector::zero;
 
     // Not needed to be altered as restraintForce is zero, but set to
-    // centreOfMass to be sure of no spurious moment
-    restraintPosition = motion.centreOfMass();
+    // centreOfRotation to be sure of no spurious moment
+    restraintPosition = motion.centreOfRotation();
 
     if (motion.report())
     {
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C
index a26660caf87..24a38a43378 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/linearSpring/linearSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -80,14 +80,14 @@ void Foam::sixDoFRigidBodyMotionRestraints::linearSpring::restrain
     vector& restraintMoment
 ) const
 {
-    restraintPosition = motion.currentPosition(refAttachmentPt_);
+    restraintPosition = motion.transform(refAttachmentPt_);
 
     vector r = restraintPosition - anchor_;
 
     scalar magR = mag(r);
     r /= (magR + VSMALL);
 
-    vector v = motion.currentVelocity(restraintPosition);
+    vector v = motion.velocity(restraintPosition);
 
     restraintForce = -stiffness_*(magR - restLength_)*r - damping_*(r & v)*r;
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C
index a0525a19e66..da8f62bbce9 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/sphericalAngularSpring/sphericalAngularSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -104,8 +104,8 @@ void Foam::sixDoFRigidBodyMotionRestraints::sphericalAngularSpring::restrain
     restraintForce = vector::zero;
 
     // Not needed to be altered as restraintForce is zero, but set to
-    // centreOfMass to be sure of no spurious moment
-    restraintPosition = motion.centreOfMass();
+    // centreOfRotation to be sure of no spurious moment
+    restraintPosition = motion.centreOfRotation();
 
     if (motion.report())
     {
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
index 1bf86e3b19c..9233e618437 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/restraints/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -130,8 +130,8 @@ Foam::sixDoFRigidBodyMotionRestraints::tabulatedAxialAngularSpring::restrain
     restraintForce = vector::zero;
 
     // Not needed to be altered as restraintForce is zero, but set to
-    // centreOfMass to be sure of no spurious moment
-    restraintPosition = motion.centreOfMass();
+    // centreOfRotation to be sure of no spurious moment
+    restraintPosition = motion.centreOfRotation();
 
     if (motion.report())
     {
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
index db88b739620..78e4c63a85a 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -44,22 +44,24 @@ void Foam::sixDoFRigidBodyMotion::applyRestraints()
                 Info<< "Restraint " << restraints_[rI].name() << ": ";
             }
 
-            // restraint position
+            // Restraint position
             point rP = vector::zero;
 
-            // restraint force
+            // Restraint force
             vector rF = vector::zero;
 
-            // restraint moment
+            // Restraint moment
             vector rM = vector::zero;
 
+            // Accumulate the restraints
             restraints_[rI].restrain(*this, rP, rF, rM);
 
+            // Update the acceleration
             a() += rF/mass_;
 
             // Moments are returned in global axes, transforming to
             // body local to add to torque.
-            tau() += Q().T() & (rM + ((rP - centreOfMass()) ^ rF));
+            tau() += Q().T() & (rM + ((rP - centreOfRotation()) ^ rF));
         }
     }
 }
@@ -75,57 +77,16 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion()
     constraints_(),
     tConstraints_(tensor::I),
     rConstraints_(tensor::I),
-    initialCentreOfMass_(vector::zero),
+    initialCentreOfRotation_(vector::zero),
     initialQ_(I),
-    momentOfInertia_(diagTensor::one*VSMALL),
     mass_(VSMALL),
+    momentOfInertia_(diagTensor::one*VSMALL),
     aRelax_(1.0),
     aDamp_(1.0),
     report_(false)
 {}
 
 
-Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
-(
-    const point& centreOfMass,
-    const tensor& Q,
-    const vector& v,
-    const vector& a,
-    const vector& pi,
-    const vector& tau,
-    scalar mass,
-    const point& initialCentreOfMass,
-    const tensor& initialQ,
-    const diagTensor& momentOfInertia,
-    scalar aRelax,
-    scalar aDamp,
-    bool report
-)
-:
-    motionState_
-    (
-        centreOfMass,
-        Q,
-        v,
-        a,
-        pi,
-        tau
-    ),
-    motionState0_(motionState_),
-    restraints_(),
-    constraints_(),
-    tConstraints_(tensor::I),
-    rConstraints_(tensor::I),
-    initialCentreOfMass_(initialCentreOfMass),
-    initialQ_(initialQ),
-    momentOfInertia_(momentOfInertia),
-    mass_(mass),
-    aRelax_(aRelax),
-    aDamp_(aDamp),
-    report_(report)
-{}
-
-
 Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
 (
     const dictionary& dict,
@@ -133,7 +94,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
 )
 :
     motionState_(stateDict),
-    motionState0_(motionState_),
+    motionState0_(),
     restraints_(),
     constraints_(),
     tConstraints_(tensor::I),
@@ -146,6 +107,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
             vector(dict.lookup("centreOfMass"))
         )
     ),
+    initialCentreOfRotation_(initialCentreOfMass_),
     initialQ_
     (
         dict.lookupOrDefault
@@ -154,14 +116,35 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
             dict.lookupOrDefault("orientation", tensor::I)
         )
     ),
-    momentOfInertia_(dict.lookup("momentOfInertia")),
     mass_(readScalar(dict.lookup("mass"))),
+    momentOfInertia_(dict.lookup("momentOfInertia")),
     aRelax_(dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0)),
     aDamp_(dict.lookupOrDefault<scalar>("accelerationDamping", 1.0)),
     report_(dict.lookupOrDefault<Switch>("report", false))
 {
     addRestraints(dict);
+
+    // Set constraints and initial centre of rotation
+    // if different to the centre of mass
     addConstraints(dict);
+
+    // If the centres of mass and rotation are different ...
+    vector R(initialCentreOfMass_ - initialCentreOfRotation_);
+    if (magSqr(R) > VSMALL)
+    {
+        // ... correct the moment of inertia tensor using parallel axes theorem
+        momentOfInertia_ += mass_*diag(I*magSqr(R) - sqr(R));
+
+        // ... and if the centre of rotation is not specified for motion state
+        // update it
+        if (!stateDict.found("centreOfRotation"))
+        {
+            motionState_.centreOfRotation() = initialCentreOfRotation_;
+        }
+    }
+
+    // Save the old-time motion state
+    motionState0_ = motionState_;
 }
 
 
@@ -174,22 +157,16 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
     motionState0_(sDoFRBM.motionState0_),
     restraints_(sDoFRBM.restraints_),
     constraints_(sDoFRBM.constraints_),
-    initialCentreOfMass_(sDoFRBM.initialCentreOfMass_),
+    initialCentreOfRotation_(sDoFRBM.initialCentreOfRotation_),
     initialQ_(sDoFRBM.initialQ_),
-    momentOfInertia_(sDoFRBM.momentOfInertia_),
     mass_(sDoFRBM.mass_),
+    momentOfInertia_(sDoFRBM.momentOfInertia_),
     aRelax_(sDoFRBM.aRelax_),
     aDamp_(sDoFRBM.aDamp_),
     report_(sDoFRBM.report_)
 {}
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-Foam::sixDoFRigidBodyMotion::~sixDoFRigidBodyMotion()
-{}
-
-
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void Foam::sixDoFRigidBodyMotion::addRestraints
@@ -252,10 +229,12 @@ void Foam::sixDoFRigidBodyMotion::addConstraints
                     sixDoFRigidBodyMotionConstraint::New
                     (
                         iter().keyword(),
-                        iter().dict()
+                        iter().dict(),
+                        *this
                     )
                 );
 
+                constraints_[i].setCentreOfRotation(initialCentreOfRotation_);
                 constraints_[i].constrainTranslation(pct);
                 constraints_[i].constrainRotation(pcr);
 
@@ -289,7 +268,7 @@ void Foam::sixDoFRigidBodyMotion::updatePosition
         pi() = rConstraints_ & aDamp_*(pi0() + 0.5*deltaT0*tau());
 
         // Leapfrog move part
-        centreOfMass() = centreOfMass0() + deltaT*v();
+        centreOfRotation() = centreOfRotation0() + deltaT*v();
 
         // Leapfrog orientation adjustment
         Tuple2<tensor, vector> Qpi = rotate(Q0(), pi(), deltaT);
@@ -346,112 +325,30 @@ void Foam::sixDoFRigidBodyMotion::updateAcceleration
 }
 
 
-void Foam::sixDoFRigidBodyMotion::updateVelocity(scalar deltaT)
-{
-    // Second leapfrog velocity adjust part, required after motion and
-    // acceleration calculation
-
-    if (Pstream::master())
-    {
-        v() += tConstraints_ & aDamp_*0.5*deltaT*a();
-        pi() += rConstraints_ & aDamp_*0.5*deltaT*tau();
-
-        if (report_)
-        {
-            status();
-        }
-    }
-
-    Pstream::scatter(motionState_);
-}
-
-
-void Foam::sixDoFRigidBodyMotion::updateAcceleration
-(
-    const pointField& positions,
-    const vectorField& forces,
-    scalar deltaT
-)
-{
-    vector fGlobal = vector::zero;
-
-    vector tauGlobal = vector::zero;
-
-    if (Pstream::master())
-    {
-        fGlobal = sum(forces);
-
-        forAll(positions, i)
-        {
-            tauGlobal += (positions[i] - centreOfMass()) ^ forces[i];
-        }
-    }
-
-    updateAcceleration(fGlobal, tauGlobal, deltaT);
-}
-
-
-Foam::point Foam::sixDoFRigidBodyMotion::predictedPosition
-(
-    const point& pInitial,
-    const vector& deltaForce,
-    const vector& deltaMoment,
-    scalar deltaT
-) const
-{
-    vector vTemp = v() + deltaT*(a() + deltaForce/mass_);
-    vector piTemp = pi() + deltaT*(tau() + (Q().T() & deltaMoment));
-    point centreOfMassTemp = centreOfMass0() + deltaT*vTemp;
-    Tuple2<tensor, vector> QpiTemp = rotate(Q0(), piTemp, deltaT);
-
-    return
-    (
-        centreOfMassTemp
-      + (QpiTemp.first() & initialQ_.T() & (pInitial - initialCentreOfMass_))
-    );
-}
-
-
-Foam::vector Foam::sixDoFRigidBodyMotion::predictedOrientation
-(
-    const vector& vInitial,
-    const vector& deltaMoment,
-    scalar deltaT
-) const
-{
-    vector piTemp = pi() + deltaT*(tau() + (Q().T() & deltaMoment));
-    Tuple2<tensor, vector> QpiTemp = rotate(Q0(), piTemp, deltaT);
-
-    vector o(QpiTemp.first() & initialQ_.T() & vInitial);
-    o /= mag(o);
-
-    return o;
-}
-
-
 void Foam::sixDoFRigidBodyMotion::status() const
 {
-    Info<< "Centre of mass: " << centreOfMass() << nl
+    Info<< "Centre of rotation: " << centreOfRotation() << nl
+        << "Centre of mass: " << centreOfMass() << nl
         << "Linear velocity: " << v() << nl
         << "Angular velocity: " << omega()
         << endl;
 }
 
 
-Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::currentPosition
+Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::transform
 (
     const pointField& initialPoints
 ) const
 {
     return
     (
-        centreOfMass()
-      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_))
+        centreOfRotation()
+      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfRotation_))
     );
 }
 
 
-Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
+Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::transform
 (
     const pointField& initialPoints,
     const scalarField& scale
@@ -460,7 +357,7 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
     // Calculate the transformation septerion from the initial state
     septernion s
     (
-        centreOfMass() - initialCentreOfMass(),
+        centreOfRotation() - initialCentreOfRotation(),
         quaternion(Q() & initialQ().T())
     );
 
@@ -475,7 +372,7 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
             // Use solid-body motion where scale = 1
             if (scale[pointi] > 1 - SMALL)
             {
-                points[pointi] = currentPosition(initialPoints[pointi]);
+                points[pointi] = transform(initialPoints[pointi]);
             }
             // Slerp septernion interpolation
             else
@@ -483,8 +380,12 @@ Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
                 septernion ss(slerp(septernion::I, s, scale[pointi]));
 
                 points[pointi] =
-                    initialCentreOfMass()
-                  + ss.transform(initialPoints[pointi] - initialCentreOfMass());
+                    initialCentreOfRotation()
+                  + ss.transform
+                    (
+                        initialPoints[pointi]
+                      - initialCentreOfRotation()
+                    );
             }
         }
     }
@@ -493,22 +394,4 @@ 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 c7b4bd7c30a..b08c7d011ff 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -42,8 +42,8 @@ Description
     url = {http://link.aip.org/link/?JCP/107/5840/1},
     doi = {10.1063/1.474310}
 
-    Can add restraints (i.e. a spring) and constraints (i.e. motion
-    may only be on a plane).
+    Can add restraints (e.g. a spring)
+    and constraints (e.g. motion may only be on a plane).
 
 SourceFiles
     sixDoFRigidBodyMotionI.H
@@ -66,16 +66,6 @@ SourceFiles
 namespace Foam
 {
 
-// Forward declaration of classes
-class Istream;
-class Ostream;
-
-// Forward declaration of friend functions and operators
-class sixDoFRigidBodyMotion;
-Istream& operator>>(Istream&, sixDoFRigidBodyMotion&);
-Ostream& operator<<(Ostream&, const sixDoFRigidBodyMotion&);
-
-
 /*---------------------------------------------------------------------------*\
                       Class sixDoFRigidBodyMotion Declaration
 \*---------------------------------------------------------------------------*/
@@ -105,16 +95,19 @@ class sixDoFRigidBodyMotion
         //- Centre of mass of initial state
         point initialCentreOfMass_;
 
+        //- Centre of rotation of initial state
+        point initialCentreOfRotation_;
+
         //- Orientation of initial state
         tensor initialQ_;
 
+        //- Mass of the body
+        scalar mass_;
+
         //- Moment of inertia of the body in reference configuration
         //  (Q = I)
         diagTensor momentOfInertia_;
 
-        //- Mass of the body
-        scalar mass_;
-
         //- Acceleration relaxation coefficient
         scalar aRelax_;
 
@@ -157,54 +150,54 @@ class sixDoFRigidBodyMotion
 
         // Access
 
-            //- Return access to the restraints
+            //- Return the restraints
             inline const PtrList<sixDoFRigidBodyMotionRestraint>&
                 restraints() const;
 
-            //- Return access to the constraints
+            //- Return the constraints
             inline const PtrList<sixDoFRigidBodyMotionConstraint>&
                 constraints() const;
 
-            //- Return access to the initial centre of mass
-            inline const point& initialCentreOfMass() const;
+            //- Return the initial centre of rotation
+            inline const point& initialCentreOfRotation() const;
 
-            //- Return access to the initial orientation
+            //- Return the initial orientation
             inline const tensor& initialQ() const;
 
-            //- Return access to the orientation
+            //- Return the orientation
             inline const tensor& Q() const;
 
-            //- Return access to acceleration
+            //- Return the current acceleration
             inline const vector& a() const;
 
-            //- Return access to angular momentum
+            //- Return the current angular momentum
             inline const vector& pi() const;
 
-            //- Return access to torque
+            //- Return the current torque
             inline const vector& tau() const;
 
-            //- Return access to the orientation at previous time-step
+            //- Return the orientation at previous time-step
             inline const tensor& Q0() const;
 
-            //- Return access to velocity at previous time-step
+            //- Return the velocity at previous time-step
             inline const vector& v0() const;
 
-            //- Return access to acceleration at previous time-step
+            //- Return the acceleration at previous time-step
             inline const vector& a0() const;
 
-            //- Return access to angular momentum at previous time-step
+            //- Return the angular momentum at previous time-step
             inline const vector& pi0() const;
 
-            //- Return access to torque at previous time-step
+            //- Return the torque at previous time-step
             inline const vector& tau0() const;
 
 
         // Edit
 
-            //- Return access to the centre of mass
-            inline point& initialCentreOfMass();
+            //- Return the centre of rotation
+            inline point& initialCentreOfRotation();
 
-            //- Return access to the centre of mass
+            //- Return initial orientation
             inline tensor& initialQ();
 
             //- Return non-const access to the orientation
@@ -230,24 +223,6 @@ public:
         //- Construct null
         sixDoFRigidBodyMotion();
 
-        //- Construct from components
-        sixDoFRigidBodyMotion
-        (
-            const point& centreOfMass,
-            const tensor& Q,
-            const vector& v,
-            const vector& a,
-            const vector& pi,
-            const vector& tau,
-            scalar mass,
-            const point& initialCentreOfMass,
-            const tensor& initialQ,
-            const diagTensor& momentOfInertia,
-            scalar aRelax = 1.0,
-            scalar aDamp = 1.0,
-            bool report = false
-        );
-
         //- Construct from constant and state dictionaries
         sixDoFRigidBodyMotion
         (
@@ -259,159 +234,116 @@ public:
         sixDoFRigidBodyMotion(const sixDoFRigidBodyMotion&);
 
 
-    //- Destructor
-    ~sixDoFRigidBodyMotion();
-
-
     // Member Functions
 
-        //- Add restraints to the motion, public to allow external
-        //  addition of restraints after construction
-        void addRestraints(const dictionary& dict);
+        // Access
 
-        //- Add restraints to the motion, public to allow external
-        //  addition of restraints after construction
-        void addConstraints(const dictionary& dict);
+            //- Return the mass
+            inline scalar mass() const;
 
-        //- First leapfrog velocity adjust and motion part, required
-        //  before force calculation.  Takes old timestep for variable
-        //  timestep cases.
-        void updatePosition
-        (
-            scalar deltaT,
-            scalar deltaT0
-        );
+            //- Return the inertia tensor
+            inline const diagTensor& momentOfInertia() const;
 
-        //- Second leapfrog velocity adjust part
-        //  required after motion and force calculation
-        void updateAcceleration
-        (
-            const vector& fGlobal,
-            const vector& tauGlobal,
-            scalar deltaT
-        );
+            //- Return the motion state
+            inline const sixDoFRigidBodyMotionState& state() const;
 
-        //- Second leapfrog velocity adjust part
-        //  required after motion and force calculation
-        void updateVelocity(scalar deltaT);
+            //- Return the current centre of rotation
+            inline const point& centreOfRotation() const;
 
-        //- Global forces supplied at locations, calculating net force
-        //  and moment
-        void updateAcceleration
-        (
-            const pointField& positions,
-            const vectorField& forces,
-            scalar deltaT
-        );
+            //- Return the centre of rotation at previous time-step
+            inline const point& centreOfRotation0() const;
 
-        //- Transform the given initial state pointField by the current
-        //  motion state
-        tmp<pointField> currentPosition(const pointField& initialPoints) const;
+            //- Return the initial centre of mass
+            inline const point& initialCentreOfMass() const;
 
-        //- Transform the given initial state pointField by the current
-        //  motion state
-        tmp<pointField> scaledPosition
-        (
-            const pointField& initialPoints,
-            const scalarField& scale
-        ) const;
+            //- Return the current centre of mass
+            inline point centreOfMass() const;
 
-        //- Transform the given initial state point by the current motion
-        //  state
-        inline point currentPosition(const point& initialPoints) const;
+            //- Return the orientation tensor, Q.
+            //  globalVector = Q & bodyLocalVector
+            //  bodyLocalVector = Q.T() & globalVector
+            inline const tensor& orientation() const;
 
-        //- Transform the given initial state direction by the current
-        //  motion state
-        inline vector currentOrientation(const vector& vInitial) const;
+            //- Return the angular velocity in the global frame
+            inline vector omega() const;
 
-        //- Access the orientation tensor, Q.
-        //  globalVector = Q & bodyLocalVector
-        //  bodyLocalVector = Q.T() & globalVector
-        inline const tensor& orientation() const;
+            //- Return the current velocity
+            inline const vector& v() const;
 
-        //- Predict the position of the supplied initial state point
-        //  after deltaT given the current motion state and the
-        //  additional supplied force and moment
-        point predictedPosition
-        (
-            const point& initialPoints,
-            const vector& deltaForce,
-            const vector& deltaMoment,
-            scalar deltaT
-        ) const;
+            inline vector momentArm() const;
 
-        //- Predict the orientation of the supplied initial state
-        //  vector after deltaT given the current motion state and the
-        //  additional supplied moment
-        vector predictedOrientation
-        (
-            const vector& vInitial,
-            const vector& deltaMoment,
-            scalar deltaT
-        ) const;
+            //- Return the report Switch
+            inline bool report() const;
 
-        //- Return the angular velocity in the global frame
-        inline vector omega() const;
 
-        //- Return the velocity of a position
-        inline point currentVelocity(const point& pt) const;
+        // Edit
 
-        //- Report the status of the motion
-        void status() const;
+            //- Store the motion state at the beginning of the time-step
+            inline void newTime();
 
+            //- Return non-const access to the centre of rotation
+            inline point& centreOfRotation();
 
-        // Access
 
-            //- Return access to the motion state
-            inline const sixDoFRigidBodyMotionState& state() const;
+        // Constraints and Restraints
 
-            //- Return const access to the centre of mass
-            inline const point& centreOfMass() const;
+            //- Add restraints to the motion, public to allow external
+            //  addition of restraints after construction
+            void addRestraints(const dictionary& dict);
 
-            //- Return const access to the centre of mass at previous time-step
-            inline const point& centreOfMass0() const;
+            //- Add restraints to the motion, public to allow external
+            //  addition of restraints after construction
+            void addConstraints(const dictionary& dict);
 
-            //- Return access to the inertia tensor
-            inline const diagTensor& momentOfInertia() const;
 
-            //- Return const access to the mass
-            inline scalar mass() const;
+        // Update state
 
-            //- Return the report Switch
-            inline bool report() const;
+            //- First leapfrog velocity adjust and motion part, required
+            //  before force calculation.  Takes old timestep for variable
+            //  timestep cases.
+            void updatePosition(scalar deltaT, scalar deltaT0);
 
-            //- Return access to velocity
-            inline const vector& v() const;
+            //- Second leapfrog velocity adjust part
+            //  required after motion and force calculation
+            void updateAcceleration
+            (
+                const vector& fGlobal,
+                const vector& tauGlobal,
+                scalar deltaT
+            );
 
+            //- Report the status of the motion
+            void status() const;
 
-        // Edit
 
-            //- Store the motion state at the beginning of the time-step
-            inline void newTime();
+        // Transformations
 
-            //- Return non-const access to the centre of mass
-            inline point& centreOfMass();
+            //- Return the velocity of a position
+            inline point velocity(const point& pt) const;
 
-            //- Return non-const access to the inertia tensor
-            inline diagTensor& momentOfInertia();
+            //- Transform the given initial state point by the current motion
+            //  state
+            inline point transform(const point& initialPoints) const;
 
-            //- Return non-const access to the mass
-            inline scalar& mass();
+            //- Transform the given initial state pointField by the current
+            //  motion state
+            tmp<pointField> transform(const pointField& initialPoints) const;
+
+            //- Transform the given initial state pointField by the current
+            //  motion state scaled by the given scale
+            tmp<pointField> transform
+            (
+                const pointField& initialPoints,
+                const scalarField& scale
+            ) const;
 
 
         //- Write
         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&);
-        friend Ostream& operator<<(Ostream&, const sixDoFRigidBodyMotion&);
 };
 
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
index 3186ca2fa12..d09e579e8cc 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,8 +25,10 @@ License
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-inline Foam::tensor
-Foam::sixDoFRigidBodyMotion::rotationTensorX(scalar phi) const
+inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorX
+(
+    scalar phi
+) const
 {
     return tensor
     (
@@ -37,8 +39,10 @@ Foam::sixDoFRigidBodyMotion::rotationTensorX(scalar phi) const
 }
 
 
-inline Foam::tensor
-Foam::sixDoFRigidBodyMotion::rotationTensorY(scalar phi) const
+inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorY
+(
+    scalar phi
+) const
 {
     return tensor
     (
@@ -49,8 +53,10 @@ Foam::sixDoFRigidBodyMotion::rotationTensorY(scalar phi) const
 }
 
 
-inline Foam::tensor
-Foam::sixDoFRigidBodyMotion::rotationTensorZ(scalar phi) const
+inline Foam::tensor Foam::sixDoFRigidBodyMotion::rotationTensorZ
+(
+    scalar phi
+) const
 {
     return tensor
     (
@@ -97,13 +103,6 @@ Foam::sixDoFRigidBodyMotion::rotate
 }
 
 
-inline const Foam::sixDoFRigidBodyMotionState&
-Foam::sixDoFRigidBodyMotion::state() const
-{
-    return motionState_;
-}
-
-
 inline const Foam::PtrList<Foam::sixDoFRigidBodyMotionRestraint>&
 Foam::sixDoFRigidBodyMotion::restraints() const
 {
@@ -119,9 +118,9 @@ Foam::sixDoFRigidBodyMotion::constraints() const
 
 
 inline const Foam::point&
-Foam::sixDoFRigidBodyMotion::initialCentreOfMass() const
+Foam::sixDoFRigidBodyMotion::initialCentreOfRotation() const
 {
-    return initialCentreOfMass_;
+    return initialCentreOfRotation_;
 }
 
 
@@ -192,9 +191,9 @@ inline const Foam::vector& Foam::sixDoFRigidBodyMotion::tau0() const
 }
 
 
-inline Foam::point& Foam::sixDoFRigidBodyMotion::initialCentreOfMass()
+inline Foam::point& Foam::sixDoFRigidBodyMotion::initialCentreOfRotation()
 {
-    return initialCentreOfMass_;
+    return initialCentreOfRotation_;
 }
 
 
@@ -236,72 +235,67 @@ inline Foam::vector& Foam::sixDoFRigidBodyMotion::tau()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
-inline Foam::point Foam::sixDoFRigidBodyMotion::currentPosition
-(
-    const point& initialPoints
-) const
+inline Foam::scalar Foam::sixDoFRigidBodyMotion::mass() const
 {
-    return
-    (
-        centreOfMass()
-      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_))
-    );
+    return mass_;
 }
 
 
-inline Foam::vector Foam::sixDoFRigidBodyMotion::currentOrientation
-(
-    const vector& vInitial
-) const
+inline const Foam::diagTensor&
+Foam::sixDoFRigidBodyMotion::momentOfInertia() const
 {
-    return (Q() & initialQ_.T() & vInitial);
+    return momentOfInertia_;
 }
 
 
-inline const Foam::tensor&
-Foam::sixDoFRigidBodyMotion::orientation() const
+inline const Foam::sixDoFRigidBodyMotionState&
+Foam::sixDoFRigidBodyMotion::state() const
 {
-    return Q();
+    return motionState_;
 }
 
 
-inline Foam::vector Foam::sixDoFRigidBodyMotion::omega() const
+inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation() const
 {
-    return  Q() & (inv(momentOfInertia_) & pi());
+    return motionState_.centreOfRotation();
 }
 
 
-inline Foam::point Foam::sixDoFRigidBodyMotion::currentVelocity
-(
-    const point& pt
-) const
+inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation0() const
 {
-    return (omega() ^ (pt - centreOfMass())) + v();
+    return motionState0_.centreOfRotation();
 }
 
 
-inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass() const
+inline const Foam::point&
+Foam::sixDoFRigidBodyMotion::initialCentreOfMass() const
 {
-    return motionState_.centreOfMass();
+    return initialCentreOfMass_;
 }
 
 
-inline const Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass0() const
+inline Foam::point Foam::sixDoFRigidBodyMotion::centreOfMass() const
 {
-    return motionState0_.centreOfMass();
+    return transform(initialCentreOfMass_);
 }
 
 
-inline const Foam::diagTensor&
-Foam::sixDoFRigidBodyMotion::momentOfInertia() const
+inline Foam::vector Foam::sixDoFRigidBodyMotion::momentArm() const
 {
-    return momentOfInertia_;
+    return centreOfMass() - motionState_.centreOfRotation();
 }
 
 
-inline Foam::scalar Foam::sixDoFRigidBodyMotion::mass() const
+inline const Foam::tensor&
+Foam::sixDoFRigidBodyMotion::orientation() const
 {
-    return mass_;
+    return Q();
+}
+
+
+inline Foam::vector Foam::sixDoFRigidBodyMotion::omega() const
+{
+    return  Q() & (inv(momentOfInertia_) & pi());
 }
 
 
@@ -317,21 +311,31 @@ inline void Foam::sixDoFRigidBodyMotion::newTime()
 }
 
 
-inline Foam::point& Foam::sixDoFRigidBodyMotion::centreOfMass()
+inline Foam::point& Foam::sixDoFRigidBodyMotion::centreOfRotation()
 {
-    return motionState_.centreOfMass();
+    return motionState_.centreOfRotation();
 }
 
 
-inline Foam::diagTensor& Foam::sixDoFRigidBodyMotion::momentOfInertia()
+inline Foam::point Foam::sixDoFRigidBodyMotion::velocity
+(
+    const point& pt
+) const
 {
-    return momentOfInertia_;
+    return (omega() ^ (pt - centreOfRotation())) + v();
 }
 
 
-inline Foam::scalar& Foam::sixDoFRigidBodyMotion::mass()
+inline Foam::point Foam::sixDoFRigidBodyMotion::transform
+(
+    const point& initialPoint
+) const
 {
-    return mass_;
+    return
+    (
+        centreOfRotation()
+      + (Q() & initialQ_.T() & (initialPoint - initialCentreOfRotation_))
+    );
 }
 
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
index f4c0b5b7ed6..23e2c35ac6a 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
@@ -28,12 +28,30 @@ License
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
+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;
+}
+
+
 void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const
 {
     motionState_.write(os);
 
-    os.writeKeyword("initialCentreOfMass")
-        << initialCentreOfMass_ << token::END_STATEMENT << nl;
+    os.writeKeyword("initialCentreOfRotation")
+        << initialCentreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("initialOrientation")
         << initialQ_ << token::END_STATEMENT << nl;
     os.writeKeyword("momentOfInertia")
@@ -95,48 +113,4 @@ void Foam::sixDoFRigidBodyMotion::write(Ostream& os) const
 }
 
 
-// * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
-
-Foam::Istream& Foam::operator>>(Istream& is, sixDoFRigidBodyMotion& sDoFRBM)
-{
-    is  >> sDoFRBM.motionState_
-        >> sDoFRBM.initialCentreOfMass_
-        >> sDoFRBM.initialQ_
-        >> sDoFRBM.momentOfInertia_
-        >> sDoFRBM.mass_;
-
-    // Check state of Istream
-    is.check
-    (
-        "Foam::Istream& Foam::operator>>"
-        "(Foam::Istream&, Foam::sixDoFRigidBodyMotion&)"
-    );
-
-    return is;
-}
-
-
-Foam::Ostream& Foam::operator<<
-(
-    Ostream& os,
-    const sixDoFRigidBodyMotion& sDoFRBM
-)
-{
-    os  << sDoFRBM.state()
-        << token::SPACE << sDoFRBM.initialCentreOfMass()
-        << token::SPACE << sDoFRBM.initialQ()
-        << token::SPACE << sDoFRBM.momentOfInertia()
-        << token::SPACE << sDoFRBM.mass();
-
-    // Check state of Ostream
-    os.check
-    (
-        "Foam::Ostream& Foam::operator<<(Foam::Ostream&, "
-        "const Foam::sixDoFRigidBodyMotion&)"
-    );
-
-    return os;
-}
-
-
 // ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
index 0e9aada9d01..24eeda45d8a 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -29,7 +29,7 @@ License
 
 Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState()
 :
-    centreOfMass_(vector::zero),
+    centreOfRotation_(vector::zero),
     Q_(I),
     v_(vector::zero),
     a_(vector::zero),
@@ -38,31 +38,19 @@ Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState()
 {}
 
 
-Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState
-(
-    const point& centreOfMass,
-    const tensor& Q,
-    const vector& v,
-    const vector& a,
-    const vector& pi,
-    const vector& tau
-)
-:
-    centreOfMass_(centreOfMass),
-    Q_(Q),
-    v_(v),
-    a_(a),
-    pi_(pi),
-    tau_(tau)
-{}
-
-
 Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState
 (
     const dictionary& dict
 )
 :
-    centreOfMass_(dict.lookup("centreOfMass")),
+    centreOfRotation_
+    (
+        dict.lookupOrDefault
+        (
+            "centreOfRotation",
+            dict.lookupOrDefault("centreOfMass", vector::zero)
+        )
+    ),
     Q_(dict.lookupOrDefault("orientation", tensor::I)),
     v_(dict.lookupOrDefault("velocity", vector::zero)),
     a_(dict.lookupOrDefault("acceleration", vector::zero)),
@@ -76,7 +64,7 @@ Foam::sixDoFRigidBodyMotionState::sixDoFRigidBodyMotionState
     const sixDoFRigidBodyMotionState& sDoFRBMS
 )
 :
-    centreOfMass_(sDoFRBMS.centreOfMass()),
+    centreOfRotation_(sDoFRBMS.centreOfRotation()),
     Q_(sDoFRBMS.Q()),
     v_(sDoFRBMS.v()),
     a_(sDoFRBMS.a()),
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
index be698ef8697..e7e7eda0979 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -69,7 +69,7 @@ class sixDoFRigidBodyMotionState
     // Private data
 
         //- Current position of the centre of mass of the body
-        point centreOfMass_;
+        point centreOfRotation_;
 
         //- Orientation, stored as the rotation tensor to transform
         //  from the body to the global reference frame, i.e.:
@@ -97,17 +97,6 @@ public:
         //- Construct null
         sixDoFRigidBodyMotionState();
 
-        //- Construct from components
-        sixDoFRigidBodyMotionState
-        (
-            const point& centreOfMass,
-            const tensor& Q,
-            const vector& v,
-            const vector& a,
-            const vector& pi,
-            const vector& tau
-        );
-
         //- Construct from dictionary
         sixDoFRigidBodyMotionState(const dictionary& dict);
 
@@ -124,7 +113,7 @@ public:
         // Access
 
             //- Return access to the centre of mass
-            inline const point& centreOfMass() const;
+            inline const point& centreOfRotation() const;
 
             //- Return access to the orientation
             inline const tensor& Q() const;
@@ -145,7 +134,7 @@ public:
         // Edit
 
             //- Return non-const access to the centre of mass
-            inline point& centreOfMass();
+            inline point& centreOfRotation();
 
             //- Return non-const access to the orientation
             inline tensor& Q();
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
index 8df8161efe6..e8658a5c6d5 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,9 +25,10 @@ License
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-inline const Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfMass() const
+inline const Foam::point&
+Foam::sixDoFRigidBodyMotionState::centreOfRotation() const
 {
-    return centreOfMass_;
+    return centreOfRotation_;
 }
 
 
@@ -61,9 +62,9 @@ inline const Foam::vector& Foam::sixDoFRigidBodyMotionState::tau() const
 }
 
 
-inline Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfMass()
+inline Foam::point& Foam::sixDoFRigidBodyMotionState::centreOfRotation()
 {
-    return centreOfMass_;
+    return centreOfRotation_;
 }
 
 
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
index 503df53fc49..24984eec5b3 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -30,7 +30,7 @@ License
 
 void Foam::sixDoFRigidBodyMotionState::write(dictionary& dict) const
 {
-    dict.add("centreOfMass", centreOfMass_);
+    dict.add("centreOfRotation", centreOfRotation_);
     dict.add("orientation", Q_);
     dict.add("velocity", v_);
     dict.add("acceleration", a_);
@@ -41,8 +41,8 @@ void Foam::sixDoFRigidBodyMotionState::write(dictionary& dict) const
 
 void Foam::sixDoFRigidBodyMotionState::write(Ostream& os) const
 {
-    os.writeKeyword("centreOfMass")
-        << centreOfMass_ << token::END_STATEMENT << nl;
+    os.writeKeyword("centreOfRotation")
+        << centreOfRotation_ << token::END_STATEMENT << nl;
     os.writeKeyword("orientation")
         << Q_ << token::END_STATEMENT << nl;
     os.writeKeyword("velocity")
@@ -63,7 +63,7 @@ Foam::Istream& Foam::operator>>
     Istream& is, sixDoFRigidBodyMotionState& sDoFRBMS
 )
 {
-    is  >> sDoFRBMS.centreOfMass_
+    is  >> sDoFRBMS.centreOfRotation_
         >> sDoFRBMS.Q_
         >> sDoFRBMS.v_
         >> sDoFRBMS.a_
@@ -87,7 +87,7 @@ Foam::Ostream& Foam::operator<<
     const sixDoFRigidBodyMotionState& sDoFRBMS
 )
 {
-    os  << token::SPACE << sDoFRBMS.centreOfMass()
+    os  << token::SPACE << sDoFRBMS.centreOfRotation()
         << token::SPACE << sDoFRBMS.Q()
         << token::SPACE << sDoFRBMS.v()
         << token::SPACE << sDoFRBMS.a()
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
index bc3afcd13f0..15bcc0df931 100644
--- a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
@@ -198,7 +198,7 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
     forcesDict.add("patches", patches_);
     forcesDict.add("rhoInf", rhoInf_);
     forcesDict.add("rhoName", rhoName_);
-    forcesDict.add("CofR", motion_.centreOfMass());
+    forcesDict.add("CofR", motion_.centreOfRotation());
 
     forces f("forces", db(), forcesDict);
 
@@ -220,14 +220,14 @@ void Foam::sixDoFRigidBodyMotionSolver::solve()
 
     motion_.updateAcceleration
     (
-        ramp*(f.forceEff() + g.value()*motion_.mass()),
-        ramp*(f.momentEff()),
+        ramp*(f.forceEff() + motion_.mass()*g.value()),
+        ramp*(f.momentEff() + motion_.mass()*(motion_.momentArm() ^ g.value())),
         t.deltaTValue()
     );
 
     // Update the displacements
     pointDisplacement_.internalField() =
-        motion_.scaledPosition(points0(), scale_) - points0();
+        motion_.transform(points0(), scale_) - points0();
 
     // Displacement has changed. Update boundary conditions
     pointConstraints::New
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U
index 8015d9b0e0d..38b6af93664 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet
index 424f38bdb15..21f972203a1 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/fixedInlet
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
index e48cca8284a..fc8ec955695 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/frontBackTopBottomPatches
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions
index 101d2d5b289..bccc59497ee 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/include/initialConditions
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k
index d5de7827bea..c6604cfcd1b 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/k
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut
index d29f67c5c43..ad8a0fb9e65 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/nut
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega
index 5b2ceee733a..6e6863b6829 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/omega
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p
index dc7632711db..61b354d2107 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/p
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement
index 7c9f66360d2..c71b386dda6 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/0.org/pointDisplacement
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties
index 67cc1be5422..a9bf04940b7 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
index 4683689cbf4..6b07b97a48a 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/dynamicMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -46,13 +46,14 @@ sixDoFRigidBodyMotionCoeffs
         yLine
         {
             sixDoFRigidBodyMotionConstraint line;
-            direction       (0 1 0);
+            centreOfRotation    (0.25 0.007 0.125);
+            direction           (0 1 0);
         }
 
         zAxis
         {
             sixDoFRigidBodyMotionConstraint axis;
-            axis            (0 0 1);
+            axis                (0 0 1);
         }
     }
 
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary
index 84afed0690a..16f360a5254 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties
index 098c4f7e5e1..dd7419bdc50 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties
index 17a36ec3438..fa68b2620ee 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/constant/turbulenceProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict
index 65890fc2c18..d6a374f4662 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -23,13 +23,13 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         0.6;
+endTime         5;
 
 deltaT          1e-5;
 
 writeControl    adjustableRunTime;
 
-writeInterval   5e-3;
+writeInterval   1e-2;
 
 purgeWrite      0;
 
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
index f3cad5eaea9..fb312209aa5 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes
index 136346dfaba..60d587ec44b 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution
index a72df2c072f..e2f0e0f622c 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U
index 7615c5dc17c..6ffa76e90af 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet
index 424f38bdb15..21f972203a1 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/fixedInlet
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
index e48cca8284a..fc8ec955695 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/frontBackTopBottomPatches
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions
index 101d2d5b289..bccc59497ee 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/include/initialConditions
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k
index d5de7827bea..c6604cfcd1b 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/k
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut
index d29f67c5c43..ad8a0fb9e65 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/nut
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega
index 5b2ceee733a..6e6863b6829 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/omega
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p
index dc7632711db..61b354d2107 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/0.org/p
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties
index 67cc1be5422..a9bf04940b7 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary
index 84afed0690a..16f360a5254 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties
index 098c4f7e5e1..dd7419bdc50 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict
index 8cef5fbc7fe..67c906e1692 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict
index 689ac5c7358..3835d038bc1 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/createPatchDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict
index 4fb4d3a2269..227ff551d3e 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/extrudeMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes
index 398c2ac1da9..44336e161e1 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution
index e10a126abc0..945edb9d953 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_simpleFoam/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict
index dd2b959fc0b..6193ac2cfbe 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/constant/polyMesh/blockMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict
index 6d9c62c7f6b..4a68bee9d3c 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
index d6cd01fd8fd..ec11c98681b 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes
index 34b1ddc8aa2..6779d76aa3f 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution
index e7e1dc6058c..058730230b8 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict
index 79558988a40..ef4841231cd 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/snappyHexMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U
index b9a012f9641..7cfe74ca6bc 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water
index ccd0b82c0cd..29be4b81bfa 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/alpha.water
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon
index 6a49823afc8..52fc06c197a 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/epsilon
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k
index b1ea45bf7ce..079d6ccdd42 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/k
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut
index 3d8dd146fca..124954685a0 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/nut
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh
index 10c9809c57c..e52c282b160 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/p_rgh
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
index 8d147349251..e82a3fca8d8 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties
index 63c4b0ac471..d964d3c8627 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
index 35b0cbaa139..e32ae2273dd 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -26,11 +26,62 @@ sixDoFRigidBodyMotionCoeffs
     innerDistance   0.05;
     outerDistance   0.35;
 
-    centreOfMass    (0.5 0.5 0.5);
-    momentOfInertia (0.08622222 0.08622222 0.144);
-    mass            9.6;
+    centreOfMass    (0.5 0.45 0.35);
+
+    // Cuboid dimensions
+    Lx              0.3;
+    Ly              0.2;
+    Lz              0.5;
+
+    // Density of the solid
+    rho             500;
+
+    // Cuboid mass
+    mass            #calc "$rho*$Lx*$Ly*$Lz";
+
+    // Cuboid moment of inertia about the centre of mass
+    momentOfInertia #codeStream
+    {
+        codeInclude
+        #{
+            #include "diagTensor.H"
+        #};
+
+        code
+        #{
+            scalar sqrLx = sqr($Lx);
+            scalar sqrLy = sqr($Ly);
+            scalar sqrLz = sqr($Lz);
+            os  <<
+                $mass
+               *diagTensor(sqrLy + sqrLz, sqrLx + sqrLz, sqrLx + sqrLy)/12.0;
+        #};
+    };
+
     report          on;
-    accelerationRelaxation 0.7;
+    accelerationRelaxation 0.5;
+
+    constraints
+    {
+        // fixedPoint
+        // {
+        //     sixDoFRigidBodyMotionConstraint point;
+        //     centreOfRotation (0.5 0.45 0.1);
+        // }
+
+        fixedLine
+        {
+            sixDoFRigidBodyMotionConstraint line;
+            centreOfRotation (0.5 0.45 0.1);
+            direction (0 1 0);
+        }
+
+        fixedAxis
+        {
+            sixDoFRigidBodyMotionConstraint axis;
+            axis (0 1 0);
+        }
+    }
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g
index 259d6a5768b..c97a941a2a7 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/g
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict
index ba292d0655b..3fedffc1889 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/blockMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -30,7 +30,7 @@ vertices
 
 blocks
 (
-    hex (0 1 2 3 4 5 6 7) (40 40 60) simpleGrading (1 1 1)
+    hex (0 1 2 3 4 5 6 7) (20 20 30) simpleGrading (1 1 1)
 );
 
 edges
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary
index 1f9cc388f08..898b4642226 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -21,21 +21,21 @@ FoamFile
     {
         type            wall;
         inGroups        1(wall);
-        nFaces          11200;
-        startFace       277808;
+        nFaces          2800;
+        startFace       33146;
     }
     atmosphere
     {
         type            patch;
-        nFaces          1600;
-        startFace       289008;
+        nFaces          400;
+        startFace       35946;
     }
     floatingObject
     {
         type            wall;
         inGroups        1(wall);
-        nFaces          672;
-        startFace       290608;
+        nFaces          348;
+        startFace       36346;
     }
 )
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties
index 241e841ad0e..4cead4f61be 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties
index f9adc322f9a..e9fdea0cb23 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/turbulenceProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
index aee9827f444..b1ca1d5d875 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict
index ab0a2c7c7d3..575ab2cc24d 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes
index 282fe42c44b..c0a13530ea2 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution
index 39ce379d624..2d0db409694 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict
index fbfb344708b..acab99a766c 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/setFieldsDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict
index 81fbe325066..686a7035ade 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/topoSetDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  2.3.0                                 |
+|  \\    /   O peration     | Version:  2.3.x                                 |
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -24,7 +24,7 @@ actions
         source  boxToCell;
         sourceInfo
         {
-            box (0.35 0.35 0.44) (0.65 0.65 0.56);
+            box (0.35 0.35 0.1) (0.65 0.55 0.6);
         }
     }
 
-- 
GitLab