diff --git a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
index a67339b00f42d746765a91d0c1c717241a093646..4e99cb99e5f3af5a14eabd09c950f276b237d172 100644
--- a/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
+++ b/src/functionObjects/field/stabilityBlendingFactor/stabilityBlendingFactor.C
@@ -79,12 +79,13 @@ bool Foam::functionObjects::stabilityBlendingFactor::init(bool first)
         if (!residualPtr)
         {
              WarningInFunction
-                << residualName_ << " is not available in the database."
-                << "It won't be considered for the blended field. " << nl
-                << "Add the corresponding FO (residuals). If the FO is already "
-                << "set, you need to wait for the first iteration."
+                << "Could not find residual file : " << residualName_ << nl
+                << "The residual mode won't be considered for the blended "
+                << "field in the stability blending factor. " << nl
+                << "Add the corresponding residual function object. " << nl
+                << "If the residual function object is already set " << nl
+                << "you might need to wait for the first iteration."
                 << endl;
-
         }
         else
         {
diff --git a/src/rigidBodyDynamics/Make/files b/src/rigidBodyDynamics/Make/files
index 07612c1038ee3b1bc28ff0f410dbda86fd892c6b..2c94aeab79d894ee9be7e833bce6f857fbb0c245 100644
--- a/src/rigidBodyDynamics/Make/files
+++ b/src/rigidBodyDynamics/Make/files
@@ -32,6 +32,7 @@ restraints/linearSpring/linearSpring.C
 restraints/linearDamper/linearDamper.C
 restraints/linearAxialAngularSpring/linearAxialAngularSpring.C
 restraints/sphericalAngularDamper/sphericalAngularDamper.C
+restraints/prescribedRotation/prescribedRotation.C
 
 rigidBodyModel/rigidBodyModel.C
 rigidBodyModel/forwardDynamics.C
diff --git a/src/rigidBodyDynamics/restraints/prescribedRotation/prescribedRotation.C b/src/rigidBodyDynamics/restraints/prescribedRotation/prescribedRotation.C
new file mode 100644
index 0000000000000000000000000000000000000000..483e61c29c43c0a9d9dfb89a0f50a35abf2fca03
--- /dev/null
+++ b/src/rigidBodyDynamics/restraints/prescribedRotation/prescribedRotation.C
@@ -0,0 +1,203 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2018 OpenCFD ltd.
+     \\/     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 "prescribedRotation.H"
+#include "rigidBodyModel.H"
+#include "addToRunTimeSelectionTable.H"
+#include "Time.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace RBD
+{
+namespace restraints
+{
+    defineTypeNameAndDebug(prescribedRotation, 0);
+
+    addToRunTimeSelectionTable
+    (
+        restraint,
+        prescribedRotation,
+        dictionary
+    );
+}
+}
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::RBD::restraints::prescribedRotation::prescribedRotation
+(
+    const word& name,
+    const dictionary& dict,
+    const rigidBodyModel& model
+)
+:
+    restraint(name, dict, model),
+    omegaSet_(model_.time(), "omega")
+{
+    read(dict);
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::RBD::restraints::prescribedRotation::~prescribedRotation()
+{}
+
+
+// * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
+
+void Foam::RBD::restraints::prescribedRotation::restrain
+(
+    scalarField& tau,
+    Field<spatialVector>& fx
+) const
+{
+    vector refDir = rotationTensor(vector(1, 0, 0), axis_) & vector(0, 1, 0);
+
+    vector oldDir = refQ_ & refDir;
+    vector newDir = model_.X0(bodyID_).E() & refDir;
+
+    if (mag(oldDir & axis_) > 0.95 || mag(newDir & axis_) > 0.95)
+    {
+        // Directions close to the axis, changing reference
+        refDir = rotationTensor(vector(1, 0, 0), axis_) & vector(0, 0, 1);
+        oldDir = refQ_ & refDir;
+        newDir = model_.X0(bodyID_).E() & refDir;
+    }
+
+    // Removing axis component from oldDir and newDir and normalising
+    oldDir -= (axis_ & oldDir)*axis_;
+    oldDir /= (mag(oldDir) + VSMALL);
+
+    newDir -= (axis_ & newDir)*axis_;
+    newDir /= (mag(newDir) + VSMALL);
+
+    scalar theta = mag(acos(min(oldDir & newDir, 1.0)));
+
+    // Temporary axis with sign information
+    vector a = (oldDir ^ newDir);
+
+    // Ensure a is in direction of axis
+    a = (a & axis_)*axis_;
+
+    scalar magA = mag(a);
+
+    if (magA > VSMALL)
+    {
+        a /= magA;
+    }
+    else
+    {
+        a = Zero;
+    }
+
+    // Adding rotation to a given body
+    vector omega = model_.v(model_.master(bodyID_)).w();
+    scalar Inertia = mag(model_.I(model_.master(bodyID_)).Ic());
+
+
+    // from the definition of the angular momentum:
+    //  moment = Inertia*ddt(omega)
+    // with time step 1:
+    //  moment = Inertia*(omega_wanted - omega)
+    vector moment
+    (
+        (Inertia * (omegaSet_.value(model_.time().value()) - omega) & a) * a
+    );
+
+    if (model_.debug)
+    {
+        Info<< " angle  " << theta*sign(a & axis_) << endl
+            << " moment " << moment << endl
+            << " oldDir " << oldDir << endl
+            << " newDir " << newDir << endl
+            << " refDir " << refDir
+            << endl;
+    }
+
+    // Accumulate the force for the restrained body
+    fx[bodyIndex_] += spatialVector(moment, Zero);
+}
+
+
+bool Foam::RBD::restraints::prescribedRotation::read
+(
+    const dictionary& dict
+)
+{
+    restraint::read(dict);
+
+    refQ_ = coeffs_.lookupOrDefault<tensor>("referenceOrientation", I);
+
+    if (mag(mag(refQ_) - sqrt(3.0)) > 1e-9)
+    {
+        FatalErrorInFunction
+            << "referenceOrientation " << refQ_ << " is not a rotation tensor. "
+            << "mag(referenceOrientation) - sqrt(3) = "
+            << mag(refQ_) - sqrt(3.0) << nl
+            << exit(FatalError);
+    }
+
+    axis_ = coeffs_.lookup("axis");
+
+    scalar magAxis(mag(axis_));
+
+    if (magAxis > VSMALL)
+    {
+        axis_ /= magAxis;
+    }
+    else
+    {
+        FatalErrorInFunction
+            << "axis has zero length"
+            << abort(FatalError);
+    }
+
+    // Read the actual entry
+    omegaSet_.reset(coeffs_);
+
+    return true;
+}
+
+
+void Foam::RBD::restraints::prescribedRotation::write
+(
+    Ostream& os
+) const
+{
+    restraint::write(os);
+
+    os.writeEntry("referenceOrientation", refQ_);
+    os.writeEntry("axis", axis_);
+    omegaSet_.writeData(os);
+}
+
+
+// ************************************************************************* //
diff --git a/src/rigidBodyDynamics/restraints/prescribedRotation/prescribedRotation.H b/src/rigidBodyDynamics/restraints/prescribedRotation/prescribedRotation.H
new file mode 100644
index 0000000000000000000000000000000000000000..dfd2ec5d0f6fcdb7fb60460e7c64e94ddbee1720
--- /dev/null
+++ b/src/rigidBodyDynamics/restraints/prescribedRotation/prescribedRotation.H
@@ -0,0 +1,145 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2018 OpenCFD Ltd.
+     \\/     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::RBD::restraints::prescribedRotation
+
+Group
+    grpRigidBodyDynamicsRestraints
+
+Description
+    Restraint setting angular velocity of the rigid body.
+    Developed from the linear axial angular spring restraint.
+
+    Adds a rotation along given axis to the body.
+    Used for a combination of 6DOF bodies where one is driven by 6DOF and
+    the other attached to it using specified rotation
+    in the local reference frame.
+
+Usage
+    \table
+        Property     | Description                  | Required | Default value
+        referenceOrientation | Orientation          | no       | I
+        axis         | Rotation axis (in reference) | yes      |
+        omega        | Angular velocity (rad/s)     | yes      |
+    \endtable
+
+SourceFiles
+    prescribedRotation.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef prescribedRotation_H
+#define prescribedRotation_H
+
+#include "rigidBodyRestraint.H"
+#include "TimeFunction1.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+namespace RBD
+{
+namespace restraints
+{
+
+/*---------------------------------------------------------------------------*\
+                   Class prescribedRotation Declaration
+\*---------------------------------------------------------------------------*/
+
+class prescribedRotation
+:
+    public restraint
+{
+    // Private data
+
+        //- Reference orientation where there is no moment
+        tensor refQ_;
+
+        //- Global unit axis around which the motion is sprung
+        vector axis_;
+
+        //- Rotational velocity [rad/sec]
+        TimeFunction1<vector> omegaSet_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("prescribedRotation");
+
+
+    // Constructors
+
+        //- Construct from components
+        prescribedRotation
+        (
+            const word& name,
+            const dictionary& dict,
+            const rigidBodyModel& model
+        );
+
+        //- Construct and return a clone
+        virtual autoPtr<restraint> clone() const
+        {
+            return autoPtr<restraint>
+            (
+                new prescribedRotation(*this)
+            );
+        }
+
+
+    //- Destructor
+    virtual ~prescribedRotation();
+
+
+    // Member Functions
+
+        //- Accumulate the retraint internal joint forces into the tau field and
+        //  external forces into the fx field
+        virtual void restrain
+        (
+            scalarField& tau,
+            Field<spatialVector>& fx
+        ) const;
+
+        //- Update properties from given dictionary
+        virtual bool read(const dictionary& dict);
+
+        //- Write
+        virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace RBD
+} // End namespace RBD
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C
index b657ea270cb0f93c4e21b3122a1a37af650ae3ec..fc207d9c897bdce5cb020b5eb076da5256724949 100644
--- a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C
+++ b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.C
@@ -163,16 +163,22 @@ Foam::label Foam::RBD::rigidBodyModel::join_
 
 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
 
-Foam::RBD::rigidBodyModel::rigidBodyModel()
+Foam::RBD::rigidBodyModel::rigidBodyModel(const Time& time)
 :
+    time_(time),
     g_(Zero)
 {
     initializeRootBody();
 }
 
 
-Foam::RBD::rigidBodyModel::rigidBodyModel(const dictionary& dict)
+Foam::RBD::rigidBodyModel::rigidBodyModel
+(
+    const Time& time,
+    const dictionary& dict
+)
 :
+    time_(time),
     g_(Zero)
 {
     initializeRootBody();
diff --git a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.H b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.H
index 52c4c2dfea1390997df145ac5220e048616148cc..c210efca43def89ec4318f55863a42723282bfe0 100644
--- a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.H
+++ b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModel.H
@@ -58,6 +58,10 @@ SourceFiles
 
 namespace Foam
 {
+
+// Forward declaration of friend functions and operators
+class Time;
+
 namespace RBD
 {
 
@@ -93,6 +97,9 @@ class rigidBodyModel
 
 protected:
 
+        //- Reference to time database
+        const Time& time_;
+
     // Protected data representing the model structure
 
         //- List of the bodies.
@@ -211,10 +218,10 @@ public:
     // Constructors
 
         //- Null-constructor which adds the single root-body at the origin
-        rigidBodyModel();
+        rigidBodyModel(const Time& time);
 
         //- Construct from dictionary
-        rigidBodyModel(const dictionary& dict);
+        rigidBodyModel(const Time& time, const dictionary& dict);
 
 
     //- Destructor
@@ -223,6 +230,9 @@ public:
 
     // Member Functions
 
+        //- Return the time
+        inline const Time& time() const;
+
         //- Return the number of bodies in the model (bodies().size())
         inline label nBodies() const;
 
diff --git a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModelI.H b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModelI.H
index b2fc636ff5e090007db1979e11f8a837ecaa8878..3b398fd86684cdc40f852fe542ede098e9055021 100644
--- a/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModelI.H
+++ b/src/rigidBodyDynamics/rigidBodyModel/rigidBodyModelI.H
@@ -25,6 +25,12 @@ License
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
+inline const Foam::Time& Foam::RBD::rigidBodyModel::time() const
+{
+    return time_;
+}
+
+
 inline Foam::label Foam::RBD::rigidBodyModel::nBodies() const
 {
     return bodies_.size();
diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
index 84128672974e23286ae4377d4ee94e5b195e8a3b..de24982df7a395c256c1f53478afb0bd64792a92 100644
--- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
+++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.C
@@ -42,9 +42,9 @@ void Foam::RBD::rigidBodyMotion::initialize()
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::RBD::rigidBodyMotion::rigidBodyMotion()
+Foam::RBD::rigidBodyMotion::rigidBodyMotion(const Time& time)
 :
-    rigidBodyModel(),
+    rigidBodyModel(time),
     motionState_(*this),
     motionState0_(*this),
     aRelax_(1.0),
@@ -55,10 +55,11 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion()
 
 Foam::RBD::rigidBodyMotion::rigidBodyMotion
 (
+    const Time& time,
     const dictionary& dict
 )
 :
-    rigidBodyModel(dict),
+    rigidBodyModel(time, dict),
     motionState_(*this, dict),
     motionState0_(motionState_),
     X00_(X0_.size()),
@@ -78,11 +79,12 @@ Foam::RBD::rigidBodyMotion::rigidBodyMotion
 
 Foam::RBD::rigidBodyMotion::rigidBodyMotion
 (
+    const Time& time,
     const dictionary& dict,
     const dictionary& stateDict
 )
 :
-    rigidBodyModel(dict),
+    rigidBodyModel(time, dict),
     motionState_(*this, stateDict),
     motionState0_(motionState_),
     X00_(X0_.size()),
diff --git a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
index b54afa797457bc760098b7de53ac6b35e1afcef8..9f2c40210f60f494b51b7f5353450a1b78a92dc0 100644
--- a/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
+++ b/src/rigidBodyDynamics/rigidBodyMotion/rigidBodyMotion.H
@@ -55,6 +55,10 @@ SourceFiles
 
 namespace Foam
 {
+
+// Forward declarations
+class Time;
+
 namespace RBD
 {
 
@@ -112,17 +116,19 @@ public:
     // Constructors
 
         //- Construct null
-        rigidBodyMotion();
+        rigidBodyMotion(const Time& time);
 
         //- Construct from dictionary
         rigidBodyMotion
         (
+            const Time& time,
             const dictionary& dict
         );
 
         //- Construct from constant and state dictionaries
         rigidBodyMotion
         (
+            const Time& time,
             const dictionary& dict,
             const dictionary& stateDict
         );
diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C
index 2f35d4de4d7cc8ac11fba8719f3a2eade81c1086..93f2fbffdedfa51e10a9e0c224eddd5c3c8f5ab4 100644
--- a/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C
+++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotion/rigidBodyMeshMotion.C
@@ -90,6 +90,7 @@ Foam::rigidBodyMeshMotion::rigidBodyMeshMotion
     displacementMotionSolver(mesh, dict, typeName),
     model_
     (
+        mesh.time(),
         coeffDict(),
         IOobject
         (
diff --git a/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C b/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C
index 8055ba7611da80041d775c1241cd93ba19bf7b83..56ac81c80ec5e10774a30bf98dd3b977ba0ac46d 100644
--- a/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C
+++ b/src/rigidBodyMeshMotion/rigidBodyMeshMotionSolver/rigidBodyMeshMotionSolver.C
@@ -73,6 +73,7 @@ Foam::rigidBodyMeshMotionSolver::rigidBodyMeshMotionSolver
     motionSolver(mesh, dict, typeName),
     model_
     (
+        mesh.time(),
         coeffDict(),
         IOobject
         (
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/U b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/U
new file mode 100644
index 0000000000000000000000000000000000000000..6b03790013a56e01395f388978c1e1086c671ba6
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/U
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    #includeEtc "caseDicts/setConstraintTypes"
+
+    defaultFaces
+    {
+        //type            slip;
+        type            uniformFixedValue;
+        uniformValue    (0 0 0);
+    }
+
+    "(hullWall|propellerWall|rudderWall)"
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+
+   atmosphere
+   {
+       type            pressureInletOutletVelocity;
+       value           uniform (0 0 0);
+   }
+
+//
+//    right1
+//    {
+//        type            zeroGradient;   //calculated;
+//        value           $internalField;
+//    }
+
+    "overset.*"
+    {
+        type            overset;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/alpha.water b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/alpha.water
new file mode 100644
index 0000000000000000000000000000000000000000..17302e8e5544faa3f39ff1219bfb7cc923b65f6d
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/alpha.water
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1612+                                |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+
+boundaryField
+{
+    #includeEtc "caseDicts/setConstraintTypes"
+
+    "overset.*"
+    {
+        type            overset;
+        value           uniform 1;
+    }
+
+    hullWall
+    {
+        type            zeroGradient;
+    }
+    propellerWall
+    {
+        type            zeroGradient;
+    }
+    rudderWall
+    {
+        type            zeroGradient;
+    }
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    defaultFaces
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/alpha.water.org b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/alpha.water.org
new file mode 100644
index 0000000000000000000000000000000000000000..533cf5457cdef62f4869cbacacc5f55197a92897
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/alpha.water.org
@@ -0,0 +1,55 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1612+                                |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      alpha.water;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+
+boundaryField
+{
+    "overset.*"
+    {
+        type            overset;
+        value           uniform 1;
+    }
+    hullWall
+    {
+        type            zeroGradient;
+    }
+    propellerWall
+    {
+        type            zeroGradient;
+    }
+    rudderWall
+    {
+        type            zeroGradient;
+    }
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    defaultFaces
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/motionScale b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/motionScale
new file mode 100644
index 0000000000000000000000000000000000000000..f6ab87038a89c376558a5cc73139d1a877acf076
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/motionScale
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1706                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       pointScalarField;
+    location    "0";
+    object      motionScale;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+
+internalField   uniform 0;
+
+boundaryField
+{
+    overset1
+    {
+        type            calculated;
+    }
+    overset2
+    {
+        type            calculated;
+    }
+    overset3
+    {
+        type            calculated;
+    }
+    hullWall
+    {
+        type            calculated;
+    }
+    propellerWall
+    {
+        type            calculated;
+    }
+    rudderWall
+    {
+        type            calculated;
+    }
+    atmosphere
+    {
+        type            calculated;
+    }
+    defaultFaces
+    {
+        type            calculated;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/p_rgh b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..ee94d70cb33f90d5c96c7260ec211bd389aafc9c
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/p_rgh
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      p_rgh;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    #includeEtc "caseDicts/setConstraintTypes"
+
+    "(hullWall|propellerWall|rudderWall|defaultFaces)"
+    {
+        type            fixedFluxPressure;
+    }
+
+   atmosphere
+   {
+        type            totalPressure;
+        p0              uniform 0;
+        U               U;
+        phi             phi;
+        rho             rho;
+        psi             none;
+        gamma           1;
+        value           uniform 0;
+   }
+  defaultFaces
+  {
+      type            fixedFluxPressure;
+  }
+//
+//    right1
+//    {
+//        type            fixedValue;   //calculated;
+//        value           $internalField;
+//    }
+
+    "overset.*"
+    {
+        patchType       overset;
+        type           fixedFluxPressure;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/pointDisplacement b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/pointDisplacement
new file mode 100644
index 0000000000000000000000000000000000000000..097cbb23e0e92bd61e25961613870b3359afda99
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/pointDisplacement
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       pointVectorField;
+    object      pointDisplacement;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 0 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    ".*"
+    {
+        type            uniformFixedValue;
+        uniformValue    (0 0 0);
+    }
+
+    "(hullWall|propellerWall|rudderWall)"
+    {
+         type            calculated;
+        value           uniform (0 0 0);
+    }
+    oversetPatch
+    {
+        patchType       overset;
+        type            zeroGradient;
+    }
+    "overset.*"
+    {
+        patchType       overset;
+        type            zeroGradient;
+    }
+    atmosphere
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    defaultFaces
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/zoneID b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/zoneID
new file mode 100644
index 0000000000000000000000000000000000000000..646dc3947529e36512b064181890b51622f12e47
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/0.orig/zoneID
@@ -0,0 +1,64 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v1706                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      zoneID;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+
+internalField   uniform 0;
+
+boundaryField
+{
+    #includeEtc "caseDicts/setConstraintTypes"
+    overset1
+    {
+        type            overset;
+        value           uniform 0;
+    }
+    overset2
+    {
+        type            overset;
+        value           uniform 0;
+    }
+    overset3
+    {
+        type            overset;
+        value           uniform 0;
+    }
+    hullWall
+    {
+        type            zeroGradient;
+    }
+    propellerWall
+    {
+        type            zeroGradient;
+    }
+    rudderWall
+    {
+        type            zeroGradient;
+    }
+    atmosphere
+    {
+        type            zeroGradient;
+    }
+    defaultFaces
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allclean b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..6be736ea3ca30d45035f84d87f0514b7dcca76f2
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allclean
@@ -0,0 +1,12 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cleanCase
+rm -f constant/polyMesh/boundary
+rm -f constant/polyMesh/zoneID
+rm -f constant/cellInterpolationWeight
+
+rm -rf 0
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allrun b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..d5979700f56259aa8e38bb03854d1e620833b4bb
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allrun
@@ -0,0 +1,10 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+./Allrun.pre
+
+runApplication decomposePar
+runParallel overInterDyMFoam
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allrun.pre b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allrun.pre
new file mode 100755
index 0000000000000000000000000000000000000000..31f8196390ea87d6496e6a2a91adb86248fd9c44
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/Allrun.pre
@@ -0,0 +1,37 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # Run from this directory
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+
+#runApplication -s 1 topoSet -dict ./system/topoSetDictRefine
+#runApplication -s 1 refineMesh -overwrite -dict ./system/refineMeshDict
+runApplication -s 1 topoSet -dict ./system/topoSetDictRefine
+runApplication -s 1 refineMesh -overwrite -dict ./system/refineMeshDict
+runApplication -s 2 topoSet -dict ./system/topoSetDictRefine
+runApplication -s 2 refineMesh -overwrite -dict ./system/refineMeshDict
+# Select cellSets
+runApplication -s 3 topoSet -dict ./system/topoSetDictHull
+
+runApplication -s 3 subsetMesh keepBox -patch hullWall -overwrite
+
+# Select cellSets
+runApplication -s 4 topoSet -dict ./system/topoSetDictPropeller
+
+runApplication -s 4 subsetMesh keepBox -patch propellerWall -overwrite
+
+# Select cellSets
+runApplication -s 5 topoSet -dict ./system/topoSetDictRudder
+
+runApplication -s 5 subsetMesh keepBox -patch rudderWall -overwrite
+
+restore0Dir
+
+# Use cellSets to write zoneID
+runApplication -s 1 setFields -dict system/setFieldsDict
+runApplication -s 2 setFields -dict system/setFieldsDictWaterLevel
+
+
+
+touch rbm.foam
+#------------------------------------------------------------------------------
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/dynamicMeshDict b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..de53a7d4241b0a522cdf2e289481efd5264a13fc
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/dynamicMeshDict
@@ -0,0 +1,135 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus.develop                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      dynamicMeshDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+motionSolverLibs    ("librigidBodyMeshMotion.so");
+
+dynamicFvMesh       dynamicOversetFvMesh;
+
+motionSolver        rigidBodyMotion;
+
+// rigidBodyMotionCoeffs
+//  {
+    report          on;
+
+    solver
+    {
+        type Newmark;
+        gamma   0.1;    // Velocity integration coefficient
+        beta    0.1;    // Position integration coefficient
+    }
+
+    accelerationRelaxation 1.0;
+
+    bodies
+    {
+        hull
+        {
+            type            rigidBody;
+            parent          root;
+
+            // Cuboid mass
+            mass            9;
+            rho             1;
+            inertia         (0.05 0 0 0.05 0 0.05);
+            centreOfMass    (0.21 -0.07 0);
+            transform       (1 0 0 0 1 0 0 0 1) (0.21 0 0);
+
+            joint
+            {
+                type            composite;
+                joints
+                (
+                    {
+                        type Pxyz;
+                    }
+                    {
+                        type Rxyz;
+                    }
+                );
+            }
+
+            patches         (hullWall);
+            innerDistance   100;
+            outerDistance   200;
+        } // end hull
+
+        propeller
+        {
+
+            type            rigidBody;
+            parent          hull;
+
+            centreOfMass    (-0.228 0.0 0);
+            mass            1;
+            rho             1;
+            inertia         (0.001 0 0 0.001 0 0.001);
+            transform       (1 0 0 0 1 0 0 0 1) (-0.228 0 0);
+            patches        (propellerWall);
+            innerDistance   100;
+            outerDistance   200;
+            joint
+            {
+                type            Rx;
+            }
+        } //end propeller
+
+        rudder
+        {
+            type            rigidBody;
+            parent          hull;//root;
+            centreOfMass    (-0.265 0 0);
+            mass            1;
+            rho             1;
+            inertia         (0.001 0 0 0.001 0 0.001);
+            transform       (1 0 0 0 1 0 0 0 1) (-0.265 0 0);
+            patches        (rudderWall);
+            innerDistance   100;
+            outerDistance   200;
+            joint
+            {
+                type            Ry;
+            }
+        }
+    }
+
+    restraints
+    {
+        rudderRotation
+        {
+            type                    prescribedRotation;
+            body                    rudder;
+            referenceOrientation    (1 0 0 0 1 0 0 0 1);
+            axis                    (0 1 0);
+            omega                   (0 26 0);
+        }
+        propellerRotation
+        {
+            type                    prescribedRotation;
+            body                    propeller;
+            referenceOrientation    (1 0 0 0 1 0 0 0 1);
+            axis                    (1 0 0);
+            omega                   table
+            (
+                (0 (16 0 0))
+            );
+        }
+    }
+
+//  } // end of rigidBodyMotionCoeffs
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/g b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..37ac930c7db588803f9e9432067e6910aa441b3e
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/g
@@ -0,0 +1,20 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           (0 -9 0);//( 0 -9.81 0 );
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/transportProperties b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..1703656898b4c78a65cbba1cc98b473b08c2912b
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/transportProperties
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phases (water air);
+
+water
+{
+    transportModel  Newtonian;
+    nu              nu [ 0 2 -1 0 0 0 0 ] 1e-06;
+    rho             rho [ 1 -3 0 0 0 0 0 ] 998.2;
+}
+
+air
+{
+    transportModel  Newtonian;
+    nu              nu [ 0 2 -1 0 0 0 0 ] 1.48e-05;
+    rho             rho [ 1 -3 0 0 0 0 0 ] 1;
+}
+
+sigma           sigma [ 1 0 -2 0 0 0 0 ] 0;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/turbulenceProperties b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/turbulenceProperties
new file mode 100644
index 0000000000000000000000000000000000000000..9abf14eeecd195a74b7b95b2cb31c43de9be98fd
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/constant/turbulenceProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      turbulenceProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType   laminar;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/blockMeshDict b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..3ecf7ddf4a1d97ca8449ec7afd6c509c90abaf37
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/blockMeshDict
@@ -0,0 +1,158 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+scale 1;
+
+vertices
+(
+    // backgroundMesh
+    ( -1.00   -1    -1) // 0
+    (  1.00   -1    -1)
+    (  1.00    1.0  -1)
+    ( -1.00    1.0  -1)
+    ( -1.00   -1     1) // 4
+    (  1.00   -1     1)
+    (  1.00    1.0   1)
+    ( -1.00    1.0   1)
+
+    // hullBox
+    (  0.0  -0.20  -0.2)  // 8
+    (  0.80  -0.20  -0.2)
+    (  0.80   0.20  -0.2)  // 10
+    (  0.0   0.20  -0.2)
+    (  0.0  -0.20   0.2)  // 12
+    (  0.80  -0.20   0.2)
+    (  0.80   0.20   0.2)  // 14
+    (  0.0   0.20   0.2)
+
+    // propeller
+    ( -0.03   -0.08  -0.08)  // 16
+    (  0.04   -0.08  -0.08)
+    (  0.04    0.08  -0.08)  // 18
+    ( -0.03    0.08  -0.08)
+    ( -0.03   -0.08   0.08)  // 20
+    (  0.04   -0.08  0.08)
+    (  0.04    0.08  0.08)  // 22
+    ( -0.03    0.08  0.08)
+
+    // rudder
+    ( -0.15   -0.1  -0.05)  // 24
+    ( -0.028   -0.1  -0.05)
+    ( -0.028    0.1  -0.05)  // 26
+    ( -0.15    0.1  -0.05)
+    ( -0.15   -0.1   0.05)  // 28
+    ( -0.028   -0.1  0.05)
+    ( -0.028    0.1  0.05)  // 30
+    ( -0.15    0.1  0.05)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) background (80 80 40) simpleGrading (1 1 1)
+
+    hex (8 9 10 11 12 13 14 15) hullBox (20 20 20) simpleGrading (1 1 1)
+
+    hex (16 17 18 19 20 21 22 23) propeller (10 20 20) simpleGrading (1 1 1)
+
+    hex (24 25 26 27 28 29 30 31) rudder (20 20 20) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+boundary
+(
+    overset1  //oversetHull
+    {
+        type        overset;
+        faces
+        (
+            ( 8 12 15 11)
+            (10 14 13  9)
+            (11 15 14 10)
+            ( 9 13 12  8)
+            ( 9  8 11 10)
+            (12 13 14 15)
+        );
+    }
+
+    overset2   //oversetPropeller
+    {
+        type        overset;
+        faces
+        (
+            (16 20 23 19)
+            (18 22 21 17)
+            (19 23 22 18)
+            (17 21 20 16)
+            (20 21 22 23)
+            (19 18 17 16)
+        );
+    }
+
+    overset3   //oversetRudder
+    {
+        type        overset;
+        faces
+        (
+            (24 28 31 27)
+            (26 30 29 25)
+            (28 29 30 31)
+            (25 24 27 26)
+            (27 31 30 26)
+            (24 25 29 28)
+        );
+    }
+
+
+        // Populated by subsetMesh
+        hullWall
+        {
+            type wall;
+            faces ();
+        }
+        propellerWall
+        {
+            type wall;
+            faces ();
+        }
+        rudderWall
+        {
+            type wall;
+            faces ();
+        }
+
+
+    atmosphere
+    {
+        type patch;
+        faces
+        (
+            (3 7 6 2)
+        //    (1 5 4 0)
+        );
+    }
+
+    defaultFaces
+    {
+      type wall;
+      faces
+      ();
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/controlDict b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..42399a665c97c436aa608b35c1166a28029f27e6
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/controlDict
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+
+libs            ("liboverset.so" "librigidBodyDynamics.so");
+
+application     overInterDyMFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         1;
+
+deltaT          0.0001;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.005;
+
+purgeWrite      0;
+
+writeFormat     binary;
+
+writePrecision  10;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable true;
+
+adjustTimeStep  yes;
+
+//maxCo           1;
+maxCo           5.0;
+maxAlphaCo      5.0;
+maxDeltaT       1;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/decomposeParDict b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..58a5d192a3f32ac13e0750d981ec022f7b765aec
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/decomposeParDict
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains  4;
+
+
+method          hierarchical;
+
+coeffs
+{
+    n           (2 2 1);
+   // delta       0.001;
+   // order       xyz;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSchemes b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..eca84fbcc590afaabc67571c7a4e22b1902b7c3f
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSchemes
@@ -0,0 +1,72 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    div(rhoPhi,U)   Gauss upwind ;//limitedLinearV 1;
+    div(U)          Gauss upwind;//linear;
+    div(phi,alpha)  Gauss vanLeer;
+    div(phirb,alpha) Gauss linear;
+    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
+
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,omega) Gauss upwind;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+oversetInterpolation
+{
+    method          inverseDistance;
+}
+oversetInterpolationRequired
+{
+    alpha.water;
+}
+
+fluxRequired
+{
+//    default         no;
+    // p_rgh;
+    // pcorr;
+    // alpha.water;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSchemes_VOF b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSchemes_VOF
new file mode 100644
index 0000000000000000000000000000000000000000..ebf1e23fe5605e29d4c6153fe94cbe60490c1204
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSchemes_VOF
@@ -0,0 +1,69 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    div(rhoPhi,U)   Gauss limitedLinearV 1;
+    div(U)          Gauss linear;
+    div(phi,alpha)  Gauss vanLeer;
+    div(phirb,alpha) Gauss linear;
+    div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
+
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div(phi,omega) Gauss upwind;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+oversetInterpolation
+{
+    method          inverseDistance;
+}
+
+fluxRequired
+{
+    default         no;
+    p;
+  //  p_rgh;
+  //  pcorr;
+ //   alpha.water;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSolution b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..62ccc0aba4b7b6d0c35501df2380dc028ef4ade9
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/fvSolution
@@ -0,0 +1,112 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+
+    "cellDisplacement.*"
+    {
+        solver          PCG;
+        preconditioner  DIC;
+
+        tolerance       1e-06;
+        relTol          0;
+        maxIter         100;
+    }
+
+    "alpha.water.*"
+    {
+        nAlphaCorr      3;
+        nAlphaSubCycles 2;
+        cAlpha          1;
+        icAlpha         0;
+
+        MULESCorr       yes;
+        nLimiterIter    5;
+        alphaApplyPrevCorr  no;
+
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    "pcorr.*"
+    {
+        solver          PCG;
+        preconditioner  DIC;
+        tolerance       1e-9;
+        relTol          0;
+    }
+
+    p_rgh
+    {
+        solver          PBiCGStab;
+        preconditioner  DILU;
+        tolerance       1e-9;
+        relTol          0.01;
+    }
+    p_rghFinal
+    {
+        $p_rgh;
+        relTol          0;
+    }
+
+
+    "(U|k|omega|epsilon).*"
+    {
+        solver          smoothSolver;
+        smoother        symGaussSeidel;
+        tolerance       1e-08;
+        relTol          0;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor   no;//yes;
+    nOuterCorrectors    2;
+    nCorrectors         2;
+    nNonOrthogonalCorrectors 0;
+
+    ddtCorr                     yes;
+    correctPhi                 no;
+    massFluxInterpolation      no;
+
+    moveMeshOuterCorrectors no;
+    turbOnFinalIterOnly no;
+
+    oversetAdjustPhi    no;
+
+}
+
+relaxationFactors
+{
+    fields
+    {
+    }
+    equations
+    {
+            ".*" 1;
+    }
+}
+
+cache
+{
+        grad(U);
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/refineMeshDict b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/refineMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..ad4d6be563a6ea02c7ee2e09fe18cffe7c9db759
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/refineMeshDict
@@ -0,0 +1,43 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      refineMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+set             refineSet;
+
+coordinateSystem global;
+
+globalCoeffs
+{
+    tan1            (1 0 0);
+    tan2            (0 1 0);
+}
+/*
+patchLocalCoeffs
+{
+    patch           outside;
+    tan1            (1 0 0);
+}*/
+
+directions      ( tan1 tan2 );
+
+useHexTopology  no;
+
+geometricCut    yes;
+
+writeMesh       no;
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/setFieldsDict b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..95237626711b4a6935fbef604e1ca74edf4769de
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/setFieldsDict
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue zoneID 123
+);
+
+regions
+(
+    // Set cell values
+    // (does zerogradient on boundaries)
+    cellToCell
+    {
+        set bgr0;
+
+        fieldValues
+        (
+            volScalarFieldValue zoneID 0
+        );
+    }
+
+    cellToCell
+    {
+        set hullBox0;
+
+        fieldValues
+        (
+            volScalarFieldValue zoneID 1
+        );
+    }
+
+    cellToCell
+    {
+        set propeller0;
+
+        fieldValues
+        (
+            volScalarFieldValue zoneID 2
+        );
+    }
+
+    cellToCell
+    {
+        set rudder0;
+
+        fieldValues
+        (
+            volScalarFieldValue zoneID 3
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/setFieldsDictWaterLevel b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/setFieldsDictWaterLevel
new file mode 100644
index 0000000000000000000000000000000000000000..d2790670c7bb4a4d277be4e744e579aa4048b467
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/setFieldsDictWaterLevel
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus                                  |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.water 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box ( -100 -100 -100 ) ( 100 0.0 100 );
+        fieldValues ( volScalarFieldValue alpha.water 1 );
+    }
+
+    boxToFace
+    {
+        box ( -100 -100 -100 ) ( 100 0.0 100 );
+        fieldValues ( volScalarFieldValue alpha.water 1 );
+    }
+
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictHull b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictHull
new file mode 100644
index 0000000000000000000000000000000000000000..356b4a37b5a1e9dc360a4481bbcc843876b26ecd
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictHull
@@ -0,0 +1,138 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    {
+      name    bgr0;       // all around bgr
+  //    set     hullBox0set;
+      type    cellSet;
+      action  new;
+      source  zoneToCell;
+      sourceInfo
+      {
+          name    background;
+      }
+    }
+    {
+        name    hullBox0;       // all around bgr
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    hullBox;
+        }
+    }
+    {
+        name    propeller0;       // all around bgr
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    propeller;
+        }
+    }
+    {
+        name    rudder0;       // all around bgr
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    rudder;
+        }
+    }
+
+    {
+        name    box;   //all cells
+        type    cellSet;
+        action  new;
+        source  cellToCell;
+        sourceInfo
+        {
+            set hullBox0;
+        }
+    }
+
+
+    {
+        name    box;   // hole in mesh
+        type    cellSet;
+        action  subset;
+        source  boxToCell;
+        sourceInfo
+        {
+            boxes
+            (
+                 (0.05 -0.082 -0.1)(0.52 0.052 0.1) //hullBox
+            //      (0 -1 -1)(5 1 1) //hullBox
+            //     (-0.02 -0.05 -0.03)( -0.01 0.05 0.03) //propeller
+            //     (-0.08 -0.08 -0.03)(-0.06 0.08 0.03) //rudder
+            );
+        }
+    }
+
+    {
+        name    box;
+        type    cellSet;
+        action  invert;
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  new;
+        source  cellToCell;
+        sourceInfo
+        {
+            set box;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set propeller0;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set rudder0;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set bgr0;
+        }
+    }
+
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictHull_pokus b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictHull_pokus
new file mode 100644
index 0000000000000000000000000000000000000000..185f61ad9cdd43ffa360bbcd81f9c76632305973
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictHull_pokus
@@ -0,0 +1,109 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    {
+        name    hullBox0;       // all around bgr
+        type    cellSet;
+        action  new;
+        source  regionToCell;
+        sourceInfo
+        {
+            insidePoints ((0.3 0.001 0.001));
+        }
+    }
+
+
+
+    // Select box to remove from region 1 and 2
+
+    // {
+    //     name    box; //all but hullBox0 region
+    //     type    cellSet;
+    //     action  new;
+    //     source  cellToCell;
+    //     sourceInfo
+    //     {
+    //         set c0;
+    //     }
+    // }
+
+    {
+        name    box; // all cells including hullBox0
+        type    cellSet;
+        action  new; // was: add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set hullBox0;
+        }
+    }
+
+
+    {
+        name    box;
+        type    cellSet;
+        action  subset;
+        source  boxToCell;
+        sourceInfo
+        {
+            boxes
+            (
+                 (0.0501 -0.1 -0.1)(0.5 0.1 0.1) //hullBox
+            //      (0 -1 -1)(5 1 1) //hullBox
+            //     (-0.02 -0.05 -0.03)( -0.01 0.05 0.03) //propeller
+            //     (-0.08 -0.08 -0.03)(-0.06 0.08 0.03) //rudder
+            );
+        }
+    }
+
+    {
+        name    box;
+        type    cellSet;
+        action  invert;
+    }
+
+    {
+        name    c0;            //copy
+        type    cellSet;
+        action  new;
+        source  cellToCell;
+        sourceInfo
+        {
+            set hullBox0;
+        }
+    }
+
+    {
+        name    c0;          //all cells but hullBox0 region
+        type    cellSet;
+        action  invert;
+    }
+    {
+        name    box; // all cells including hullBox0
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set c0;
+        }
+    }
+
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictPropeller b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictPropeller
new file mode 100644
index 0000000000000000000000000000000000000000..e16c649d14a980f9c03c73622133700a075ed453
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictPropeller
@@ -0,0 +1,261 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    {
+      name    bgr0;       // all around bgr
+  //    set     hullBox0set;
+      type    cellSet;
+      action  new;
+      source  zoneToCell;
+      sourceInfo
+      {
+          name    background;
+      }
+    }
+    {
+        name    hullBox0;       // all around hull
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    hullBox;
+        }
+    }
+    {
+        name    propeller0;       // all around propeller
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    propeller;
+        }
+    }
+    {
+        name    rudder0;       // all around rudder
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    rudder;
+        }
+    }
+
+    {
+        name    box;   //all cells
+        type    cellSet;
+        action  new;
+        source  cellToCell;
+        sourceInfo
+        {
+            set propeller0;
+        }
+    }
+
+
+    {
+        name    box;   // hole in mesh
+        type    cellSet;
+        action  subset;
+        source  boxToCell;
+        sourceInfo
+        {
+            boxes
+            (
+            //     (0.15 -0.1 -0.1)(0.5 0.1 0.1) //hullBox
+            (-0.0199 -0.0499 -0.0499)( -0.00998 0.0499 0.0499) //propeller
+          //  (-0.10 -0.0749 -0.00499)(-0.050 0.0749 0.00499) //rudder
+            );
+        }
+    }
+
+    {
+        name    box;
+        type    cellSet;
+        action  invert;
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  new;
+        source  cellToCell;
+        sourceInfo
+        {
+            set box;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set rudder0;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set hullBox0;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set bgr0;
+        }
+    }
+
+);
+
+
+// /*--------------------------------*- C++ -*----------------------------------*\
+// | =========                 |                                                 |
+// | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+// |  \\    /   O peration     | Version:  plus-overset                          |
+// |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+// |    \\/     M anipulation  |                                                 |
+// \*---------------------------------------------------------------------------*/
+// FoamFile
+// {
+//     version     2.0;
+//     format      ascii;
+//     class       dictionary;
+//     object      topoSetDict;
+// }
+// // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+//
+// actions
+// (
+//     {
+//         name    propeller0;       // all around bgr
+//         type    cellSet;
+//         action  new;
+//         source  zoneToCell;
+//         sourceInfo
+//         {
+//             name propeller;
+//           //  insidePoints ((-0.02 0.0001 0.0001));
+//         }
+//     }
+//     {
+//         name    c0;            //copy
+//         type    cellSet;
+//         action  new;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set propeller0;
+//         }
+//     }
+//
+//     {
+//         name    c0;          //all around hullBox0
+//         type    cellSet;
+//         action  invert;
+//     }
+//
+// /*
+//
+//     {
+//         name    c1;
+//         type    cellSet;
+//         action  new;
+//         source  regionsToCell;
+//         sourceInfo
+//         {
+//             insidePoints ((-0.01 0.0 0.0));
+//             set          c0;
+//         }
+//     }
+//
+//
+//
+//
+//
+//    {
+//         name    c1;
+//         type    cellSet;
+//         action  delete;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set c2;
+//         }
+//     }
+// */
+//     // Select box to remove from region 1 and 2
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  new;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set c0;
+//         }
+//     }
+//
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  add;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set propeller0;
+//         }
+//     }
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  subset;
+//         source  boxToCell;
+//         sourceInfo
+//         {
+//             boxes
+//             (
+//             //     (0 -0.1 -0.1)(0.5 0.1 0.1) //hullBox
+//                  (-0.0199 -0.0499 -0.0499)( -0.00998 0.0499 0.0499) //propeller
+//             //     (-0.08 -0.08 -0.03)(-0.06 0.08 0.03) //rudder
+//             );
+//         }
+//     }
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  invert;
+//     }
+// );
+//
+// // ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictRefine b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictRefine
new file mode 100644
index 0000000000000000000000000000000000000000..17762d7c77fcb56a048778012884b9c5c8578f4a
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictRefine
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+
+    {
+        name    refineSet;
+        type    cellSet;
+        action  new;
+        source  boxToCell;
+        sourceInfo
+        {
+            boxes
+            (
+                (-0.2 -0.2 -0.2)(0.0 0.2 0.2) //hullBox
+            //      (0 -1 -1)(5 1 1) //hullBox
+            //     (-0.02 -0.05 -0.03)( -0.01 0.05 0.03) //propeller
+            //     (-0.08 -0.08 -0.03)(-0.06 0.08 0.03) //rudder
+            );
+        }
+    }
+
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictRudder b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictRudder
new file mode 100644
index 0000000000000000000000000000000000000000..460a11d274fcd906aaf6f2da60fad95ca13bc8c7
--- /dev/null
+++ b/tutorials/multiphase/overInterDyMFoam/boatAndPropeller/system/topoSetDictRudder
@@ -0,0 +1,264 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  plus-overset                          |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      topoSetDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    {
+      name    bgr0;       // all around bgr
+  //    set     hullBox0set;
+      type    cellSet;
+      action  new;
+      source  zoneToCell;
+      sourceInfo
+      {
+          name    background;
+      }
+    }
+    {
+        name    hullBox0;       // all around hull
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    hullBox;
+        }
+    }
+    {
+        name    propeller0;       // all around propeller
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    propeller;
+        }
+    }
+    {
+        name    rudder0;       // all around rudder
+        type    cellSet;
+        action  new;
+        source  zoneToCell;
+        sourceInfo
+        {
+            name    rudder;
+        }
+    }
+
+    {
+        name    box;   //all cells
+        type    cellSet;
+        action  new;
+        source  cellToCell;
+        sourceInfo
+        {
+            set rudder0;
+        }
+    }
+
+
+    {
+        name    box;   // hole in mesh
+        type    cellSet;
+        action  subset;
+        source  boxToCell;
+        sourceInfo
+        {
+            boxes
+            (
+            //     (0.15 -0.1 -0.1)(0.5 0.1 0.1) //hullBox
+            //     (-0.02 -0.05 -0.03)( -0.01 0.05 0.03) //propeller
+            (-0.10 -0.0749 -0.00499)(-0.050 0.0749 0.00499) //rudder
+            );
+        }
+    }
+
+    {
+        name    box;
+        type    cellSet;
+        action  invert;
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  new;
+        source  cellToCell;
+        sourceInfo
+        {
+            set box;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set propeller0;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set hullBox0;
+        }
+    }
+    {
+        name    keepBox;   //all cells
+        type    cellSet;
+        action  add;
+        source  cellToCell;
+        sourceInfo
+        {
+            set bgr0;
+        }
+    }
+
+);
+
+// ************************************************************************* //
+
+
+
+// /*--------------------------------*- C++ -*----------------------------------*\
+// | =========                 |                                                 |
+// | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+// |  \\    /   O peration     | Version:  plus-overset                          |
+// |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
+// |    \\/     M anipulation  |                                                 |
+// \*---------------------------------------------------------------------------*/
+// FoamFile
+// {
+//     version     2.0;
+//     format      ascii;
+//     class       dictionary;
+//     object      topoSetDict;
+// }
+// // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+//
+// actions
+// (
+//     {
+//         name    rudder0;       // all around bgr
+//         type    cellSet;
+//         action  new;
+//         source  zoneToCell;
+//         sourceInfo
+//         {
+//            name rudder;
+//             //insidePoints ((-0.11 0.0 0.0));
+//         }
+//     }
+//     {
+//         name    c0;            //copy
+//         type    cellSet;
+//         action  new;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set rudder0;
+//         }
+//     }
+//
+//     {
+//         name    c0;          //all around hullBox0
+//         type    cellSet;
+//         action  invert;
+//     }
+//
+// /*
+//
+//     {
+//         name    c1;
+//         type    cellSet;
+//         action  new;
+//         source  regionsToCell;
+//         sourceInfo
+//         {
+//             insidePoints ((-0.01 0.0 0.0));
+//             set          c0;
+//         }
+//     }
+//
+//
+//
+//
+//
+//    {
+//         name    c1;
+//         type    cellSet;
+//         action  delete;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set c2;
+//         }
+//     }
+// */
+//     // Select box to remove from region 1 and 2
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  new;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set c0;
+//         }
+//     }
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  add;
+//         source  cellToCell;
+//         sourceInfo
+//         {
+//             set rudder0;
+//         }
+//     }
+//
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  subset;
+//         source  boxToCell;
+//         sourceInfo
+//         {
+//             boxes
+//             (
+//             //     (0 -0.1 -0.1)(0.5 0.1 0.1) //hullBox
+//             //     (-0.02 -0.05 -0.03)( -0.01 0.05 0.03) //propeller
+//                  (-0.10 -0.0749 -0.00499)(-0.050 0.0749 0.00499) //rudder
+//             );
+//         }
+//     }
+//
+//     {
+//         name    box;
+//         type    cellSet;
+//         action  invert;
+//     }
+// );
+//
+// // ************************************************************************* //