From 1c687baa35e557eee25b7ab297043147ca13b193 Mon Sep 17 00:00:00 2001
From: Henry Weller <http://cfd.direct>
Date: Thu, 1 Dec 2016 15:57:15 +0000
Subject: [PATCH] dynamicMotionSolverListFvMesh: New mesh-motion solver
 supporting multiple moving regions

e.g. the motion of two counter-rotating AMI regions could be defined:

dynamicFvMesh   dynamicMotionSolverListFvMesh;

solvers
(
    rotor1
    {
        solver solidBody;

        cellZone        rotor1;

        solidBodyMotionFunction  rotatingMotion;
        rotatingMotionCoeffs
        {
            origin        (0 0 0);
            axis          (0 0 1);
            omega         6.2832; // rad/s
        }
    }

    rotor2
    {
        solver solidBody;

        cellZone        rotor2;

        solidBodyMotionFunction  rotatingMotion;
        rotatingMotionCoeffs
        {
            origin        (0 0 0);
            axis          (0 0 1);
            omega         -6.2832; // rad/s
        }
    }
);

Any combination of motion solvers may be selected but there is no special
handling of motion interaction; the motions are applied sequentially and
potentially cumulatively.

To support this new general framework the solidBodyMotionFvMesh and
multiSolidBodyMotionFvMesh dynamicFvMeshes have been converted into the
corresponding motionSolvers solidBody and multiSolidBody and the tutorials
updated to reflect this change e.g. the motion in the mixerVesselAMI2D tutorial
is now defined thus:

dynamicFvMesh   dynamicMotionSolverFvMesh;

solver solidBody;

solidBodyCoeffs
{
    cellZone        rotor;

    solidBodyMotionFunction  rotatingMotion;
    rotatingMotionCoeffs
    {
        origin        (0 0 0);
        axis          (0 0 1);
        omega         6.2832; // rad/s
    }
}
---
 .../DictionaryBase/DictionaryBaseIO.C         |   4 +-
 src/dynamicFvMesh/Make/files                  |  16 +-
 .../dynamicMotionSolverListFvMesh.C           |  97 ++++++++++++
 .../dynamicMotionSolverListFvMesh.H           | 100 ++++++++++++
 src/dynamicMesh/Make/files                    |  30 +++-
 .../componentDisplacementMotionSolver.C       |   0
 .../componentDisplacementMotionSolver.H       |   0
 .../componentVelocityMotionSolver.C           |   2 +-
 .../componentVelocityMotionSolver.H           |   0
 .../displacement/displacementMotionSolver.C   |  67 +++++++++
 .../displacement/displacementMotionSolver.H   |  37 +----
 .../displacementInterpolationMotionSolver.C   |   2 -
 .../displacementInterpolationMotionSolver.H   |   4 +-
 .../displacementLayeredMotionMotionSolver.C   |   0
 .../displacementLayeredMotionMotionSolver.H   |   0
 .../layeredSolver/pointEdgeStructuredWalk.C   |   2 +-
 .../layeredSolver/pointEdgeStructuredWalk.H   |   0
 .../layeredSolver/pointEdgeStructuredWalkI.H  |   0
 .../points0/points0MotionSolver.C}            |  35 ++---
 .../points0/points0MotionSolver.H             | 130 ++++++++++++++++
 .../solidBody/multiSolidBodyMotionSolver.C}   | 137 ++++++-----------
 .../solidBody/multiSolidBodyMotionSolver.H}   |  50 +++---
 ...yMotionDisplacementPointPatchVectorField.C |   0
 ...yMotionDisplacementPointPatchVectorField.H |   0
 .../solidBodyMotionFunctions/SDA/SDA.C        |   0
 .../solidBodyMotionFunctions/SDA/SDA.H        |   0
 .../axisRotationMotion/axisRotationMotion.C   |   0
 .../axisRotationMotion/axisRotationMotion.H   |   2 +-
 .../linearMotion/linearMotion.C               |   0
 .../linearMotion/linearMotion.H               |   2 +-
 .../multiMotion/multiMotion.C                 |   0
 .../multiMotion/multiMotion.H                 |   2 +-
 .../oscillatingLinearMotion.C                 |   0
 .../oscillatingLinearMotion.H                 |   2 +-
 .../oscillatingRotatingMotion.C               |   0
 .../oscillatingRotatingMotion.H               |   2 +-
 .../rotatingMotion/rotatingMotion.C           |   0
 .../rotatingMotion/rotatingMotion.H           |   0
 .../solidBodyMotionFunction.C                 |   0
 .../solidBodyMotionFunction.H                 |   2 +-
 .../solidBodyMotionFunctionNew.C              |   2 +-
 .../tabulated6DoFMotion/tabulated6DoFMotion.C |   0
 .../tabulated6DoFMotion/tabulated6DoFMotion.H |   2 +-
 .../solidBody/solidBodyMotionSolver.C}        | 142 ++++++------------
 .../solidBody/solidBodyMotionSolver.H}        |  53 +++----
 .../motionSolver/motionSolver.C               |  39 ++++-
 .../motionSolver/motionSolver.H               |  27 +++-
 .../velocity/velocityMotionSolver.C           |   2 +-
 .../velocity/velocityMotionSolver.H           |   2 +-
 src/fvMotionSolver/Make/files                 |   5 +-
 ...lacementComponentLaplacianFvMotionSolver.C |   2 +-
 ...lacementComponentLaplacianFvMotionSolver.H |   6 +-
 ...velocityComponentLaplacianFvMotionSolver.C |   2 +-
 ...velocityComponentLaplacianFvMotionSolver.H |   7 +-
 .../displacementSBRStressFvMotionSolver.C     |   2 +-
 .../displacementSBRStressFvMotionSolver.H     |   6 +-
 .../displacementLaplacianFvMotionSolver.C     |   2 +-
 .../displacementLaplacianFvMotionSolver.H     |   6 +-
 .../fvMotionSolver.C}                         |   8 +-
 .../fvMotionSolver.H}                         |  14 +-
 .../fvMotionSolverTemplates.C}                |   4 +-
 .../velocityLaplacianFvMotionSolver.C         |   2 +-
 .../velocityLaplacianFvMotionSolver.H         |   6 +-
 .../constant/dynamicMeshDict                  |   6 +-
 .../mixerVesselAMI2D/constant/dynamicMeshDict |   7 +-
 .../constant/dynamicMeshDict                  |   6 +-
 .../propeller/constant/dynamicMeshDict        |   6 +-
 .../mixerVessel/constant/dynamicMeshDict      |   6 +-
 .../sloshingTank2D/constant/dynamicMeshDict   |   6 +-
 .../mixerVesselAMI/constant/dynamicMeshDict   |   6 +-
 .../sloshingTank2D/constant/dynamicMeshDict   |   6 +-
 .../constant/dynamicMeshDict                  |   6 +-
 .../sloshingTank3D/constant/dynamicMeshDict   |   6 +-
 .../constant/dynamicMeshDict                  |   6 +-
 .../constant/dynamicMeshDict                  |   6 +-
 .../testTubeMixer/constant/dynamicMeshDict    |   6 +-
 .../propeller/constant/dynamicMeshDict        |   6 +-
 .../mixerVesselAMI2D/constant/dynamicMeshDict |   6 +-
 78 files changed, 739 insertions(+), 418 deletions(-)
 create mode 100644 src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.C
 create mode 100644 src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.H
 rename src/dynamicMesh/{motionSolver => motionSolvers}/componentDisplacement/componentDisplacementMotionSolver.C (100%)
 rename src/dynamicMesh/{motionSolver => motionSolvers}/componentDisplacement/componentDisplacementMotionSolver.H (100%)
 rename src/dynamicMesh/{motionSolver => motionSolvers}/componentVelocity/componentVelocityMotionSolver.C (97%)
 rename src/dynamicMesh/{motionSolver => motionSolvers}/componentVelocity/componentVelocityMotionSolver.H (100%)
 create mode 100644 src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C
 rename src/dynamicMesh/{motionSolver => motionSolvers/displacement}/displacement/displacementMotionSolver.H (78%)
 rename src/{fvMotionSolver/fvMotionSolvers => dynamicMesh/motionSolvers}/displacement/interpolation/displacementInterpolationMotionSolver.C (99%)
 rename src/{fvMotionSolver/fvMotionSolvers => dynamicMesh/motionSolvers}/displacement/interpolation/displacementInterpolationMotionSolver.H (97%)
 rename src/{fvMotionSolver/fvMotionSolvers => dynamicMesh/motionSolvers}/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C (100%)
 rename src/{fvMotionSolver/fvMotionSolvers => dynamicMesh/motionSolvers}/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H (100%)
 rename src/{fvMotionSolver/fvMotionSolvers => dynamicMesh/motionSolvers}/displacement/layeredSolver/pointEdgeStructuredWalk.C (95%)
 rename src/{fvMotionSolver/fvMotionSolvers => dynamicMesh/motionSolvers}/displacement/layeredSolver/pointEdgeStructuredWalk.H (100%)
 rename src/{fvMotionSolver/fvMotionSolvers => dynamicMesh/motionSolvers}/displacement/layeredSolver/pointEdgeStructuredWalkI.H (100%)
 rename src/dynamicMesh/{motionSolver/displacement/displacementMotionSolver.C => motionSolvers/displacement/points0/points0MotionSolver.C} (87%)
 create mode 100644 src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C => dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.C} (50%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.H => dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.H} (69%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/SDA/SDA.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/SDA/SDA.H (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H (98%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/linearMotion/linearMotion.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/linearMotion/linearMotion.H (98%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/multiMotion/multiMotion.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/multiMotion/multiMotion.H (98%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H (98%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H (98%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H (98%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C (97%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C (100%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh => dynamicMesh/motionSolvers/displacement/solidBody}/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H (98%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C => dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.C} (51%)
 rename src/{dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.H => dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.H} (69%)
 rename src/dynamicMesh/{motionSolver => motionSolvers}/motionSolver/motionSolver.C (87%)
 rename src/dynamicMesh/{motionSolver => motionSolvers}/motionSolver/motionSolver.H (89%)
 rename src/dynamicMesh/{motionSolver => motionSolvers}/velocity/velocityMotionSolver.C (96%)
 rename src/dynamicMesh/{motionSolver => motionSolvers}/velocity/velocityMotionSolver.H (97%)
 rename src/fvMotionSolver/fvMotionSolvers/{fvMotionSolverCore/fvMotionSolverCore.C => fvMotionSolver/fvMotionSolver.C} (86%)
 rename src/fvMotionSolver/fvMotionSolvers/{fvMotionSolverCore/fvMotionSolverCore.H => fvMotionSolver/fvMotionSolver.H} (92%)
 rename src/fvMotionSolver/fvMotionSolvers/{fvMotionSolverCore/fvMotionSolverCoreTemplates.C => fvMotionSolver/fvMotionSolverTemplates.C} (95%)

diff --git a/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBaseIO.C b/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBaseIO.C
index 24027496c7e..1970653b5bc 100644
--- a/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBaseIO.C
+++ b/src/OpenFOAM/containers/Dictionaries/DictionaryBase/DictionaryBaseIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -62,6 +62,4 @@ Foam::Ostream& Foam::operator<<
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/dynamicFvMesh/Make/files b/src/dynamicFvMesh/Make/files
index 0403ea42edf..9f5609fddd1 100644
--- a/src/dynamicFvMesh/Make/files
+++ b/src/dynamicFvMesh/Make/files
@@ -4,20 +4,6 @@ staticFvMesh/staticFvMesh.C
 dynamicMotionSolverFvMesh/dynamicMotionSolverFvMesh.C
 dynamicInkJetFvMesh/dynamicInkJetFvMesh.C
 dynamicRefineFvMesh/dynamicRefineFvMesh.C
-
-solidBodyMotionFvMesh/solidBodyMotionFvMesh.C
-solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C
-solidBodyMotionFunctions = solidBodyMotionFvMesh/solidBodyMotionFunctions
-$(solidBodyMotionFunctions)/solidBodyMotionFunction/solidBodyMotionFunction.C
-$(solidBodyMotionFunctions)/solidBodyMotionFunction/solidBodyMotionFunctionNew.C
-$(solidBodyMotionFunctions)/SDA/SDA.C
-$(solidBodyMotionFunctions)/tabulated6DoFMotion/tabulated6DoFMotion.C
-$(solidBodyMotionFunctions)/linearMotion/linearMotion.C
-$(solidBodyMotionFunctions)/rotatingMotion/rotatingMotion.C
-$(solidBodyMotionFunctions)/axisRotationMotion/axisRotationMotion.C
-$(solidBodyMotionFunctions)/multiMotion/multiMotion.C
-$(solidBodyMotionFunctions)/oscillatingLinearMotion/oscillatingLinearMotion.C
-$(solidBodyMotionFunctions)/oscillatingRotatingMotion/oscillatingRotatingMotion.C
-solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
+dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.C
 
 LIB = $(FOAM_LIBBIN)/libdynamicFvMesh
diff --git a/src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.C b/src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.C
new file mode 100644
index 00000000000..2814638b378
--- /dev/null
+++ b/src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.C
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "dynamicMotionSolverListFvMesh.H"
+#include "addToRunTimeSelectionTable.H"
+#include "motionSolver.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(dynamicMotionSolverListFvMesh, 0);
+    addToRunTimeSelectionTable
+    (
+        dynamicFvMesh,
+        dynamicMotionSolverListFvMesh,
+        IOobject
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::dynamicMotionSolverListFvMesh::dynamicMotionSolverListFvMesh
+(
+    const IOobject& io
+)
+:
+    dynamicFvMesh(io),
+    motionSolvers_
+    (
+        IOdictionary
+        (
+            IOobject
+            (
+                "dynamicMeshDict",
+                time().constant(),
+                *this,
+                IOobject::MUST_READ_IF_MODIFIED,
+                IOobject::AUTO_WRITE
+            )
+        ).lookup("solvers"),
+        motionSolver::iNew(*this)
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::dynamicMotionSolverListFvMesh::~dynamicMotionSolverListFvMesh()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+bool Foam::dynamicMotionSolverListFvMesh::update()
+{
+    forAll(motionSolvers_, i)
+    {
+        fvMesh::movePoints(motionSolvers_[i].newPoints());
+    }
+
+    if (foundObject<volVectorField>("U"))
+    {
+        volVectorField& U =
+            const_cast<volVectorField&>(lookupObject<volVectorField>("U"));
+        U.correctBoundaryConditions();
+    }
+
+    return true;
+}
+
+
+// ************************************************************************* //
diff --git a/src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.H b/src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.H
new file mode 100644
index 00000000000..e638bf63b4e
--- /dev/null
+++ b/src/dynamicFvMesh/dynamicMotionSolverListFvMesh/dynamicMotionSolverListFvMesh.H
@@ -0,0 +1,100 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::dynamicMotionSolverListFvMesh
+
+Description
+    Foam::dynamicMotionSolverListFvMesh
+
+SourceFiles
+    dynamicMotionSolverListFvMesh.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef dynamicMotionSolverListFvMesh_H
+#define dynamicMotionSolverListFvMesh_H
+
+#include "dynamicFvMesh.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class motionSolver;
+
+/*---------------------------------------------------------------------------*\
+                           Class dynamicMotionSolverListFvMesh Declaration
+\*---------------------------------------------------------------------------*/
+
+class dynamicMotionSolverListFvMesh
+:
+    public dynamicFvMesh
+{
+    // Private data
+
+        PtrList<motionSolver> motionSolvers_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        dynamicMotionSolverListFvMesh(const dynamicMotionSolverListFvMesh&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const dynamicMotionSolverListFvMesh&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("dynamicMotionSolverListFvMesh");
+
+
+    // Constructors
+
+        //- Construct from IOobject
+        dynamicMotionSolverListFvMesh(const IOobject& io);
+
+
+    //- Destructor
+    ~dynamicMotionSolverListFvMesh();
+
+
+    // Member Functions
+
+        //- Dummy update function which does not change the mesh
+        virtual bool update();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/dynamicMesh/Make/files b/src/dynamicMesh/Make/files
index a96b93bdf9d..1bec6fedf51 100644
--- a/src/dynamicMesh/Make/files
+++ b/src/dynamicMesh/Make/files
@@ -98,11 +98,31 @@ motionSmoother/polyMeshGeometry/polyMeshGeometry.C
 motionSmoother/badQualityToCell/badQualityToCell.C
 motionSmoother/badQualityToFace/badQualityToFace.C
 
-motionSolver/motionSolver/motionSolver.C
-motionSolver/displacement/displacementMotionSolver.C
-motionSolver/componentDisplacement/componentDisplacementMotionSolver.C
-motionSolver/velocity/velocityMotionSolver.C
-motionSolver/componentVelocity/componentVelocityMotionSolver.C
+motionSolvers/motionSolver/motionSolver.C
+motionSolvers/displacement/points0/points0MotionSolver.C
+motionSolvers/displacement/displacement/displacementMotionSolver.C
+motionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
+motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
+motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
+motionSolvers/componentDisplacement/componentDisplacementMotionSolver.C
+motionSolvers/velocity/velocityMotionSolver.C
+motionSolvers/componentVelocity/componentVelocityMotionSolver.C
+motionSolvers/displacement/solidBody/solidBodyMotionSolver.C
+motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.C
+
+solidBodyMotionFunctions = motionSolvers/displacement/solidBody/solidBodyMotionFunctions
+$(solidBodyMotionFunctions)/solidBodyMotionFunction/solidBodyMotionFunction.C
+$(solidBodyMotionFunctions)/solidBodyMotionFunction/solidBodyMotionFunctionNew.C
+$(solidBodyMotionFunctions)/SDA/SDA.C
+$(solidBodyMotionFunctions)/tabulated6DoFMotion/tabulated6DoFMotion.C
+$(solidBodyMotionFunctions)/linearMotion/linearMotion.C
+$(solidBodyMotionFunctions)/rotatingMotion/rotatingMotion.C
+$(solidBodyMotionFunctions)/axisRotationMotion/axisRotationMotion.C
+$(solidBodyMotionFunctions)/multiMotion/multiMotion.C
+$(solidBodyMotionFunctions)/oscillatingLinearMotion/oscillatingLinearMotion.C
+$(solidBodyMotionFunctions)/oscillatingRotatingMotion/oscillatingRotatingMotion.C
+
+motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
 
 createShellMesh/createShellMesh.C
 
diff --git a/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.C b/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.C
similarity index 100%
rename from src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.C
rename to src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.C
diff --git a/src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.H b/src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.H
similarity index 100%
rename from src/dynamicMesh/motionSolver/componentDisplacement/componentDisplacementMotionSolver.H
rename to src/dynamicMesh/motionSolvers/componentDisplacement/componentDisplacementMotionSolver.H
diff --git a/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.C b/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.C
similarity index 97%
rename from src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.C
rename to src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.C
index 7d38bcfa541..04afe757684 100644
--- a/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.C
+++ b/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.H b/src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.H
similarity index 100%
rename from src/dynamicMesh/motionSolver/componentVelocity/componentVelocityMotionSolver.H
rename to src/dynamicMesh/motionSolvers/componentVelocity/componentVelocityMotionSolver.H
diff --git a/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C
new file mode 100644
index 00000000000..3a76a91b3d8
--- /dev/null
+++ b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.C
@@ -0,0 +1,67 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+\*---------------------------------------------------------------------------*/
+
+#include "displacementMotionSolver.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(displacementMotionSolver, 0);
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::displacementMotionSolver::displacementMotionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict,
+    const word& type
+)
+:
+    points0MotionSolver(mesh, dict, type),
+    pointDisplacement_
+    (
+        IOobject
+        (
+            "pointDisplacement",
+            time().timeName(),
+            mesh,
+            IOobject::MUST_READ,
+            IOobject::AUTO_WRITE
+        ),
+        pointMesh::New(mesh)
+    )
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::displacementMotionSolver::~displacementMotionSolver()
+{}
+
+
+// ************************************************************************* //
diff --git a/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.H
similarity index 78%
rename from src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.H
rename to src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.H
index 810aae068c9..df69f731cd2 100644
--- a/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.H
+++ b/src/dynamicMesh/motionSolvers/displacement/displacement/displacementMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -38,24 +38,20 @@ SourceFiles
 #ifndef displacementMotionSolver_H
 #define displacementMotionSolver_H
 
-#include "motionSolver.H"
-#include "pointFields.H"
-#include "pointIOField.H"
+#include "points0MotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-class mapPolyMesh;
-
 /*---------------------------------------------------------------------------*\
                    Class displacementMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
 class displacementMotionSolver
 :
-    public motionSolver
+    public points0MotionSolver
 {
 protected:
 
@@ -64,18 +60,9 @@ protected:
         //- Point motion field
         mutable pointVectorField pointDisplacement_;
 
-        //- Starting points
-        pointIOField points0_;
-
-
-    // Protected Member Functions
-
-        //- Return IO object for points0
-        IOobject points0IO(const polyMesh& mesh) const;
 
 private:
 
-
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
@@ -107,18 +94,6 @@ public:
 
     // Member Functions
 
-        //- Return reference to the reference field
-        pointField& points0()
-        {
-            return points0_;
-        }
-
-        //- Return reference to the reference field
-        const pointField& points0() const
-        {
-            return points0_;
-        }
-
         //- Return reference to the point motion displacement field
         pointVectorField& pointDisplacement()
         {
@@ -130,12 +105,6 @@ public:
         {
             return pointDisplacement_;
         }
-
-        //- Update local data for geometry changes
-        virtual void movePoints(const pointField&);
-
-        //-  Update local data for topology changes
-        virtual void updateMesh(const mapPolyMesh&);
 };
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
similarity index 99%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
rename to src/dynamicMesh/motionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
index 9acd5302ad8..d423153c586 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
+++ b/src/dynamicMesh/motionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
@@ -49,8 +49,6 @@ namespace Foam
 }
 
 
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::displacementInterpolationMotionSolver::
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H
similarity index 97%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H
rename to src/dynamicMesh/motionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H
index b5da0b5b3b5..0cacf891407 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.H
+++ b/src/dynamicMesh/motionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,7 +25,7 @@ Class
     Foam::displacementInterpolationMotionSolver
 
 Description
-    Mesh motion solver for an fvMesh.
+    Mesh motion solver for a polyMesh.
 
     Scales inbetween motion prescribed on faceZones. Works out per point
     the distance between the bounding face zones (in all three directions)
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
similarity index 100%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
rename to src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H
similarity index 100%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H
rename to src/dynamicMesh/motionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.H
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
similarity index 95%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
rename to src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
index a2ab64d1dee..5bb626935b1 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
+++ b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H
similarity index 100%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H
rename to src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.H
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalkI.H b/src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalkI.H
similarity index 100%
rename from src/fvMotionSolver/fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalkI.H
rename to src/dynamicMesh/motionSolvers/displacement/layeredSolver/pointEdgeStructuredWalkI.H
diff --git a/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.C b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C
similarity index 87%
rename from src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.C
rename to src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C
index b86fb855da2..29966de363f 100644
--- a/src/dynamicMesh/motionSolver/displacement/displacementMotionSolver.C
+++ b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,20 +23,20 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "displacementMotionSolver.H"
+#include "points0MotionSolver.H"
 #include "mapPolyMesh.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(displacementMotionSolver, 0);
+    defineTypeNameAndDebug(points0MotionSolver, 0);
 }
 
 
 // * * * * * * * * * * * * * Protected Data Members * * * * * * * * * * * * * //
 
-Foam::IOobject Foam::displacementMotionSolver::points0IO
+Foam::IOobject Foam::points0MotionSolver::points0IO
 (
     const polyMesh& mesh
 ) const
@@ -106,7 +106,7 @@ Foam::IOobject Foam::displacementMotionSolver::points0IO
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::displacementMotionSolver::displacementMotionSolver
+Foam::points0MotionSolver::points0MotionSolver
 (
     const polyMesh& mesh,
     const IOdictionary& dict,
@@ -114,18 +114,6 @@ Foam::displacementMotionSolver::displacementMotionSolver
 )
 :
     motionSolver(mesh, dict, type),
-    pointDisplacement_
-    (
-        IOobject
-        (
-            "pointDisplacement",
-            time().timeName(),
-            mesh,
-            IOobject::MUST_READ,
-            IOobject::AUTO_WRITE
-        ),
-        pointMesh::New(mesh)
-    ),
     points0_(pointIOField(points0IO(mesh)))
 {
     if (points0_.size() != mesh.nPoints())
@@ -134,8 +122,7 @@ Foam::displacementMotionSolver::displacementMotionSolver
             << "Number of points in mesh " << mesh.nPoints()
             << " differs from number of points " << points0_.size()
             << " read from file "
-            <<
-                IOobject
+            <<  IOobject
                 (
                     "points",
                     time().constant(),
@@ -152,19 +139,17 @@ Foam::displacementMotionSolver::displacementMotionSolver
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::displacementMotionSolver::~displacementMotionSolver()
+Foam::points0MotionSolver::~points0MotionSolver()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::displacementMotionSolver::movePoints(const pointField&)
-{
-    // No local data to update
-}
+void Foam::points0MotionSolver::movePoints(const pointField&)
+{}
 
 
-void Foam::displacementMotionSolver::updateMesh(const mapPolyMesh& mpm)
+void Foam::points0MotionSolver::updateMesh(const mapPolyMesh& mpm)
 {
     // pointMesh already updates pointFields
 
diff --git a/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H
new file mode 100644
index 00000000000..ed240ee91af
--- /dev/null
+++ b/src/dynamicMesh/motionSolvers/displacement/points0/points0MotionSolver.H
@@ -0,0 +1,130 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by
+    the Free Software Foundation, either version 3 of the License, or
+    (at your option) any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT
+    ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or
+    FITNESS FOR A PARTICULAR PURPOSE.  See the GNU General Public License
+    for more details.
+
+    You should have received a copy of the GNU General Public License
+    along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+Class
+    Foam::points0MotionSolver
+
+Description
+    Virtual base class for displacement motion solvers.
+
+SourceFiles
+    points0MotionSolver.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef points0MotionSolver_H
+#define points0MotionSolver_H
+
+#include "motionSolver.H"
+#include "pointFields.H"
+#include "pointIOField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+class mapPolyMesh;
+
+/*---------------------------------------------------------------------------*\
+                   Class points0MotionSolver Declaration
+\*---------------------------------------------------------------------------*/
+
+class points0MotionSolver
+:
+    public motionSolver
+{
+protected:
+
+    // Protected data
+
+        //- Starting points
+        pointIOField points0_;
+
+    // Protected Member Functions
+
+        //- Return IO object for points0
+        IOobject points0IO(const polyMesh& mesh) const;
+
+private:
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        points0MotionSolver(const points0MotionSolver&);
+
+        //- Disallow default bitwise assignment
+        void operator=(const points0MotionSolver&);
+
+public:
+
+    //- Runtime type information
+    TypeName("points0MotionSolver");
+
+
+    // Constructors
+
+        //- Construct from mesh and dictionary
+        points0MotionSolver
+        (
+            const polyMesh&,
+            const IOdictionary&,
+            const word& type
+        );
+
+
+    //- Destructor
+    virtual ~points0MotionSolver();
+
+
+    // Member Functions
+
+        //- Return reference to the reference field
+        pointField& points0()
+        {
+            return points0_;
+        }
+
+        //- Return reference to the reference field
+        const pointField& points0() const
+        {
+            return points0_;
+        }
+
+        //- Update local data for geometry changes
+        virtual void movePoints(const pointField&);
+
+        //-  Update local data for topology changes
+        virtual void updateMesh(const mapPolyMesh&);
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.C
similarity index 50%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.C
index f2a06887f90..625f8cfad47 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.C
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.C
@@ -23,9 +23,8 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "multiSolidBodyMotionFvMesh.H"
+#include "multiSolidBodyMotionSolver.H"
 #include "addToRunTimeSelectionTable.H"
-#include "volFields.H"
 #include "transformField.H"
 #include "cellZoneMesh.H"
 #include "boolList.H"
@@ -35,80 +34,44 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(multiSolidBodyMotionFvMesh, 0);
+    defineTypeNameAndDebug(multiSolidBodyMotionSolver, 0);
     addToRunTimeSelectionTable
     (
-        dynamicFvMesh,
-        multiSolidBodyMotionFvMesh,
-        IOobject
+        motionSolver,
+        multiSolidBodyMotionSolver,
+        dictionary
     );
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::multiSolidBodyMotionFvMesh::multiSolidBodyMotionFvMesh(const IOobject& io)
+Foam::multiSolidBodyMotionSolver::multiSolidBodyMotionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict
+)
 :
-    dynamicFvMesh(io),
-    dynamicMeshCoeffs_
-    (
-        IOdictionary
-        (
-            IOobject
-            (
-                "dynamicMeshDict",
-                io.time().constant(),
-                *this,
-                IOobject::MUST_READ_IF_MODIFIED,
-                IOobject::NO_WRITE,
-                false
-            )
-        ).subDict(typeName + "Coeffs")
-    ),
-    undisplacedPoints_
-    (
-        IOobject
-        (
-            "points",
-            io.time().constant(),
-            meshSubDir,
-            *this,
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE,
-            false
-        )
-    )
+    points0MotionSolver(mesh, dict, typeName)
 {
-    if (undisplacedPoints_.size() != nPoints())
-    {
-        FatalIOErrorInFunction
-        (
-            dynamicMeshCoeffs_
-        )   << "Read " << undisplacedPoints_.size()
-            << " undisplaced points from " << undisplacedPoints_.objectPath()
-            << " but the current mesh has " << nPoints()
-            << exit(FatalIOError);
-    }
+    zoneIDs_.setSize(coeffDict().size());
+    SBMFs_.setSize(coeffDict().size());
+    pointIDs_.setSize(coeffDict().size());
+    label zonei = 0;
 
-
-    zoneIDs_.setSize(dynamicMeshCoeffs_.size());
-    SBMFs_.setSize(dynamicMeshCoeffs_.size());
-    pointIDs_.setSize(dynamicMeshCoeffs_.size());
-    label zoneI = 0;
-
-    forAllConstIter(dictionary, dynamicMeshCoeffs_, iter)
+    forAllConstIter(dictionary, coeffDict(), iter)
     {
         if (iter().isDict())
         {
-            zoneIDs_[zoneI] = cellZones().findZoneID(iter().keyword());
+            zoneIDs_[zonei] = mesh.cellZones().findZoneID(iter().keyword());
 
-            if (zoneIDs_[zoneI] == -1)
+            if (zoneIDs_[zonei] == -1)
             {
                 FatalIOErrorInFunction
                 (
-                    dynamicMeshCoeffs_
+                    coeffDict()
                 )   << "Cannot find cellZone named " << iter().keyword()
-                    << ". Valid zones are " << cellZones().names()
+                    << ". Valid zones are " << mesh.cellZones().names()
                     << exit(FatalIOError);
             }
 
@@ -116,22 +79,22 @@ Foam::multiSolidBodyMotionFvMesh::multiSolidBodyMotionFvMesh(const IOobject& io)
 
             SBMFs_.set
             (
-                zoneI,
-                solidBodyMotionFunction::New(subDict, io.time())
+                zonei,
+                solidBodyMotionFunction::New(subDict, mesh.time())
             );
 
             // Collect points of cell zone.
-            const cellZone& cz = cellZones()[zoneIDs_[zoneI]];
+            const cellZone& cz = mesh.cellZones()[zoneIDs_[zonei]];
 
-            boolList movePts(nPoints(), false);
+            boolList movePts(mesh.nPoints(), false);
 
             forAll(cz, i)
             {
                 label celli = cz[i];
-                const cell& c = cells()[celli];
+                const cell& c = mesh.cells()[celli];
                 forAll(c, j)
                 {
-                    const face& f = faces()[c[j]];
+                    const face& f = mesh.faces()[c[j]];
                     forAll(f, k)
                     {
                         label pointi = f[k];
@@ -140,9 +103,9 @@ Foam::multiSolidBodyMotionFvMesh::multiSolidBodyMotionFvMesh(const IOobject& io)
                 }
             }
 
-            syncTools::syncPointList(*this, movePts, orEqOp<bool>(), false);
+            syncTools::syncPointList(mesh, movePts, orEqOp<bool>(), false);
 
-            DynamicList<label> ptIDs(nPoints());
+            DynamicList<label> ptIDs(mesh.nPoints());
             forAll(movePts, i)
             {
                 if (movePts[i])
@@ -151,34 +114,36 @@ Foam::multiSolidBodyMotionFvMesh::multiSolidBodyMotionFvMesh(const IOobject& io)
                 }
             }
 
-            pointIDs_[zoneI].transfer(ptIDs);
+            pointIDs_[zonei].transfer(ptIDs);
 
-            Info<< "Applying solid body motion " << SBMFs_[zoneI].type()
-                << " to " << pointIDs_[zoneI].size() << " points of cellZone "
+            Info<< "Applying solid body motion " << SBMFs_[zonei].type()
+                << " to " << pointIDs_[zonei].size() << " points of cellZone "
                 << iter().keyword() << endl;
 
-            zoneI++;
+            zonei++;
         }
     }
-    zoneIDs_.setSize(zoneI);
-    SBMFs_.setSize(zoneI);
-    pointIDs_.setSize(zoneI);
+    zoneIDs_.setSize(zonei);
+    SBMFs_.setSize(zonei);
+    pointIDs_.setSize(zonei);
 }
 
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::multiSolidBodyMotionFvMesh::~multiSolidBodyMotionFvMesh()
+Foam::multiSolidBodyMotionSolver::~multiSolidBodyMotionSolver()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-bool Foam::multiSolidBodyMotionFvMesh::update()
+Foam::tmp<Foam::pointField> Foam::multiSolidBodyMotionSolver::curPoints() const
 {
-    static bool hasWarned = false;
-
-    pointField transformedPts(undisplacedPoints_);
+    tmp<pointField> ttransformedPts
+    (
+        new pointField(points0_)
+    );
+    pointField& transformedPts = ttransformedPts.ref();
 
     forAll(zoneIDs_, i)
     {
@@ -192,23 +157,7 @@ bool Foam::multiSolidBodyMotionFvMesh::update()
             );
     }
 
-    fvMesh::movePoints(transformedPts);
-
-    if (foundObject<volVectorField>("U"))
-    {
-        const_cast<volVectorField&>(lookupObject<volVectorField>("U"))
-            .correctBoundaryConditions();
-    }
-    else if (!hasWarned)
-    {
-        hasWarned = true;
-
-        WarningInFunction
-            << "Did not find volVectorField U."
-            << " Not updating U boundary conditions." << endl;
-    }
-
-    return true;
+    return ttransformedPts;
 }
 
 
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.H
similarity index 69%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.H
index 3c36131d975..14232574ac1 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/multiSolidBodyMotionFvMesh.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/multiSolidBodyMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,23 +22,21 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::multiSolidBodyMotionFvMesh
+    Foam::multiSolidBodyMotionSolver
 
 Description
     Solid-body motion of the mesh specified by a run-time selectable
     motion function.
 
 SourceFiles
-    multiSolidBodyMotionFvMesh.C
+    multiSolidBodyMotionSolver.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef multiSolidBodyMotionFvMesh_H
-#define multiSolidBodyMotionFvMesh_H
+#ifndef multiSolidBodyMotionSolver_H
+#define multiSolidBodyMotionSolver_H
 
-#include "dynamicFvMesh.H"
-#include "dictionary.H"
-#include "pointIOField.H"
+#include "points0MotionSolver.H"
 #include "solidBodyMotionFunction.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -47,24 +45,18 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                   Class multiSolidBodyMotionFvMesh Declaration
+                   Class multiSolidBodyMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
-class multiSolidBodyMotionFvMesh
+class multiSolidBodyMotionSolver
 :
-    public dynamicFvMesh
+    public points0MotionSolver
 {
     // Private data
 
-        //- Dictionary of motion control parameters
-        const dictionary dynamicMeshCoeffs_;
-
         //- The motion control function
         PtrList<solidBodyMotionFunction> SBMFs_;
 
-        //- The reference points which are transformed
-        pointIOField undisplacedPoints_;
-
         //- Specified cellZones
         labelList zoneIDs_;
 
@@ -75,32 +67,40 @@ class multiSolidBodyMotionFvMesh
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        multiSolidBodyMotionFvMesh(const multiSolidBodyMotionFvMesh&);
+        multiSolidBodyMotionSolver(const multiSolidBodyMotionSolver&);
 
         //- Disallow default bitwise assignment
-        void operator=(const multiSolidBodyMotionFvMesh&);
+        void operator=(const multiSolidBodyMotionSolver&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("multiSolidBodyMotionFvMesh");
+    TypeName("multiSolidBodyMotionSolver");
 
 
     // Constructors
 
-        //- Construct from IOobject
-        multiSolidBodyMotionFvMesh(const IOobject& io);
+        //- Construct from mesh and dictionary
+        multiSolidBodyMotionSolver
+        (
+            const polyMesh&,
+            const IOdictionary&
+        );
 
 
     //- Destructor
-    ~multiSolidBodyMotionFvMesh();
+    ~multiSolidBodyMotionSolver();
 
 
     // Member Functions
 
-        //- Update the mesh for both mesh motion and topology change
-        virtual bool update();
+        //- Return point location obtained from the current motion field
+        virtual tmp<pointField> curPoints() const;
+
+        //- Solve for motion
+        virtual void solve()
+        {}
 };
 
 
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/SDA/SDA.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/SDA/SDA.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/SDA/SDA.H
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/SDA/SDA.H
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
similarity index 98%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
index 9f78e72d1b0..8cbd3e8ce68 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012-2013 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/linearMotion/linearMotion.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/linearMotion/linearMotion.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/linearMotion/linearMotion.H
similarity index 98%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/linearMotion/linearMotion.H
index 036ed957b63..afc90d74422 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/linearMotion/linearMotion.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/multiMotion/multiMotion.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/multiMotion/multiMotion.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/multiMotion/multiMotion.H
similarity index 98%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/multiMotion/multiMotion.H
index 93eb8dd8e53..47ce23cc5ab 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/multiMotion/multiMotion.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H
similarity index 98%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H
index d080f486ef4..ef0ea54fd8c 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H
similarity index 98%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H
index 60692b98f2f..198796c6133 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
similarity index 98%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
index 1e0ed0363b2..232ce1b4ccd 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C
similarity index 97%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C
index b0f0921750a..dfb9d5e1f37 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunctionNew.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C
similarity index 100%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.C
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H
similarity index 98%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H
index 0a5bfc736f7..4c6c05b4f1f 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.C
similarity index 51%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.C
index b4a993f11c6..ee2f7e65ac2 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.C
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,9 +23,8 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "solidBodyMotionFvMesh.H"
+#include "solidBodyMotionSolver.H"
 #include "addToRunTimeSelectionTable.H"
-#include "volFields.H"
 #include "transformField.H"
 #include "cellZoneMesh.H"
 #include "cellSet.H"
@@ -36,91 +35,61 @@ License
 
 namespace Foam
 {
-    defineTypeNameAndDebug(solidBodyMotionFvMesh, 0);
-    addToRunTimeSelectionTable(dynamicFvMesh, solidBodyMotionFvMesh, IOobject);
+    defineTypeNameAndDebug(solidBodyMotionSolver, 0);
+    addToRunTimeSelectionTable
+    (
+        motionSolver,
+        solidBodyMotionSolver,
+        dictionary
+    );
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::solidBodyMotionFvMesh::solidBodyMotionFvMesh(const IOobject& io)
+Foam::solidBodyMotionSolver::solidBodyMotionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict
+)
 :
-    dynamicFvMesh(io),
-    dynamicMeshCoeffs_
-    (
-        IOdictionary
-        (
-            IOobject
-            (
-                "dynamicMeshDict",
-                io.time().constant(),
-                *this,
-                IOobject::MUST_READ_IF_MODIFIED,
-                IOobject::NO_WRITE,
-                false
-            )
-        ).subDict(typeName + "Coeffs")
-    ),
-    SBMFPtr_(solidBodyMotionFunction::New(dynamicMeshCoeffs_, io.time())),
-    undisplacedPoints_
-    (
-        IOobject
-        (
-            "points",
-            io.time().constant(),
-            meshSubDir,
-            *this,
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE,
-            false
-        )
-    ),
+    points0MotionSolver(mesh, dict, typeName),
+    SBMFPtr_(solidBodyMotionFunction::New(coeffDict(), mesh.time())),
     pointIDs_(),
-    moveAllCells_(false),
-    UName_(dynamicMeshCoeffs_.lookupOrDefault<word>("U", "U"))
+    moveAllCells_(false)
 {
-    if (undisplacedPoints_.size() != nPoints())
-    {
-        FatalIOErrorInFunction(dynamicMeshCoeffs_)
-            << "Read " << undisplacedPoints_.size()
-            << " undisplaced points from " << undisplacedPoints_.objectPath()
-            << " but the current mesh has " << nPoints()
-            << exit(FatalIOError);
-    }
-
     word cellZoneName =
-        dynamicMeshCoeffs_.lookupOrDefault<word>("cellZone", "none");
+        coeffDict().lookupOrDefault<word>("cellZone", "none");
 
     word cellSetName =
-        dynamicMeshCoeffs_.lookupOrDefault<word>("cellSet", "none");
+        coeffDict().lookupOrDefault<word>("cellSet", "none");
 
     if ((cellZoneName != "none") && (cellSetName != "none"))
     {
-        FatalIOErrorInFunction(dynamicMeshCoeffs_)
+        FatalIOErrorInFunction(coeffDict())
             << "Either cellZone OR cellSet can be supplied, but not both. "
             << "If neither is supplied, all cells will be included"
             << exit(FatalIOError);
     }
 
-
     labelList cellIDs;
     if (cellZoneName != "none")
     {
         Info<< "Applying solid body motion to cellZone " << cellZoneName
             << endl;
 
-        label zoneID = cellZones().findZoneID(cellZoneName);
+        label zoneID = mesh.cellZones().findZoneID(cellZoneName);
 
         if (zoneID == -1)
         {
             FatalErrorInFunction
                 << "Unable to find cellZone " << cellZoneName
                 << ".  Valid cellZones are:"
-                << cellZones().names()
+                << mesh.cellZones().names()
                 << exit(FatalError);
         }
 
-        cellIDs = cellZones()[zoneID];
+        cellIDs = mesh.cellZones()[zoneID];
     }
 
     if (cellSetName != "none")
@@ -128,7 +97,7 @@ Foam::solidBodyMotionFvMesh::solidBodyMotionFvMesh(const IOobject& io)
         Info<< "Applying solid body motion to cellSet " << cellSetName
             << endl;
 
-        cellSet set(*this, cellSetName);
+        cellSet set(mesh, cellSetName);
 
         cellIDs = set.toc();
     }
@@ -144,15 +113,15 @@ Foam::solidBodyMotionFvMesh::solidBodyMotionFvMesh(const IOobject& io)
     {
         // collect point IDs of points in cell zone
 
-        boolList movePts(nPoints(), false);
+        boolList movePts(mesh.nPoints(), false);
 
         forAll(cellIDs, i)
         {
             label celli = cellIDs[i];
-            const cell& c = cells()[celli];
+            const cell& c = mesh.cells()[celli];
             forAll(c, j)
             {
-                const face& f = faces()[c[j]];
+                const face& f = mesh.faces()[c[j]];
                 forAll(f, k)
                 {
                     label pointi = f[k];
@@ -161,9 +130,9 @@ Foam::solidBodyMotionFvMesh::solidBodyMotionFvMesh(const IOobject& io)
             }
         }
 
-        syncTools::syncPointList(*this, movePts, orEqOp<bool>(), false);
+        syncTools::syncPointList(mesh, movePts, orEqOp<bool>(), false);
 
-        DynamicList<label> ptIDs(nPoints());
+        DynamicList<label> ptIDs(mesh.nPoints());
         forAll(movePts, i)
         {
             if (movePts[i])
@@ -179,59 +148,34 @@ Foam::solidBodyMotionFvMesh::solidBodyMotionFvMesh(const IOobject& io)
 
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
-Foam::solidBodyMotionFvMesh::~solidBodyMotionFvMesh()
+Foam::solidBodyMotionSolver::~solidBodyMotionSolver()
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-bool Foam::solidBodyMotionFvMesh::update()
+Foam::tmp<Foam::pointField> Foam::solidBodyMotionSolver::curPoints() const
 {
-    static bool hasWarned = false;
-
     if (moveAllCells_)
     {
-        fvMesh::movePoints
-        (
-            transformPoints
-            (
-                SBMFPtr_().transformation(),
-                undisplacedPoints_
-            )
-        );
+        return transformPoints(SBMFPtr_().transformation(), points0_);
     }
     else
     {
-        pointField transformedPts(undisplacedPoints_);
-
-        UIndirectList<point>(transformedPts, pointIDs_) =
-            transformPoints
-            (
-                SBMFPtr_().transformation(),
-                pointField(transformedPts, pointIDs_)
-            );
-
-        fvMesh::movePoints(transformedPts);
-    }
-
-
-    if (foundObject<volVectorField>(UName_))
-    {
-        const volVectorField& U = lookupObject<volVectorField>(UName_);
+        tmp<pointField> ttransformedPts
+        (
+            new pointField(points0_)
+        );
+        pointField& transformedPts = ttransformedPts.ref();
 
-        const_cast<volVectorField&>(U).correctBoundaryConditions();
-    }
-    else if (!hasWarned)
-    {
-        hasWarned = true;
+        UIndirectList<point>(transformedPts, pointIDs_) = transformPoints
+        (
+            SBMFPtr_().transformation(),
+            pointField(transformedPts, pointIDs_)
+        );
 
-        WarningInFunction
-            << "Did not find volVectorField " << UName_
-            << " Not updating " << UName_ << "boundary conditions."
-            << endl;
+        return ttransformedPts;
     }
-
-    return true;
 }
 
 
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.H b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.H
similarity index 69%
rename from src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.H
rename to src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.H
index d7d8bf46808..4b36558c2c3 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFvMesh.H
+++ b/src/dynamicMesh/motionSolvers/displacement/solidBody/solidBodyMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -22,23 +22,21 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::solidBodyMotionFvMesh
+    Foam::solidBodyMotionSolver
 
 Description
     Solid-body motion of the mesh specified by a run-time selectable
     motion function.
 
 SourceFiles
-    solidBodyMotionFvMesh.C
+    solidBodyMotionSolver.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef solidBodyMotionFvMesh_H
-#define solidBodyMotionFvMesh_H
+#ifndef solidBodyMotionSolver_H
+#define solidBodyMotionSolver_H
 
-#include "dynamicFvMesh.H"
-#include "dictionary.H"
-#include "pointIOField.H"
+#include "points0MotionSolver.H"
 #include "solidBodyMotionFunction.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -47,63 +45,62 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                   Class solidBodyMotionFvMesh Declaration
+                   Class solidBodyMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
-class solidBodyMotionFvMesh
+class solidBodyMotionSolver
 :
-    public dynamicFvMesh
+    public points0MotionSolver
 {
     // Private data
 
-        //- Dictionary of motion control parameters
-        const dictionary dynamicMeshCoeffs_;
-
         //- The motion control function
         autoPtr<solidBodyMotionFunction> SBMFPtr_;
 
-        //- The reference points which are transformed
-        pointIOField undisplacedPoints_;
-
         //- Points to move when cell zone is supplied
         labelList pointIDs_;
 
         //- Flag to indicate whether all cells should move
         bool moveAllCells_;
 
-        //- Name of velocity field
-        word UName_;
-
 
     // Private Member Functions
 
         //- Disallow default bitwise copy construct
-        solidBodyMotionFvMesh(const solidBodyMotionFvMesh&);
+        solidBodyMotionSolver(const solidBodyMotionSolver&);
 
         //- Disallow default bitwise assignment
-        void operator=(const solidBodyMotionFvMesh&);
+        void operator=(const solidBodyMotionSolver&);
 
 
 public:
 
     //- Runtime type information
-    TypeName("solidBodyMotionFvMesh");
+    TypeName("solidBody");
 
 
     // Constructors
 
-        //- Construct from IOobject
-        solidBodyMotionFvMesh(const IOobject& io);
+        //- Construct from mesh and dictionary
+        solidBodyMotionSolver
+        (
+            const polyMesh&,
+            const IOdictionary&
+        );
 
 
     //- Destructor
-    ~solidBodyMotionFvMesh();
+    ~solidBodyMotionSolver();
 
 
     // Member Functions
 
-        //- Update the mesh for both mesh motion and topology change
-        virtual bool update();
+        //- Return point location obtained from the current motion field
+        virtual tmp<pointField> curPoints() const;
+
+        //- Solve for motion
+        virtual void solve()
+        {}
 };
 
 
diff --git a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C
similarity index 87%
rename from src/dynamicMesh/motionSolver/motionSolver/motionSolver.C
rename to src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C
index efcaab60e1e..a637338472e 100644
--- a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.C
+++ b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -89,6 +89,13 @@ Foam::motionSolver::motionSolver
 {}
 
 
+Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::clone() const
+{
+    NotImplemented;
+    return autoPtr<motionSolver>(nullptr);
+}
+
+
 // * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
 
 Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New
@@ -150,6 +157,36 @@ Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::New(const polyMesh& mesh)
 }
 
 
+Foam::motionSolver::iNew::iNew(const polyMesh& mesh)
+:
+    mesh_(mesh)
+{}
+
+
+Foam::autoPtr<Foam::motionSolver> Foam::motionSolver::iNew::operator()
+(
+    Istream& is
+) const
+{
+    dictionaryEntry dict(dictionary::null, is);
+
+    return motionSolver::New
+    (
+        mesh_,
+        IOdictionary
+        (
+            IOobject
+            (
+                dict.name() + ":meshSolver",
+                mesh_.time().constant(),
+                mesh_
+            ),
+            dict
+        )
+    );
+}
+
+
 // * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
 
 Foam::motionSolver::~motionSolver()
diff --git a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.H
similarity index 89%
rename from src/dynamicMesh/motionSolver/motionSolver/motionSolver.H
rename to src/dynamicMesh/motionSolvers/motionSolver/motionSolver.H
index 651c0d9d183..660244b3ce0 100644
--- a/src/dynamicMesh/motionSolver/motionSolver/motionSolver.H
+++ b/src/dynamicMesh/motionSolvers/motionSolver/motionSolver.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -38,6 +38,10 @@ SourceFiles
 #include "IOdictionary.H"
 #include "pointField.H"
 
+#include "Time.H"
+#include "polyMesh.H"
+#include "dictionaryEntry.H"
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
@@ -55,9 +59,6 @@ class motionSolver
 :
     public IOdictionary
 {
-
-private:
-
     // Private data
 
         //- Reference to mesh
@@ -72,6 +73,7 @@ private:
         //- De-register object if registered and assign to current
         static IOobject stealRegistration(const IOdictionary& dict);
 
+
 public:
 
     //- Runtime type information
@@ -99,6 +101,20 @@ public:
         //  was registered this will 'steal' that registration.
         static autoPtr<motionSolver> New(const polyMesh&, const IOdictionary&);
 
+        //- Class used for the construction of PtrLists of motionSolvers
+        class iNew
+        {
+            const polyMesh& mesh_;
+            mutable label index_;
+
+        public:
+
+            iNew(const polyMesh& mesh);
+
+            autoPtr<motionSolver> operator()(Istream& is) const;
+        };
+
+
 
     // Constructors
 
@@ -113,6 +129,9 @@ public:
             const word& type
         );
 
+        //- Clone function
+        virtual autoPtr<motionSolver> clone() const;
+
 
     //- Destructor
     virtual ~motionSolver();
diff --git a/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.C b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.C
similarity index 96%
rename from src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.C
rename to src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.C
index 35f9924b497..a6c2604bea5 100644
--- a/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.C
+++ b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.H b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.H
similarity index 97%
rename from src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.H
rename to src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.H
index a9a5c160d1a..e675b87d73b 100644
--- a/src/dynamicMesh/motionSolver/velocity/velocityMotionSolver.H
+++ b/src/dynamicMesh/motionSolvers/velocity/velocityMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/fvMotionSolver/Make/files b/src/fvMotionSolver/Make/files
index 13204042afb..a4fea7feb8a 100644
--- a/src/fvMotionSolver/Make/files
+++ b/src/fvMotionSolver/Make/files
@@ -1,9 +1,6 @@
-fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C
+fvMotionSolvers/fvMotionSolver/fvMotionSolver.C
 fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
 fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
-fvMotionSolvers/displacement/interpolation/displacementInterpolationMotionSolver.C
-fvMotionSolvers/displacement/layeredSolver/displacementLayeredMotionMotionSolver.C
-fvMotionSolvers/displacement/layeredSolver/pointEdgeStructuredWalk.C
 
 fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
 fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
diff --git a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
index 4b1751f6569..380c451cd8e 100644
--- a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.C
@@ -55,7 +55,7 @@ displacementComponentLaplacianFvMotionSolver
 )
 :
     componentDisplacementMotionSolver(mesh, dict, type()),
-    fvMotionSolverCore(mesh),
+    fvMotionSolver(mesh),
     cellDisplacement_
     (
         IOobject
diff --git a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
index 56a6f932dde..97054594618 100644
--- a/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/componentDisplacement/componentLaplacian/displacementComponentLaplacianFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ SourceFiles
 #define displacementComponentLaplacianFvMotionSolver_H
 
 #include "componentDisplacementMotionSolver.H"
-#include "fvMotionSolverCore.H"
+#include "fvMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -54,7 +54,7 @@ class motionDiffusivity;
 class displacementComponentLaplacianFvMotionSolver
 :
     public componentDisplacementMotionSolver,
-    public fvMotionSolverCore
+    public fvMotionSolver
 {
     // Private data
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
index 5f297bbb663..4eab56f8fe1 100644
--- a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.C
@@ -54,7 +54,7 @@ velocityComponentLaplacianFvMotionSolver
 )
 :
     componentVelocityMotionSolver(mesh, dict, typeName),
-    fvMotionSolverCore(mesh),
+    fvMotionSolver(mesh),
     cellMotionU_
     (
         IOobject
diff --git a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
index 1f58ddf4146..e02e37748c8 100644
--- a/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/componentVelocity/componentLaplacian/velocityComponentLaplacianFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ SourceFiles
 #define velocityComponentLaplacianFvMotionSolver_H
 
 #include "componentVelocityMotionSolver.H"
-#include "fvMotionSolverCore.H"
+#include "fvMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -54,7 +54,7 @@ class motionDiffusivity;
 class velocityComponentLaplacianFvMotionSolver
 :
     public componentVelocityMotionSolver,
-    public fvMotionSolverCore
+    public fvMotionSolver
 {
     // Private data
 
@@ -114,7 +114,6 @@ public:
 
         //- Update topology
         virtual void updateMesh(const mapPolyMesh&);
-
 };
 
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
index ffa2ce9fc49..f4a9e60683c 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.C
@@ -58,7 +58,7 @@ Foam::displacementSBRStressFvMotionSolver::displacementSBRStressFvMotionSolver
 )
 :
     displacementMotionSolver(mesh, dict, dict.lookup("solver")),
-    fvMotionSolverCore(mesh),
+    fvMotionSolver(mesh),
     cellDisplacement_
     (
         IOobject
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H
index 566a98686bb..70c854dd080 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/SBRStress/displacementSBRStressFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2014 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ SourceFiles
 #define displacementSBRStressFvMotionSolver_H
 
 #include "displacementMotionSolver.H"
-#include "fvMotionSolverCore.H"
+#include "fvMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -54,7 +54,7 @@ class motionDiffusivity;
 class displacementSBRStressFvMotionSolver
 :
     public displacementMotionSolver,
-    public fvMotionSolverCore
+    public fvMotionSolver
 {
     // Private data
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
index 705ea097040..c128cea20c0 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.C
@@ -56,7 +56,7 @@ Foam::displacementLaplacianFvMotionSolver::displacementLaplacianFvMotionSolver
 )
 :
     displacementMotionSolver(mesh, dict, typeName),
-    fvMotionSolverCore(mesh),
+    fvMotionSolver(mesh),
     cellDisplacement_
     (
         IOobject
diff --git a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H
index 47ad2c672c9..cd615a08dc8 100644
--- a/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/displacement/laplacian/displacementLaplacianFvMotionSolver.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-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ SourceFiles
 #define displacementLaplacianFvMotionSolver_H
 
 #include "displacementMotionSolver.H"
-#include "fvMotionSolverCore.H"
+#include "fvMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -54,7 +54,7 @@ class motionDiffusivity;
 class displacementLaplacianFvMotionSolver
 :
     public displacementMotionSolver,
-    public fvMotionSolverCore
+    public fvMotionSolver
 {
     // Private data
 
diff --git a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.C
similarity index 86%
rename from src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C
rename to src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.C
index 3a1cc5273ff..e86d7b2472d 100644
--- a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.C
+++ b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2012-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -23,19 +23,19 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "fvMotionSolverCore.H"
+#include "fvMotionSolver.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
 namespace Foam
 {
-    defineTypeNameAndDebug(fvMotionSolverCore, 0);
+    defineTypeNameAndDebug(fvMotionSolver, 0);
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::fvMotionSolverCore::fvMotionSolverCore(const polyMesh& mesh)
+Foam::fvMotionSolver::fvMotionSolver(const polyMesh& mesh)
 :
     fvMesh_(refCast<const fvMesh>(mesh))
 {}
diff --git a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.H b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.H
similarity index 92%
rename from src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.H
rename to src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.H
index cea29b3112e..02dd93a417e 100644
--- a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCore.H
+++ b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolver.H
@@ -22,18 +22,18 @@ License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
 Class
-    Foam::fvMotionSolverCore
+    Foam::fvMotionSolver
 
 Description
     Base class for fvMesh based motionSolvers.
 
 SourceFiles
-    fvMotionSolverCore.C
+    fvMotionSolver.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef fvMotionSolverCore_H
-#define fvMotionSolverCore_H
+#ifndef fvMotionSolver_H
+#define fvMotionSolver_H
 
 #include "fvMesh.H"
 
@@ -46,7 +46,7 @@ namespace Foam
                 Class velocityMotionSolver Declaration
 \*---------------------------------------------------------------------------*/
 
-class fvMotionSolverCore
+class fvMotionSolver
 {
 
 protected:
@@ -76,7 +76,7 @@ public:
     // Constructors
 
         //- Construct from polyMesh
-        fvMotionSolverCore(const polyMesh&);
+        fvMotionSolver(const polyMesh&);
 
 
     // Member Functions
@@ -96,7 +96,7 @@ public:
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #ifdef NoRepository
-    #include "fvMotionSolverCoreTemplates.C"
+    #include "fvMotionSolverTemplates.C"
 #endif
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCoreTemplates.C b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolverTemplates.C
similarity index 95%
rename from src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCoreTemplates.C
rename to src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolverTemplates.C
index 1a1d3697aad..8d1ba014d91 100644
--- a/src/fvMotionSolver/fvMotionSolvers/fvMotionSolverCore/fvMotionSolverCoreTemplates.C
+++ b/src/fvMotionSolver/fvMotionSolvers/fvMotionSolver/fvMotionSolverTemplates.C
@@ -23,14 +23,14 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "fvMotionSolverCore.H"
+#include "fvMotionSolver.H"
 #include "fixedValuePointPatchFields.H"
 #include "cellMotionFvPatchFields.H"
 
 // * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
 
 template<class Type>
-Foam::wordList Foam::fvMotionSolverCore::cellMotionBoundaryTypes
+Foam::wordList Foam::fvMotionSolver::cellMotionBoundaryTypes
 (
     const typename GeometricField<Type, pointPatchField, pointMesh>::
     Boundary& pmUbf
diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
index 4adf5a4873d..ace6818068d 100644
--- a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
+++ b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.C
@@ -53,7 +53,7 @@ Foam::velocityLaplacianFvMotionSolver::velocityLaplacianFvMotionSolver
 )
 :
     velocityMotionSolver(mesh, dict, typeName),
-    fvMotionSolverCore(mesh),
+    fvMotionSolver(mesh),
     cellMotionU_
     (
         IOobject
diff --git a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H
index cb187022a29..1cab66f1246 100644
--- a/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H
+++ b/src/fvMotionSolver/fvMotionSolvers/velocity/laplacian/velocityLaplacianFvMotionSolver.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011-2012 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -37,7 +37,7 @@ SourceFiles
 #define velocityLaplacianFvMotionSolver_H
 
 #include "velocityMotionSolver.H"
-#include "fvMotionSolverCore.H"
+#include "fvMotionSolver.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -54,7 +54,7 @@ class motionDiffusivity;
 class velocityLaplacianFvMotionSolver
 :
     public velocityMotionSolver,
-    public fvMotionSolverCore
+    public fvMotionSolver
 {
     // Private data
 
diff --git a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict
index 91865a2a199..784fdf08617 100644
--- a/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict
+++ b/tutorials/compressible/rhoPimpleDyMFoam/annularThermalMixer/constant/dynamicMeshDict
@@ -17,9 +17,11 @@ FoamFile
 
 #include "${FOAM_CASE}/constant/caseSettings"
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        rotatingZone;
 
diff --git a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict
index 6536aa4658a..504b437c676 100644
--- a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/constant/dynamicMeshDict
@@ -15,11 +15,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        rotor;
 
@@ -32,5 +34,4 @@ solidBodyMotionFvMeshCoeffs
     }
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict
index ae204c40bcb..7df955040f3 100644
--- a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/constant/dynamicMeshDict
@@ -15,11 +15,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        inletChannel;
 
diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict b/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict
index 8bbe6619267..99ebb612343 100644
--- a/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict
+++ b/tutorials/incompressible/pimpleDyMFoam/propeller/constant/dynamicMeshDict
@@ -15,11 +15,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        innerCylinderSmall;
 
diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict
index 9800c48df47..3b93a3eda24 100644
--- a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict
+++ b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/dynamicMeshDict
@@ -15,11 +15,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        rotating;
 
diff --git a/tutorials/multiphase/compressibleInterDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict b/tutorials/multiphase/compressibleInterDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict
index d02a77dba8f..26a2e7018f9 100644
--- a/tutorials/multiphase/compressibleInterDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict
+++ b/tutorials/multiphase/compressibleInterDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     solidBodyMotionFunction SDA;
     SDACoeffs
diff --git a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict
index 9800c48df47..3b93a3eda24 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/constant/dynamicMeshDict
@@ -15,11 +15,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        rotating;
 
diff --git a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict
index d02a77dba8f..26a2e7018f9 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D/constant/dynamicMeshDict
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     solidBodyMotionFunction SDA;
     SDACoeffs
diff --git a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D3DoF/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D3DoF/constant/dynamicMeshDict
index 256d87cc3f9..cdf917c2f4e 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D3DoF/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank2D3DoF/constant/dynamicMeshDict
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     solidBodyMotionFunction SDA;
     SDACoeffs
diff --git a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D/constant/dynamicMeshDict
index d02a77dba8f..26a2e7018f9 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D/constant/dynamicMeshDict
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     solidBodyMotionFunction SDA;
     SDACoeffs
diff --git a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D3DoF/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D3DoF/constant/dynamicMeshDict
index 256d87cc3f9..cdf917c2f4e 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D3DoF/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D3DoF/constant/dynamicMeshDict
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     solidBodyMotionFunction SDA;
     SDACoeffs
diff --git a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D6DoF/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D6DoF/constant/dynamicMeshDict
index 64c23c65121..70672aefe05 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D6DoF/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/sloshingTank3D6DoF/constant/dynamicMeshDict
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     solidBodyMotionFunction tabulated6DoFMotion;
     tabulated6DoFMotionCoeffs
diff --git a/tutorials/multiphase/interDyMFoam/RAS/testTubeMixer/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/RAS/testTubeMixer/constant/dynamicMeshDict
index c6fa67e3264..1f0d4c253ea 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/testTubeMixer/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/testTubeMixer/constant/dynamicMeshDict
@@ -15,9 +15,11 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     solidBodyMotionFunction multiMotion;
 
diff --git a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict
index e24e6e7821f..7f66500fc76 100644
--- a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/constant/dynamicMeshDict
@@ -15,11 +15,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        innerCylinderSmall;
 
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict
index 6536aa4658a..d794bdfe9e9 100644
--- a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/constant/dynamicMeshDict
@@ -15,11 +15,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh   solidBodyMotionFvMesh;
+dynamicFvMesh   dynamicMotionSolverFvMesh;
 
 motionSolverLibs ( "libfvMotionSolvers.so" );
 
-solidBodyMotionFvMeshCoeffs
+solver solidBody;
+
+solidBodyCoeffs
 {
     cellZone        rotor;
 
-- 
GitLab