diff --git a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
index 2d2e1f65512dcce562369d1abffcbe4f3f41a389..179903b082bdf146a685184f34e7ed7609f8598a 100644
--- a/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
+++ b/applications/solvers/multiphase/twoPhaseEulerFoam/phaseIncompressibleTurbulenceModels/kineticTheoryModels/conductivityModel/HrenyaSinclair/HrenyaSinclairConductivity.C
@@ -91,7 +91,7 @@ Foam::kineticTheoryModels::conductivityModels::HrenyaSinclair::kappa
     return da*sqrt(Theta)*
     (
         2.0*sqr(alpha1)*g0*(1.0 + e)/sqrtPi
-      + (9.0/8.0)*sqrtPi*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1)
+      + (9.0/8.0)*sqrtPi*g0*0.25*sqr(1.0 + e)*(2.0*e - 1.0)*sqr(alpha1)
        /(49.0/16.0 - 33.0*e/16.0)
       + (15.0/16.0)*sqrtPi*alpha1*(0.5*sqr(e) + 0.25*e - 0.75 + lamda)
        /((49.0/16.0 - 33.0*e/16.0)*lamda)
diff --git a/applications/utilities/mesh/advanced/combinePatchFaces/Make/options b/applications/utilities/mesh/advanced/combinePatchFaces/Make/options
index 4f26f666de6b5f60e27a69d0e4e595a1d594c9be..3da3443a27b1e7677ab4670333548fe371e1731a 100644
--- a/applications/utilities/mesh/advanced/combinePatchFaces/Make/options
+++ b/applications/utilities/mesh/advanced/combinePatchFaces/Make/options
@@ -1,9 +1,9 @@
 EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/dynamicMesh/lnInclude \
 
 
 EXE_LIBS = \
-    -lmeshTools \
-    -lsampling \
+    -lfiniteVolume \
     -ldynamicMesh
diff --git a/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.C b/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.C
index fcb38fb9a5c2ec0097530fbc6ec4b659506f0104..05c27a15df5c10201477ea71cf6621f96c0fba17 100644
--- a/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.C
+++ b/applications/utilities/mesh/conversion/foamMeshToFluent/fluentFvMesh.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -33,6 +33,7 @@ using std::ios;
 #include "fluentFvMesh.H"
 #include "primitiveMesh.H"
 #include "wallFvPatch.H"
+#include "symmetryPlaneFvPatch.H"
 #include "symmetryFvPatch.H"
 #include "cellModeller.H"
 
@@ -177,7 +178,11 @@ void Foam::fluentFvMesh::writeFluentMesh() const
         {
             fluentMeshFile << 3;
         }
-        else if (isA<symmetryFvPatch>(boundary()[patchI]))
+        else if
+        (
+            isA<symmetryPlaneFvPatch>(boundary()[patchI])
+         || isA<symmetryFvPatch>(boundary()[patchI])
+        )
         {
             fluentMeshFile << 7;
         }
@@ -280,7 +285,11 @@ void Foam::fluentFvMesh::writeFluentMesh() const
         {
             fluentMeshFile << "wall ";
         }
-        else if (isA<symmetryFvPatch>(boundary()[patchI]))
+        else if
+        (
+            isA<symmetryPlaneFvPatch>(boundary()[patchI])
+         || isA<symmetryFvPatch>(boundary()[patchI])
+        )
         {
             fluentMeshFile << "symmetry ";
         }
diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
index 507891d356f316fdee9d2a2227c86c19fc49f1aa..87922d974d8a5062b70cba93f757b8c7a1013f3b 100644
--- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
+++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMeshDict
@@ -401,7 +401,7 @@ addLayersControls
         // Angle used to pick up medial axis points
         // Note: changed(corrected) w.r.t 17x! 90 degrees corresponds to 130
         // in 17x.
-        minMedianAxisAngle 90;
+        minMedialAxisAngle 90;
 
         // Reduce layer growth where ratio thickness to medial
         // distance is large
@@ -414,6 +414,9 @@ addLayersControls
         // default is 0.
         nSmoothDisplacement 90;
 
+        // Optional: limit the number of steps walking away from the surface
+        nMedialAxisIter 10;
+
 
     // Mesh shrinking
 
diff --git a/applications/utilities/mesh/manipulation/checkMesh/Make/options b/applications/utilities/mesh/manipulation/checkMesh/Make/options
index 70c838b774c8b2609363d066e78b1a19b9306ccd..2ff5dbabfef1b5ac11da7992941505bbec8ae2b0 100644
--- a/applications/utilities/mesh/manipulation/checkMesh/Make/options
+++ b/applications/utilities/mesh/manipulation/checkMesh/Make/options
@@ -1,5 +1,6 @@
 EXE_INC = \
     -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
     -I$(LIB_SRC)/dynamicMesh/lnInclude
 
 EXE_LIBS = \
diff --git a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
index bc0e78a67f847cfe5d670f89ffc4142ffa96dbca..cdbe770d1acdc461e9b77bd62ce02c7e0a805e9c 100644
--- a/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
+++ b/applications/utilities/mesh/manipulation/createBaffles/createBaffles.C
@@ -619,19 +619,41 @@ int main(int argc, char *argv[])
                 const word masterName = groupName + "_master";
                 const word slaveName = groupName + "_slave";
 
-                dictionary patchDict = patchSource;
-                patchDict.set("nFaces", 0);
-                patchDict.set("startFace", 0);
-                patchDict.set("coupleGroup", groupName);
+                word groupNameMaster = groupName;
+                word groupNameSlave = groupName;
 
-                addPatch(mesh, masterName, groupName, patchDict);
-                addPatch(mesh, slaveName, groupName, patchDict);
+
+                dictionary patchDictMaster(patchSource);
+                patchDictMaster.set("nFaces", 0);
+                patchDictMaster.set("startFace", 0);
+                patchDictMaster.set("coupleGroup", groupName);
+
+                dictionary patchDictSlave(patchDictMaster);
+
+                // Note: This is added for the particular case where we want
+                // master and slave in different groupNames
+                // (ie 3D thermal baffles)
+                bool groupBase = false;
+                if (patchSource.found("groupBase"))
+                {
+                    groupBase = readBool(patchSource.lookup("groupBase"));
+
+                    if (groupBase)
+                    {
+                        groupNameMaster = groupName + "Group_master";
+                        groupNameSlave = groupName + "Group_slave";
+                        patchDictMaster.set("coupleGroup", groupNameMaster);
+                        patchDictSlave.set("coupleGroup", groupNameSlave);
+                    }
+                }
+
+                addPatch(mesh, masterName, groupNameMaster, patchDictMaster);
+                addPatch(mesh, slaveName, groupNameSlave, patchDictSlave);
             }
         }
     }
 
 
-
     // Make sure patches and zoneFaces are synchronised across couples
     mesh.boundaryMesh().checkParallelSync(true);
     mesh.faceZones().checkParallelSync(true);
@@ -793,6 +815,12 @@ int main(int argc, char *argv[])
             else
             {
                 const dictionary& patchSource = dict.subDict("patchPairs");
+                bool groupBase = false;
+                if (patchSource.found("groupBase"))
+                {
+                    groupBase = readBool(patchSource.lookup("groupBase"));
+                }
+
                 const word& groupName = selectors[selectorI].name();
 
                 if (patchSource.found("patchFields"))
@@ -801,23 +829,51 @@ int main(int argc, char *argv[])
                     (
                         "patchFields"
                     );
-                    // Add coupleGroup to all entries
-                    forAllIter(dictionary, patchFieldsDict, iter)
+
+                    if (!groupBase)
                     {
-                        if (iter().isDict())
+                        // Add coupleGroup to all entries
+                        forAllIter(dictionary, patchFieldsDict, iter)
                         {
-                            dictionary& dict = iter().dict();
-                            dict.set("coupleGroup", groupName);
+                            if (iter().isDict())
+                            {
+                                dictionary& dict = iter().dict();
+                                dict.set("coupleGroup", groupName);
+                            }
                         }
-                    }
 
-                    const labelList& patchIDs = pbm.groupPatchIDs()[groupName];
-                    forAll(patchIDs, i)
+                        const labelList& patchIDs =
+                            pbm.groupPatchIDs()[groupName];
+
+                        forAll(patchIDs, i)
+                        {
+                            fvMeshTools::setPatchFields
+                            (
+                                mesh,
+                                patchIDs[i],
+                                patchFieldsDict
+                            );
+                        }
+                    }
+                    else
                     {
+                        const word masterPatchName(groupName + "_master");
+                        const word slavePatchName(groupName + "_slave");
+
+                        label patchIMaster = pbm.findPatchID(masterPatchName);
+                        label patchISlave = pbm.findPatchID(slavePatchName);
+
+                        fvMeshTools::setPatchFields
+                        (
+                            mesh,
+                            patchIMaster,
+                            patchFieldsDict
+                        );
+
                         fvMeshTools::setPatchFields
                         (
                             mesh,
-                            patchIDs[i],
+                            patchISlave,
                             patchFieldsDict
                         );
                     }
diff --git a/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C b/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C
index 375e38961b1625b10176931bc955a49055f055cf..ebaf8737b834153883df54981e37c98c8bfc6e2c 100644
--- a/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C
+++ b/applications/utilities/mesh/manipulation/objToVTK/objToVTK.C
@@ -210,6 +210,14 @@ int main(int argc, char *argv[])
         outFile << pt.x() << ' ' << pt.y() << ' ' << pt.z() << nl;
     }
 
+    outFile
+        << "VERTICES " << points.size() << ' ' << (2 * points.size()) << nl;
+
+    forAll(points, i)
+    {
+        outFile << 1 << ' ' << i << nl;
+    }
+
     label nItems = 0;
     forAll(polyLines, polyI)
     {
diff --git a/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C b/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C
index de9af38b878de353e317110daa060f21489a8829..11874fe2eadffe65a3630b6965db543b92da37f5 100644
--- a/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C
+++ b/applications/utilities/postProcessing/velocityField/streamFunction/streamFunction.C
@@ -33,6 +33,7 @@ Description
 #include "fvCFD.H"
 #include "pointFields.H"
 #include "emptyPolyPatch.H"
+#include "symmetryPlanePolyPatch.H"
 #include "symmetryPolyPatch.H"
 #include "wedgePolyPatch.H"
 #include "OSspecific.H"
@@ -286,6 +287,8 @@ int main(int argc, char *argv[])
                                      (
                                         !isType<emptyPolyPatch>
                                          (patches[patchNo])
+                                     && !isType<symmetryPlanePolyPatch>
+                                         (patches[patchNo])
                                      && !isType<symmetryPolyPatch>
                                          (patches[patchNo])
                                      && !isType<wedgePolyPatch>
diff --git a/bin/foamJob b/bin/foamJob
index 4eda40490e5dfc2307c337131a2621aee08f0eef..20793c3d52079b137a8fca3d9dd58f5ce7857ec1 100755
--- a/bin/foamJob
+++ b/bin/foamJob
@@ -3,7 +3,7 @@
 # =========                 |
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
-#   \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+#   \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
 #    \\/     M anipulation  |
 #-------------------------------------------------------------------------------
 # License
@@ -50,6 +50,28 @@ USAGE
     exit 1
 }
 
+#for being able to echo strings that have single quotes
+echoArgs() {
+    addSpace=""
+
+    for stringItem in "$@"; do
+
+        echo -n "${addSpace}"
+
+        if [ "${stringItem##* }" = "$stringItem" ]
+        then
+            echo -n "$stringItem"
+            addSpace=" "
+        else
+            echo -n "'$stringItem'"
+            addSpace=" "
+        fi
+
+    done
+
+    unset stringItem addSpace
+}
+
 unset version
 
 # replacement for possibly buggy 'which'
@@ -217,11 +239,11 @@ then
     #
     if [ "$screenOpt" = true ]
     then
-        echo "Executing: $mpirun $mpiopts $APPLICATION $@ -parallel | tee log"
-        $mpirun $mpiopts $APPLICATION $@ -parallel | tee log
+        echo "Executing: $mpirun $mpiopts $APPLICATION $(echoArgs "$@") -parallel | tee log"
+        $mpirun $mpiopts $APPLICATION "$@" -parallel | tee log
     else
-        echo "Executing: $mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1"
-        $mpirun $mpiopts $APPLICATION $@ -parallel > log 2>&1 &
+        echo "Executing: $mpirun $mpiopts $APPLICATION $(echoArgs "$@") -parallel > log 2>&1"
+        $mpirun $mpiopts $APPLICATION "$@" -parallel > log 2>&1 &
     fi
 
 else
@@ -230,12 +252,12 @@ else
     #
     if [ "$screenOpt" = true ]
     then
-        echo "Executing: $APPLICATION $@ | tee log &"
-        $APPLICATION $@ | tee log &
+        echo "Executing: $APPLICATION $(echoArgs "$@") | tee log &"
+        $APPLICATION "$@" | tee log &
         wait $!
     else
-        echo "Executing: $APPLICATION $@ > log 2>&1 &"
-        $APPLICATION $@ > log 2>&1 &
+        echo "Executing: $APPLICATION $(echoArgs "$@") > log 2>&1 &"
+        $APPLICATION "$@" > log 2>&1 &
     fi
 fi
 
diff --git a/etc/caseDicts/setConstraintTypes b/etc/caseDicts/setConstraintTypes
index 1678e2a147933ba98dd05283b45e64ba6586dbad..6b075c7382577d13a2797aab6fe6f14b0f3dcfd3 100644
--- a/etc/caseDicts/setConstraintTypes
+++ b/etc/caseDicts/setConstraintTypes
@@ -51,6 +51,11 @@ symmetryPlane
     type  symmetryPlane;
 }
 
+symmetry
+{
+    type  symmetry;
+}
+
 wedge
 {
     type  wedge;
diff --git a/etc/controlDict b/etc/controlDict
index 8f811534dc06b94560c6e3fba5ab921e5d984803..68d8f86a44fed75a13585f2b46ad519493d827b2 100644
--- a/etc/controlDict
+++ b/etc/controlDict
@@ -813,6 +813,7 @@ DebugSwitches
     symmTensorAverageField 0;
     symmTensorField     0;
     symmetryPlane       0;
+    symmetry            0;
     syringePressure     0;
     tensorAverageField  0;
     tensorField         0;
diff --git a/src/Allwmake b/src/Allwmake
index bafcd93df7c394d0190f511b0a64cd02f84bda88..fa091ed845c2749db93b22af1527bea6c0ee2d47 100755
--- a/src/Allwmake
+++ b/src/Allwmake
@@ -81,4 +81,6 @@ wmake $makeType regionCoupled
 
 postProcessing/Allwmake $*
 
+wmake $makeType sixDoFRigidBodyMotion
+
 # ----------------------------------------------------------------- end-of-file
diff --git a/src/OpenFOAM/Make/files b/src/OpenFOAM/Make/files
index 0e1224505b25afbc3bd5038e34a6f66942da6a24..42be066ee2e37eb2cd245e32e9920da712841de9 100644
--- a/src/OpenFOAM/Make/files
+++ b/src/OpenFOAM/Make/files
@@ -411,6 +411,7 @@ $(constraintPolyPatches)/empty/emptyPolyPatch.C
 $(constraintPolyPatches)/nonuniformTransformCyclic/nonuniformTransformCyclicPolyPatch.C
 $(constraintPolyPatches)/processorCyclic/processorCyclicPolyPatch.C
 $(constraintPolyPatches)/processor/processorPolyPatch.C
+$(constraintPolyPatches)/symmetryPlane/symmetryPlanePolyPatch.C
 $(constraintPolyPatches)/symmetry/symmetryPolyPatch.C
 $(constraintPolyPatches)/wedge/wedgePolyPatch.C
 
@@ -530,6 +531,7 @@ $(constraintPointPatches)/empty/emptyPointPatch.C
 $(constraintPointPatches)/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatch.C
 $(constraintPointPatches)/processor/processorPointPatch.C
 $(constraintPointPatches)/processorCyclic/processorCyclicPointPatch.C
+$(constraintPointPatches)/symmetryPlane/symmetryPlanePointPatch.C
 $(constraintPointPatches)/symmetry/symmetryPointPatch.C
 $(constraintPointPatches)/wedge/wedgePointPatch.C
 
@@ -599,6 +601,7 @@ $(constraintPointPatchFields)/empty/emptyPointPatchFields.C
 $(constraintPointPatchFields)/nonuniformTransformCyclic/nonuniformTransformCyclicPointPatchFields.C
 $(constraintPointPatchFields)/processor/processorPointPatchFields.C
 $(constraintPointPatchFields)/processorCyclic/processorCyclicPointPatchFields.C
+$(constraintPointPatchFields)/symmetryPlane/symmetryPlanePointPatchFields.C
 $(constraintPointPatchFields)/symmetry/symmetryPointPatchFields.C
 $(constraintPointPatchFields)/wedge/wedgePointPatchFields.C
 
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.C
new file mode 100644
index 0000000000000000000000000000000000000000..b91c965e92eecc5a79510ec78db6ee1736441f93
--- /dev/null
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.C
@@ -0,0 +1,149 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlanePointPatchField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField
+(
+    const pointPatch& p,
+    const DimensionedField<Type, pointMesh>& iF
+)
+:
+    basicSymmetryPointPatchField<Type>(p, iF),
+    symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p))
+{}
+
+
+template<class Type>
+symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField
+(
+    const pointPatch& p,
+    const DimensionedField<Type, pointMesh>& iF,
+    const dictionary& dict
+)
+:
+    basicSymmetryPointPatchField<Type>(p, iF, dict),
+    symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p))
+{
+    if (!isType<symmetryPlanePointPatch>(p))
+    {
+        FatalIOErrorIn
+        (
+            "symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField\n"
+            "(\n"
+            "    const pointPatch& p,\n"
+            "    const Field<Type>& field,\n"
+            "    const dictionary& dict\n"
+            ")\n",
+            dict
+        )   << "patch " << this->patch().index() << " not symmetry type. "
+            << "Patch type = " << p.type()
+            << exit(FatalIOError);
+    }
+}
+
+
+template<class Type>
+symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField
+(
+    const symmetryPlanePointPatchField<Type>& ptf,
+    const pointPatch& p,
+    const DimensionedField<Type, pointMesh>& iF,
+    const pointPatchFieldMapper& mapper
+)
+:
+    basicSymmetryPointPatchField<Type>(ptf, p, iF, mapper),
+    symmetryPlanePatch_(refCast<const symmetryPlanePointPatch>(p))
+{
+    if (!isType<symmetryPlanePointPatch>(this->patch()))
+    {
+        FatalErrorIn
+        (
+            "symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField\n"
+            "(\n"
+            "    const symmetryPlanePointPatchField<Type>& ptf,\n"
+            "    const pointPatch& p,\n"
+            "    const DimensionedField<Type, pointMesh>& iF,\n"
+            "    const pointPatchFieldMapper& mapper\n"
+            ")\n"
+        )   << "Field type does not correspond to patch type for patch "
+            << this->patch().index() << "." << endl
+            << "Field type: " << typeName << endl
+            << "Patch type: " << this->patch().type()
+            << exit(FatalError);
+    }
+}
+
+
+template<class Type>
+symmetryPlanePointPatchField<Type>::symmetryPlanePointPatchField
+(
+    const symmetryPlanePointPatchField<Type>& ptf,
+    const DimensionedField<Type, pointMesh>& iF
+)
+:
+    basicSymmetryPointPatchField<Type>(ptf, iF),
+    symmetryPlanePatch_(ptf.symmetryPlanePatch_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+void Foam::symmetryPlanePointPatchField<Type>::evaluate
+(
+    const Pstream::commsTypes
+)
+{
+    vector nHat = symmetryPlanePatch_.n();
+
+    tmp<Field<Type> > tvalues =
+    (
+        (
+            this->patchInternalField()
+          + transform(I - 2.0*sqr(nHat), this->patchInternalField())
+        )/2.0
+    );
+
+    // Get internal field to insert values into
+    Field<Type>& iF = const_cast<Field<Type>&>(this->internalField());
+
+    this->setInInternalField(iF, tvalues());
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H
new file mode 100644
index 0000000000000000000000000000000000000000..c3774789d83324fbaa0e6e770f02066172d25596
--- /dev/null
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchField.H
@@ -0,0 +1,161 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::symmetryPlanePointPatchField
+
+Description
+    A symmetry-plane boundary condition for pointField
+
+SourceFiles
+    symmetryPlanePointPatchField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlanePointPatchField_H
+#define symmetryPlanePointPatchField_H
+
+#include "basicSymmetryPointPatchField.H"
+#include "symmetryPlanePointPatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                  Class symmetryPlanePointPatchField Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Type>
+class symmetryPlanePointPatchField
+:
+    public basicSymmetryPointPatchField<Type>
+{
+    // Private data
+
+        //- Local reference cast into the symmetryPlane patch
+        const symmetryPlanePointPatch& symmetryPlanePatch_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName(symmetryPlanePointPatch::typeName_());
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        symmetryPlanePointPatchField
+        (
+            const pointPatch&,
+            const DimensionedField<Type, pointMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        symmetryPlanePointPatchField
+        (
+            const pointPatch&,
+            const DimensionedField<Type, pointMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given patchField<Type> onto a new patch
+        symmetryPlanePointPatchField
+        (
+            const symmetryPlanePointPatchField<Type>&,
+            const pointPatch&,
+            const DimensionedField<Type, pointMesh>&,
+            const pointPatchFieldMapper&
+        );
+
+        //- Construct and return a clone
+        virtual autoPtr<pointPatchField<Type> > clone() const
+        {
+            return autoPtr<pointPatchField<Type> >
+            (
+                new symmetryPlanePointPatchField<Type>
+                (
+                    *this
+                )
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        symmetryPlanePointPatchField
+        (
+            const symmetryPlanePointPatchField<Type>&,
+            const DimensionedField<Type, pointMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual autoPtr<pointPatchField<Type> > clone
+        (
+            const DimensionedField<Type, pointMesh>& iF
+        ) const
+        {
+            return autoPtr<pointPatchField<Type> >
+            (
+                new symmetryPlanePointPatchField<Type>
+                (
+                    *this,
+                    iF
+                )
+            );
+        }
+
+
+    // Member functions
+
+        //- Return the constraint type this pointPatchField implements
+        virtual const word& constraintType() const
+        {
+            return symmetryPlanePointPatch::typeName;
+        }
+
+        // Evaluation functions
+
+            //- Update the patch field
+            virtual void evaluate
+            (
+                const Pstream::commsTypes commsType=Pstream::blocking
+            );
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#    include "symmetryPlanePointPatchField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.C b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.C
new file mode 100644
index 0000000000000000000000000000000000000000..2317f097350354464c2f3b614672819de67f214d
--- /dev/null
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlanePointPatchFields.H"
+#include "pointPatchFields.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+makePointPatchFields(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.H b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..61e35ee4fe03b455e56671eb6e0ef7651da4e758
--- /dev/null
+++ b/src/OpenFOAM/fields/pointPatchFields/constraint/symmetryPlane/symmetryPlanePointPatchFields.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlanePointPatchFields_H
+#define symmetryPlanePointPatchFields_H
+
+#include "symmetryPlanePointPatchField.H"
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePointPatchFieldTypedefs(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H
index d39ecb10a80edf07b7afc15004eaad701cd440da..0bc3fb389e16b4d7b936e38c20ad5070a4b1034c 100644
--- a/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.H
+++ b/src/OpenFOAM/matrices/LduMatrix/LduMatrix/SolverPerformance.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,9 +25,8 @@ Class
     Foam::SolverPerformance
 
 Description
-    SolverPerformance is a general matrix class in which the coefficients are
-    stored as three arrays, one for the upper triangle, one for the
-    lower triangle and a third for the diagonal.
+    SolverPerformance is the class returned by the LduMatrix solver
+    containing performance statistics.
 
 SourceFiles
     SolverPerformance.C
@@ -72,13 +71,10 @@ Ostream& operator<<
 );
 
 
-
 /*---------------------------------------------------------------------------*\
                        Class SolverPerformance Declaration
 \*---------------------------------------------------------------------------*/
 
-//- Class returned by the solver
-//  containing performance statistics
 template<class Type>
 class SolverPerformance
 {
diff --git a/src/OpenFOAM/meshes/pointMesh/pointMesh.C b/src/OpenFOAM/meshes/pointMesh/pointMesh.C
index de6f88d16cc0cfffa1545a9d3e09e84b5e5650d1..c00c67cdb0f5cd6c2f7443fa3d35520826aa9e3e 100644
--- a/src/OpenFOAM/meshes/pointMesh/pointMesh.C
+++ b/src/OpenFOAM/meshes/pointMesh/pointMesh.C
@@ -88,6 +88,20 @@ Foam::pointMesh::pointMesh(const polyMesh& pMesh)
 }
 
 
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::pointMesh::~pointMesh()
+{
+    if (debug)
+    {
+        Pout<< "~pointMesh::pointMesh()"
+            << endl;
+    }
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
 bool Foam::pointMesh::movePoints()
 {
     if (debug)
diff --git a/src/OpenFOAM/meshes/pointMesh/pointMesh.H b/src/OpenFOAM/meshes/pointMesh/pointMesh.H
index e6ac2797614c105d581665814e3ebcf8ea982c91..28180b1252f5307031158657b897014a7416b265 100644
--- a/src/OpenFOAM/meshes/pointMesh/pointMesh.H
+++ b/src/OpenFOAM/meshes/pointMesh/pointMesh.H
@@ -85,6 +85,10 @@ public:
         explicit pointMesh(const polyMesh& pMesh);
 
 
+    //- Destructor
+    ~pointMesh();
+
+
     // Member Functions
 
         //- Return number of points
diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H
index 99041195210d237fd66ddf0acd70f21afdb93a82..35cf991cb96c9d3889b21e20a126bbac2b802436 100644
--- a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H
+++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetry/symmetryPointPatch.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,11 +25,14 @@ Class
     Foam::symmetryPointPatch
 
 Description
-    Symmetry-plane patch.
+    Symmetry patch for non-planar or multi-plane patches.
 
 SourceFiles
     symmetryPointPatch.C
 
+SeeAlso
+    symmetryPlanePointPatch
+
 \*---------------------------------------------------------------------------*/
 
 #ifndef symmetryPointPatch_H
diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.C b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.C
new file mode 100644
index 0000000000000000000000000000000000000000..f8f70537e9518e4d190187f99f8799ab8746fc6d
--- /dev/null
+++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.C
@@ -0,0 +1,71 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlanePointPatch.H"
+#include "pointConstraint.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(symmetryPlanePointPatch, 0);
+
+    // Add the patch constructor functions to the hash tables
+    addToRunTimeSelectionTable
+    (
+        facePointPatch,
+        symmetryPlanePointPatch,
+        polyPatch
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::symmetryPlanePointPatch::symmetryPlanePointPatch
+(
+    const polyPatch& patch,
+    const pointBoundaryMesh& bm
+)
+:
+    facePointPatch(patch, bm),
+    symmetryPlanePolyPatch_(refCast<const symmetryPlanePolyPatch>(patch))
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::symmetryPlanePointPatch::applyConstraint
+(
+    const label,
+    pointConstraint& pc
+) const
+{
+    pc.applyConstraint(symmetryPlanePolyPatch_.n());
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.H b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.H
new file mode 100644
index 0000000000000000000000000000000000000000..a791d3828f12d32818da094311b46a71487fd37a
--- /dev/null
+++ b/src/OpenFOAM/meshes/pointMesh/pointPatches/constraint/symmetryPlane/symmetryPlanePointPatch.H
@@ -0,0 +1,107 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::symmetryPlanePointPatch
+
+Description
+    Symmetry-plane patch.
+
+SourceFiles
+    symmetryPlanePointPatch.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlanePointPatch_H
+#define symmetryPlanePointPatch_H
+
+#include "facePointPatch.H"
+#include "symmetryPlanePolyPatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+               Class symmetryPlanePointPatch Declaration
+\*---------------------------------------------------------------------------*/
+
+class symmetryPlanePointPatch
+:
+    public facePointPatch
+{
+    // Private data
+
+        //- Local reference cast into the symmetryPlane patch
+        const symmetryPlanePolyPatch& symmetryPlanePolyPatch_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName(symmetryPlanePolyPatch::typeName_());
+
+
+    // Constructors
+
+        //- Construct from polyPatch
+        symmetryPlanePointPatch
+        (
+            const polyPatch& patch,
+            const pointBoundaryMesh& bm
+        );
+
+
+    // Member Functions
+
+        //- Return the constraint type this pointPatch implements.
+        virtual const word& constraintType() const
+        {
+            return type();
+        }
+
+        //- Accumulate the effect of constraint direction of this patch
+        virtual void applyConstraint
+        (
+            const label pointi,
+            pointConstraint&
+        ) const;
+
+        //- Return symmetry plane normal
+        const vector& n() const
+        {
+            return symmetryPlanePolyPatch_.n();
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H
index 9df659518f7069221510301924fd0dbb59dcd956..c07f46eb69e1bdc35f459d37c9faf259c60e4db8 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.H
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetry/symmetryPolyPatch.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,11 +25,14 @@ Class
     Foam::symmetryPolyPatch
 
 Description
-    Symmetry-plane patch.
+    Symmetry patch for non-planar or multi-plane patches.
 
 SourceFiles
     symmetryPolyPatch.C
 
+SeeAlso
+    symmetryPlanePolyPatch
+
 \*---------------------------------------------------------------------------*/
 
 #ifndef symmetryPolyPatch_H
@@ -53,7 +56,7 @@ class symmetryPolyPatch
 public:
 
     //- Runtime type information
-    TypeName("symmetryPlane");
+    TypeName("symmetry");
 
 
     // Constructors
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.C b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.C
new file mode 100644
index 0000000000000000000000000000000000000000..49b48f8df7c902d4d54aa954f347b68b4fc4b17b
--- /dev/null
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.C
@@ -0,0 +1,136 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlanePolyPatch.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(symmetryPlanePolyPatch, 0);
+
+    addToRunTimeSelectionTable(polyPatch, symmetryPlanePolyPatch, word);
+    addToRunTimeSelectionTable(polyPatch, symmetryPlanePolyPatch, dictionary);
+}
+
+// * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * * * * * //
+
+Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch
+(
+    const word& name,
+    const label size,
+    const label start,
+    const label index,
+    const polyBoundaryMesh& bm,
+    const word& patchType
+)
+:
+    polyPatch(name, size, start, index, bm, patchType),
+    n_(vector::zero)
+{}
+
+
+Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch
+(
+    const word& name,
+    const dictionary& dict,
+    const label index,
+    const polyBoundaryMesh& bm,
+    const word& patchType
+)
+:
+    polyPatch(name, dict, index, bm, patchType),
+    n_(vector::zero)
+{}
+
+
+Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch
+(
+    const symmetryPlanePolyPatch& pp,
+    const polyBoundaryMesh& bm
+)
+:
+    polyPatch(pp, bm),
+    n_(vector::zero)
+{}
+
+
+Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch
+(
+    const symmetryPlanePolyPatch& pp,
+    const polyBoundaryMesh& bm,
+    const label index,
+    const label newSize,
+    const label newStart
+)
+:
+    polyPatch(pp, bm, index, newSize, newStart),
+    n_(vector::zero)
+{}
+
+
+Foam::symmetryPlanePolyPatch::symmetryPlanePolyPatch
+(
+    const symmetryPlanePolyPatch& pp,
+    const polyBoundaryMesh& bm,
+    const label index,
+    const labelUList& mapAddressing,
+    const label newStart
+)
+:
+    polyPatch(pp, bm, index, mapAddressing, newStart),
+    n_(vector::zero)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const Foam::vector& Foam::symmetryPlanePolyPatch::n() const
+{
+    // If the symmetry normal is not set calculate it
+    // as the average face-normal
+    if (magSqr(n_) < 0.5)
+    {
+        const vectorField& nf(faceNormals());
+        n_ = gAverage(nf);
+
+        // Check the symmetry plane is planar
+        forAll(nf, facei)
+        {
+            if (magSqr(n_ - nf[facei]) > SMALL)
+            {
+                FatalErrorIn("symmetryPlanePolyPatch::n()")
+                    << "Symmetry plane '" << name() << "' is not planar"
+                    << exit(FatalError);
+            }
+        }
+    }
+
+    return n_;
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.H b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.H
new file mode 100644
index 0000000000000000000000000000000000000000..81b8afcd7280b1d4bbc206cb972532cd4a705fc9
--- /dev/null
+++ b/src/OpenFOAM/meshes/polyMesh/polyPatches/constraint/symmetryPlane/symmetryPlanePolyPatch.H
@@ -0,0 +1,177 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::symmetryPlanePolyPatch
+
+Description
+    Symmetry-plane patch.
+
+SourceFiles
+    symmetryPlanePolyPatch.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlanePolyPatch_H
+#define symmetryPlanePolyPatch_H
+
+#include "polyPatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                      Class symmetryPlanePolyPatch Declaration
+\*---------------------------------------------------------------------------*/
+
+class symmetryPlanePolyPatch
+:
+    public polyPatch
+{
+    // Private data
+
+        //- Symmetry plane normal (calculated on demand)
+        mutable vector n_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("symmetryPlane");
+
+
+    // Constructors
+
+        //- Construct from components
+        symmetryPlanePolyPatch
+        (
+            const word& name,
+            const label size,
+            const label start,
+            const label index,
+            const polyBoundaryMesh& bm,
+            const word& patchType
+        );
+
+        //- Construct from dictionary
+        symmetryPlanePolyPatch
+        (
+            const word& name,
+            const dictionary& dict,
+            const label index,
+            const polyBoundaryMesh& bm,
+            const word& patchType
+        );
+
+        //- Construct as copy, resetting the boundary mesh
+        symmetryPlanePolyPatch
+        (
+            const symmetryPlanePolyPatch&,
+            const polyBoundaryMesh&
+        );
+
+        //- Construct given the original patch and resetting the
+        //  face list and boundary mesh information
+        symmetryPlanePolyPatch
+        (
+            const symmetryPlanePolyPatch& pp,
+            const polyBoundaryMesh& bm,
+            const label index,
+            const label newSize,
+            const label newStart
+        );
+
+        //- Construct given the original patch and a map
+        symmetryPlanePolyPatch
+        (
+            const symmetryPlanePolyPatch& pp,
+            const polyBoundaryMesh& bm,
+            const label index,
+            const labelUList& mapAddressing,
+            const label newStart
+        );
+
+        //- Construct and return a clone, resetting the boundary mesh
+        virtual autoPtr<polyPatch> clone(const polyBoundaryMesh& bm) const
+        {
+            return autoPtr<polyPatch>(new symmetryPlanePolyPatch(*this, bm));
+        }
+
+        //- Construct and return a clone, resetting the face list
+        //  and boundary mesh
+        virtual autoPtr<polyPatch> clone
+        (
+            const polyBoundaryMesh& bm,
+            const label index,
+            const label newSize,
+            const label newStart
+        ) const
+        {
+            return autoPtr<polyPatch>
+            (
+                new symmetryPlanePolyPatch(*this, bm, index, newSize, newStart)
+            );
+        }
+
+        //- Construct and return a clone, resetting the face list
+        //  and boundary mesh
+        virtual autoPtr<polyPatch> clone
+        (
+            const polyBoundaryMesh& bm,
+            const label index,
+            const labelUList& mapAddressing,
+            const label newStart
+        ) const
+        {
+            return autoPtr<polyPatch>
+            (
+                new symmetryPlanePolyPatch
+                (
+                    *this,
+                    bm,
+                    index,
+                    mapAddressing,
+                    newStart
+                )
+            );
+        }
+
+
+    // Member Functions
+
+        //- Return symmetry plane normal
+        const vector& n() const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/primitives/septernion/septernion.C b/src/OpenFOAM/primitives/septernion/septernion.C
index ffac2bd6092ec88e443cb6c196a3c765303d17a6..67cae051fdbff5ff126e6d25704d1a0f8adbc18d 100644
--- a/src/OpenFOAM/primitives/septernion/septernion.C
+++ b/src/OpenFOAM/primitives/septernion/septernion.C
@@ -59,6 +59,17 @@ Foam::word Foam::name(const septernion& s)
 }
 
 
+Foam::septernion Foam::slerp
+(
+    const septernion& qa,
+    const septernion& qb,
+    const scalar t
+)
+{
+    return septernion((1.0-t)*qa.t()+t*qb.t(), slerp(qa.r(), qb.r(), t));
+}
+
+
 // * * * * * * * * * * * * * * * IOstream Operators  * * * * * * * * * * * * //
 
 Foam::Istream& Foam::operator>>(Istream& is, septernion& s)
diff --git a/src/OpenFOAM/primitives/septernion/septernion.H b/src/OpenFOAM/primitives/septernion/septernion.H
index 03253ed7b9325b43d7ca18cf9a251ec47f0f04f6..b6a672f3ecc409e6656c03c05b747ca21730be88 100644
--- a/src/OpenFOAM/primitives/septernion/septernion.H
+++ b/src/OpenFOAM/primitives/septernion/septernion.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -157,6 +157,13 @@ inline septernion inv(const septernion& tr);
 //- Return a string representation of a septernion
 word name(const septernion&);
 
+//- Spherical linear interpolation of septernions. 0 for qa, 1 for qb
+septernion slerp
+(
+    const septernion& qa,
+    const septernion& qb,
+    const scalar t
+);
 
 //- Data associated with septernion type are contiguous
 template<>
diff --git a/src/TurbulenceModels/Allwmake b/src/TurbulenceModels/Allwmake
index 561610c0cefbb5761f7d569659e4f9d65021c5f7..84deb51c932692c3d145f89a2a89760fd29f2f7a 100755
--- a/src/TurbulenceModels/Allwmake
+++ b/src/TurbulenceModels/Allwmake
@@ -3,9 +3,9 @@ cd ${0%/*} || exit 1    # run from this directory
 makeType=${1:-libso}
 set -x
 
-wmake libso turbulenceModels
-wmake libso incompressible
-wmake libso compressible
+wmake $makeType turbulenceModels
+wmake $makeType incompressible
+wmake $makeType compressible
 wmakeLnInclude phaseIncompressible
 wmakeLnInclude phaseCompressible
 
diff --git a/src/dynamicFvMesh/Make/files b/src/dynamicFvMesh/Make/files
index 42105a9a60d3f17ca134598ab8c0264f7f22c2cc..0403ea42edff6119dd4e0982c708a6ef2a9cb901 100644
--- a/src/dynamicFvMesh/Make/files
+++ b/src/dynamicFvMesh/Make/files
@@ -18,5 +18,6 @@ $(solidBodyMotionFunctions)/axisRotationMotion/axisRotationMotion.C
 $(solidBodyMotionFunctions)/multiMotion/multiMotion.C
 $(solidBodyMotionFunctions)/oscillatingLinearMotion/oscillatingLinearMotion.C
 $(solidBodyMotionFunctions)/oscillatingRotatingMotion/oscillatingRotatingMotion.C
+solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
 
 LIB = $(FOAM_LIBBIN)/libdynamicFvMesh
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
new file mode 100644
index 0000000000000000000000000000000000000000..f925d3a20be74341396ea605bfc48967af8f81ce
--- /dev/null
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.C
@@ -0,0 +1,197 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "solidBodyMotionDisplacementPointPatchVectorField.H"
+#include "transformField.H"
+#include "addToRunTimeSelectionTable.H"
+#include "pointPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * * //
+
+solidBodyMotionDisplacementPointPatchVectorField::
+solidBodyMotionDisplacementPointPatchVectorField
+(
+    const pointPatch& p,
+    const DimensionedField<vector, pointMesh>& iF
+)
+:
+    fixedValuePointPatchVectorField(p, iF),
+    SBMFPtr_()
+{}
+
+
+solidBodyMotionDisplacementPointPatchVectorField::
+solidBodyMotionDisplacementPointPatchVectorField
+(
+    const pointPatch& p,
+    const DimensionedField<vector, pointMesh>& iF,
+    const dictionary& dict
+)
+:
+    fixedValuePointPatchVectorField(p, iF, dict, false),
+    SBMFPtr_(solidBodyMotionFunction::New(dict, this->db().time()))
+{
+    if (!dict.found("value"))
+    {
+        // Determine current local points and offset
+        fixedValuePointPatchVectorField::operator==
+        (
+            transform(SBMFPtr_().transformation(), localPoints0())
+           -localPoints0()
+        );
+    }
+}
+
+
+solidBodyMotionDisplacementPointPatchVectorField::
+solidBodyMotionDisplacementPointPatchVectorField
+(
+    const solidBodyMotionDisplacementPointPatchVectorField& ptf,
+    const pointPatch& p,
+    const DimensionedField<vector, pointMesh>& iF,
+    const pointPatchFieldMapper& mapper
+)
+:
+    fixedValuePointPatchVectorField(ptf, p, iF, mapper),
+    SBMFPtr_(ptf.SBMFPtr_().clone().ptr())
+{
+    // For safety re-evaluate
+
+    fixedValuePointPatchVectorField::operator==
+    (
+        transform(SBMFPtr_().transformation(), localPoints0())
+       -localPoints0()
+    );
+}
+
+
+solidBodyMotionDisplacementPointPatchVectorField::
+solidBodyMotionDisplacementPointPatchVectorField
+(
+    const solidBodyMotionDisplacementPointPatchVectorField& ptf
+)
+:
+    fixedValuePointPatchVectorField(ptf),
+    SBMFPtr_(ptf.SBMFPtr_().clone().ptr())
+{}
+
+
+solidBodyMotionDisplacementPointPatchVectorField::
+solidBodyMotionDisplacementPointPatchVectorField
+(
+    const solidBodyMotionDisplacementPointPatchVectorField& ptf,
+    const DimensionedField<vector, pointMesh>& iF
+)
+:
+    fixedValuePointPatchVectorField(ptf, iF),
+    SBMFPtr_(ptf.SBMFPtr_().clone().ptr())
+{
+    // For safety re-evaluate
+
+    fixedValuePointPatchVectorField::operator==
+    (
+        transform(SBMFPtr_().transformation(), localPoints0())
+       -localPoints0()
+    );
+}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+const pointField&
+solidBodyMotionDisplacementPointPatchVectorField::localPoints0() const
+{
+    if (!localPoints0Ptr_.valid())
+    {
+        pointIOField points0
+        (
+            IOobject
+            (
+                "points",
+                this->db().time().constant(),
+                polyMesh::meshSubDir,
+                this->db(),
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE,
+                false
+            )
+        );
+
+        localPoints0Ptr_.reset(new pointField(points0, patch().meshPoints()));
+    }
+    return localPoints0Ptr_();
+}
+
+
+void solidBodyMotionDisplacementPointPatchVectorField::updateCoeffs()
+{
+    if (this->updated())
+    {
+        return;
+    }
+
+    // Determine current local points and offset
+    fixedValuePointPatchVectorField::operator==
+    (
+        transform(SBMFPtr_().transformation(), localPoints0())
+       -localPoints0()
+    );
+
+    fixedValuePointPatchVectorField::updateCoeffs();
+}
+
+
+void solidBodyMotionDisplacementPointPatchVectorField::
+write(Ostream& os) const
+{
+    // Note: write value
+    fixedValuePointPatchVectorField::write(os);
+
+    os.writeKeyword(solidBodyMotionFunction::typeName) << SBMFPtr_->type()
+        << token::END_STATEMENT << nl;
+    os  << indent << word(SBMFPtr_->type() + "Coeffs");
+    SBMFPtr_->writeData(os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePointPatchTypeField
+(
+    pointPatchVectorField,
+    solidBodyMotionDisplacementPointPatchVectorField
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
new file mode 100644
index 0000000000000000000000000000000000000000..c8319cd95fd75392be69d50b9d94eda3d35c637b
--- /dev/null
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/pointPatchFields/derived/solidBodyMotionDisplacement/solidBodyMotionDisplacementPointPatchVectorField.H
@@ -0,0 +1,169 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::solidBodyMotionDisplacementPointPatchVectorField
+
+Description
+    Enables the specification of a fixed value boundary condition using the
+    solid body motion functions.
+
+SourceFiles
+    solidBodyMotionDisplacementPointPatchVectorField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef solidBodyMotionDisplacementPointPatchVectorField_H
+#define solidBodyMotionDisplacementPointPatchVectorField_H
+
+#include "solidBodyMotionFunction.H"
+#include "fixedValuePointPatchFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+          Class solidBodyMotionDisplacementPointPatchVectorField Declaration
+\*---------------------------------------------------------------------------*/
+
+class solidBodyMotionDisplacementPointPatchVectorField
+:
+    public fixedValuePointPatchVectorField
+{
+    // Private data
+
+        //- The motion control function
+        autoPtr<solidBodyMotionFunction> SBMFPtr_;
+
+        mutable autoPtr<pointField> localPoints0Ptr_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName("solidBodyMotionDisplacement");
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        solidBodyMotionDisplacementPointPatchVectorField
+        (
+            const pointPatch&,
+            const DimensionedField<vector, pointMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        solidBodyMotionDisplacementPointPatchVectorField
+        (
+            const pointPatch&,
+            const DimensionedField<vector, pointMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given patchField<vector> onto a new patch
+        solidBodyMotionDisplacementPointPatchVectorField
+        (
+            const solidBodyMotionDisplacementPointPatchVectorField&,
+            const pointPatch&,
+            const DimensionedField<vector, pointMesh>&,
+            const pointPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        solidBodyMotionDisplacementPointPatchVectorField
+        (
+            const solidBodyMotionDisplacementPointPatchVectorField&
+        );
+
+        //- Construct and return a clone
+        virtual autoPtr<pointPatchField<vector> > clone() const
+        {
+            return autoPtr<pointPatchField<vector> >
+            (
+                new solidBodyMotionDisplacementPointPatchVectorField
+                (
+                    *this
+                )
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        solidBodyMotionDisplacementPointPatchVectorField
+        (
+            const solidBodyMotionDisplacementPointPatchVectorField&,
+            const DimensionedField<vector, pointMesh>&
+        );
+
+
+        //- Construct and return a clone setting internal field reference
+        virtual autoPtr<pointPatchField<vector> > clone
+        (
+            const DimensionedField<vector, pointMesh>& iF
+        ) const
+        {
+            return autoPtr<pointPatchField<vector> >
+            (
+                new solidBodyMotionDisplacementPointPatchVectorField
+                (
+                    *this,
+                    iF
+                )
+            );
+        }
+
+
+    // Member functions
+
+        // Access
+
+            //- Return the fluctuation scale
+            const solidBodyMotionFunction& motion() const
+            {
+                return SBMFPtr_();
+            }
+
+            const pointField& localPoints0() const;
+
+        // Evaluation functions
+
+            //- Update the coefficients associated with the patch field
+            virtual void updateCoeffs();
+
+
+        //- Write
+        virtual void write(Ostream&) const;
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H
index f24afc9dc666e9387ef1157c4209ee41d61665a0..67bef0f9ed56958e5b6ac87e386261fa8efdd594 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/SDA/SDA.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -118,6 +118,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new SDA
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~SDA();
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
index bc6b67936512c83294712de2980ed106eddddc25..9f78e72d1b0cb9a8af27d05f1d0da82fbea5bba3 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/axisRotationMotion/axisRotationMotion.H
@@ -88,6 +88,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new axisRotationMotion
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~axisRotationMotion();
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H
index cd79131d7763a334b5a32513a7afa8eacbcbcfc2..036ed957b63a48c9dbe2ff1e19a5d8786e61fc8d 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/linearMotion/linearMotion.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -84,6 +84,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new linearMotion
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~linearMotion();
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H
index 9bbf045efa99528fa05d670f0b0389d710030005..93eb8dd8e53b6a465ef44f732045d266c1601e49 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/multiMotion/multiMotion.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -84,6 +84,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new multiMotion
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~multiMotion();
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H
index a3251b80c912e7ed956be5c4e1e1508a3454346f..d080f486ef414c9027f6c40ff010e4f06320e02e 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingLinearMotion/oscillatingLinearMotion.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -87,6 +87,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new oscillatingLinearMotion
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~oscillatingLinearMotion();
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H
index cbe10a95ecc2a186e1970855e3bdd9511902396f..60692b98f2f8bfe0cf5f7dddb141b86a8def077a 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/oscillatingRotatingMotion/oscillatingRotatingMotion.H
@@ -90,6 +90,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new oscillatingRotatingMotion
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~oscillatingRotatingMotion();
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H
index 87ec08746fb45af2ed36ca9059a8cd2c0f423f1f..169d5d17aa8b62abcbfa0dae44e2136e331a2b04 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/rotatingMotion/rotatingMotion.H
@@ -95,6 +95,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new rotatingMotion
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~rotatingMotion();
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C
index 10a3bb079965bcb6902d0922d6b08c3f52ae459d..214ac972a153284d2f3ce9cdb1788cd6b4a23c5b 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.C
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -70,4 +70,10 @@ bool Foam::solidBodyMotionFunction::read(const dictionary& SBMFCoeffs)
 }
 
 
+void Foam::solidBodyMotionFunction::writeData(Ostream& os) const
+{
+    os << SBMFCoeffs_;
+}
+
+
 // ************************************************************************* //
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
index 77a8920a22bef07db95b90917c2a20835f773a38..075e74629795f22b02706a8e4c985f01a1d319f3 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/solidBodyMotionFunction/solidBodyMotionFunction.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -106,6 +106,9 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const = 0;
+
 
     // Selectors
 
@@ -128,6 +131,9 @@ public:
 
         //- Update properties from given dictionary
         virtual bool read(const dictionary& SBMFCoeffs) = 0;
+
+        //- Write in dictionary format
+        virtual void writeData(Ostream&) const;
 };
 
 
diff --git a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H
index 763d7105cfe6bc7bef35835b569f377c8fb73ce4..0a5bfc736f7dcdef46f3ed6eeee632f655317b63 100644
--- a/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H
+++ b/src/dynamicFvMesh/solidBodyMotionFvMesh/solidBodyMotionFunctions/tabulated6DoFMotion/tabulated6DoFMotion.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -100,6 +100,19 @@ public:
             const Time& runTime
         );
 
+        //- Construct and return a clone
+        virtual autoPtr<solidBodyMotionFunction> clone() const
+        {
+            return autoPtr<solidBodyMotionFunction>
+            (
+                new tabulated6DoFMotion
+                (
+                    SBMFCoeffs_,
+                    time_
+                )
+            );
+        }
+
 
     //- Destructor
     virtual ~tabulated6DoFMotion();
diff --git a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C
index 970e0dac478073bb6514ed4f7d715e6049437c72..ca8755562787c2c4c7351904fd8525e46e6657a9 100644
--- a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C
+++ b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.C
@@ -43,6 +43,39 @@ defineTypeNameAndDebug(extrudePatchMesh, 0);
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
+extrudePatchMesh::extrudePatchMesh
+(
+    const fvMesh& mesh,
+    const fvPatch& patch,
+    const dictionary& dict,
+    const word regionName,
+    const List<polyPatch*>& regionPatches
+)
+:
+    fvMesh
+    (
+        IOobject
+        (
+            regionName,
+            mesh.facesInstance(),
+            mesh,
+            IOobject::READ_IF_PRESENT,
+            IOobject::NO_WRITE,
+            true
+        ),
+        xferCopy(pointField()),
+        xferCopy(faceList()),
+        xferCopy(labelList()),
+        xferCopy(labelList()),
+        false
+    ),
+    extrudedPatch_(patch.patch()),
+    dict_(dict)
+{
+    extrudeMesh(regionPatches);
+}
+
+
 extrudePatchMesh::extrudePatchMesh
 (
     const fvMesh& mesh,
@@ -68,11 +101,59 @@ extrudePatchMesh::extrudePatchMesh
         xferCopy(labelList()),
         false
     ),
-    extrudedPatch_(patch.patch())
+    extrudedPatch_(patch.patch()),
+    dict_(dict)
+{
+
+    List<polyPatch*> regionPatches(3);
+    List<word> patchNames(regionPatches.size());
+    List<word> patchTypes(regionPatches.size());
+    PtrList<dictionary> dicts(regionPatches.size());
+
+    forAll (dicts, patchI)
+    {
+        if (!dicts.set(patchI))
+        {
+            dicts.set(patchI, new dictionary());
+        }
+    }
+
+    dicts[bottomPatchID] = dict_.subDict("bottomCoeffs");
+    dicts[sidePatchID] = dict_.subDict("sideCoeffs");
+    dicts[topPatchID] = dict_.subDict("topCoeffs");
+
+    forAll (dicts, patchI)
+    {
+        dicts[patchI].lookup("name") >> patchNames[patchI];
+        dicts[patchI].lookup("type") >> patchTypes[patchI];
+    }
+
+    forAll (regionPatches, patchI)
+    {
+        dictionary&  patchDict = dicts[patchI];
+        patchDict.set("nFaces", 0);
+        patchDict.set("startFace", 0);
+
+        regionPatches[patchI] = polyPatch::New
+            (
+                patchNames[patchI],
+                patchDict,
+                patchI,
+                mesh.boundaryMesh()
+            ).ptr();
+
+    }
+
+    extrudeMesh(regionPatches);
+
+}
+
+
+void extrudePatchMesh::extrudeMesh(const List<polyPatch*>& regionPatches)
 {
     if (this->boundaryMesh().size() == 0)
     {
-        bool columnCells = readBool(dict.lookup("columnCells"));
+        bool columnCells = readBool(dict_.lookup("columnCells"));
 
         PackedBoolList nonManifoldEdge(extrudedPatch_.nEdges());
         for (label edgeI = 0; edgeI < extrudedPatch_.nInternalEdges(); edgeI++)
@@ -83,7 +164,7 @@ extrudePatchMesh::extrudePatchMesh
             }
         }
 
-        autoPtr<extrudeModel> model_(extrudeModel::New(dict));
+        autoPtr<extrudeModel> model_(extrudeModel::New(dict_));
 
         faceList pointGlobalRegions;
         faceList pointLocalRegions;
@@ -180,7 +261,7 @@ extrudePatchMesh::extrudePatchMesh
             pointLocalRegions,
             localRegionPoints
         );
-
+/*
         List<polyPatch*> regionPatches(3);
         List<word> patchNames(regionPatches.size());
         List<word> patchTypes(regionPatches.size());
@@ -194,9 +275,9 @@ extrudePatchMesh::extrudePatchMesh
             }
         }
 
-        dicts[bottomPatchID] = dict.subDict("bottomCoeffs");
-        dicts[sidePatchID] = dict.subDict("sideCoeffs");
-        dicts[topPatchID] = dict.subDict("topCoeffs");
+        dicts[bottomPatchID] = dict_.subDict("bottomCoeffs");
+        dicts[sidePatchID] = dict_.subDict("sideCoeffs");
+        dicts[topPatchID] = dict_.subDict("topCoeffs");
 
         forAll (dicts, patchI)
         {
@@ -219,7 +300,7 @@ extrudePatchMesh::extrudePatchMesh
                 ).ptr();
 
         }
-
+*/
         this->clearOut();
         this->removeFvBoundary();
         this->addFvPatches(regionPatches, true);
diff --git a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H
index 0ced75eec68c08f9e8b340ea8e36ed7e9a16eaf5..6fc480b1bd2ec2e9f2bb4fcf0d2382c867d0e71a 100644
--- a/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H
+++ b/src/dynamicMesh/extrudePatchMesh/extrudePatchMesh.H
@@ -105,6 +105,15 @@ private:
         //- Const reference to the patch from which this mesh is extruded
         const polyPatch& extrudedPatch_;
 
+        //- Model dictionary
+        dictionary dict_;
+
+
+    // Private member functions
+
+        //- Extrude mesh using polyPatches
+        void extrudeMesh(const List<polyPatch*>& regionPatches);
+
 
 public:
 
@@ -123,6 +132,17 @@ public:
             const word
         );
 
+        //- Construct from mesh, patch, dictionary and new mesh
+        //  polyPatch information
+        extrudePatchMesh
+        (
+            const fvMesh&,
+            const fvPatch&,
+            const dictionary&,
+            const word,
+            const List<polyPatch*>& polyPatches
+        );
+
 
     //- Destructor
     virtual ~extrudePatchMesh();
diff --git a/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C b/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C
index b6c1bd183c3b9839f628297a3e6dbec427229f79..a953c66ea6cec8f555429309a11808edee84bd66 100644
--- a/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C
+++ b/src/dynamicMesh/motionSmoother/motionSmootherAlgo.C
@@ -169,7 +169,7 @@ void Foam::motionSmootherAlgo::minSmooth
     }
 
     // Single and multi-patch constraints
-    pointConstraints::New(newFld.mesh()).constrain(newFld, false);
+    pointConstraints::New(mesh()).constrain(newFld, false);
 }
 
 
@@ -202,7 +202,7 @@ void Foam::motionSmootherAlgo::minSmooth
     }
 
    // Single and multi-patch constraints
-    pointConstraints::New(newFld.mesh()).constrain(newFld, false);
+    pointConstraints::New(mesh()).constrain(newFld, false);
 
 }
 
@@ -224,7 +224,7 @@ void Foam::motionSmootherAlgo::scaleField
     }
 
     // Single and multi-patch constraints
-    pointConstraints::New(fld.mesh()).constrain(fld, false);
+    pointConstraints::New(mesh()).constrain(fld, false);
 }
 
 
@@ -266,7 +266,7 @@ void Foam::motionSmootherAlgo::subtractField
     }
 
     // Single and multi-patch constraints
-    pointConstraints::New(fld.mesh()).constrain(fld);
+    pointConstraints::New(mesh()).constrain(fld);
 }
 
 
@@ -476,7 +476,7 @@ void Foam::motionSmootherAlgo::setDisplacementPatchFields
     }
 
     // Multi-patch constraints
-    pointConstraints::New(displacement.mesh()).constrainCorners(displacement);
+    pointConstraints::New(displacement.mesh()()).constrainCorners(displacement);
 
     // Adapt the fixedValue bc's (i.e. copy internal point data to
     // boundaryField for all affected patches) to take the changes caused
@@ -622,7 +622,7 @@ void Foam::motionSmootherAlgo::correctBoundaryConditions
     }
 
     // Multi-patch constraints
-    pointConstraints::New(displacement.mesh()).constrainCorners(displacement);
+    pointConstraints::New(displacement.mesh()()).constrainCorners(displacement);
 
     // Correct for problems introduced by corner constraints
     syncTools::syncPointList
diff --git a/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C b/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C
index fa847ff328c3294d09467f715c41494959d2407e..f78a11a9a3810541d6da13e50c52df536b34b18f 100644
--- a/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C
+++ b/src/dynamicMesh/motionSmoother/motionSmootherAlgoTemplates.C
@@ -229,7 +229,7 @@ Foam::motionSmootherAlgo::avg
     }
 
     // Single and multi-patch constraints
-    pointConstraints::New(res.mesh()).constrain(res, false);
+    pointConstraints::New(mesh).constrain(res, false);
 
     return tres;
 }
@@ -256,7 +256,7 @@ void Foam::motionSmootherAlgo::smooth
     }
 
     // Single and multi-patch constraints
-    pointConstraints::New(newFld.mesh()).constrain(newFld, false);
+    pointConstraints::New(mesh_).constrain(newFld, false);
 }
 
 
diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index 67deac58109ac4285d0e2b029048916a76e7de02..0bcfcf48a575f19a1d2aa01748f8e5ba00385db1 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -24,6 +24,7 @@ $(constraintFvPatches)/empty/emptyFvPatch.C
 $(constraintFvPatches)/nonuniformTransformCyclic/nonuniformTransformCyclicFvPatch.C
 $(constraintFvPatches)/processor/processorFvPatch.C
 $(constraintFvPatches)/processorCyclic/processorCyclicFvPatch.C
+$(constraintFvPatches)/symmetryPlane/symmetryPlaneFvPatch.C
 $(constraintFvPatches)/symmetry/symmetryFvPatch.C
 $(constraintFvPatches)/wedge/wedgeFvPatch.C
 
@@ -119,6 +120,8 @@ $(constraintFvPatchFields)/nonuniformTransformCyclic/nonuniformTransformCyclicFv
 $(constraintFvPatchFields)/processor/processorFvPatchFields.C
 $(constraintFvPatchFields)/processor/processorFvPatchScalarField.C
 $(constraintFvPatchFields)/processorCyclic/processorCyclicFvPatchFields.C
+$(constraintFvPatchFields)/symmetryPlane/symmetryPlaneFvPatchFields.C
+$(constraintFvPatchFields)/symmetryPlane/symmetryPlaneFvPatchScalarField.C
 $(constraintFvPatchFields)/symmetry/symmetryFvPatchFields.C
 $(constraintFvPatchFields)/wedge/wedgeFvPatchFields.C
 $(constraintFvPatchFields)/wedge/wedgeFvPatchScalarField.C
@@ -213,6 +216,7 @@ $(constraintFvsPatchFields)/empty/emptyFvsPatchFields.C
 $(constraintFvsPatchFields)/nonuniformTransformCyclic/nonuniformTransformCyclicFvsPatchFields.C
 $(constraintFvsPatchFields)/processor/processorFvsPatchFields.C
 $(constraintFvsPatchFields)/processorCyclic/processorCyclicFvsPatchFields.C
+$(constraintFvsPatchFields)/symmetryPlane/symmetryPlaneFvsPatchFields.C
 $(constraintFvsPatchFields)/symmetry/symmetryFvsPatchFields.C
 $(constraintFvsPatchFields)/wedge/wedgeFvsPatchFields.C
 
diff --git a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.C
index 32ab1deb1f50961e5734a9a6ea2147ac70e1cb15..40f3f5467fb4990d62566e781ce5b6718a21d4d9 100644
--- a/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/basic/basicSymmetry/basicSymmetryFvPatchScalarField.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -26,22 +26,21 @@ License
 #include "basicSymmetryFvPatchField.H"
 #include "volFields.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 template<>
-tmp<scalarField > basicSymmetryFvPatchField<scalar>::snGrad() const
+Foam::tmp<Foam::scalarField>
+Foam::basicSymmetryFvPatchField<Foam::scalar>::snGrad() const
 {
     return tmp<scalarField >(new scalarField(size(), 0.0));
 }
 
 
 template<>
-void basicSymmetryFvPatchField<scalar>::evaluate(const Pstream::commsTypes)
+void Foam::basicSymmetryFvPatchField<Foam::scalar>::evaluate
+(
+    const Pstream::commsTypes
+)
 {
     if (!updated())
     {
@@ -53,8 +52,4 @@ void basicSymmetryFvPatchField<scalar>::evaluate(const Pstream::commsTypes)
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-} // End namespace Foam
-
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H
index a5812c09b4b7204791d689a5cc9deb1e6d01de77..191bd597d1b68060be2f34ea98954836815e1fc6 100644
--- a/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetry/symmetryFvPatchField.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -36,7 +36,7 @@ Description
     \verbatim
     myPatch
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
     \endverbatim
 
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.C
new file mode 100644
index 0000000000000000000000000000000000000000..053a56689b6c543e5d1e55190f94c74a91847509
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.C
@@ -0,0 +1,201 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlaneFvPatchField.H"
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField
+(
+    const fvPatch& p,
+    const DimensionedField<Type, volMesh>& iF
+)
+:
+    basicSymmetryFvPatchField<Type>(p, iF),
+    symmetryPlanePatch_(refCast<const symmetryPlaneFvPatch>(p))
+{}
+
+
+template<class Type>
+Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField
+(
+    const symmetryPlaneFvPatchField<Type>& ptf,
+    const fvPatch& p,
+    const DimensionedField<Type, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    basicSymmetryFvPatchField<Type>(ptf, p, iF, mapper),
+    symmetryPlanePatch_(refCast<const symmetryPlaneFvPatch>(p))
+{
+    if (!isType<symmetryPlaneFvPatch>(this->patch()))
+    {
+        FatalErrorIn
+        (
+            "symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField\n"
+            "(\n"
+            "    const symmetryPlaneFvPatchField<Type>& ptf,\n"
+            "    const fvPatch& p,\n"
+            "    const DimensionedField<Type, volMesh>& iF,\n"
+            "    const fvPatchFieldMapper& mapper\n"
+            ")\n"
+        )   << "\n    patch type '" << p.type()
+            << "' not constraint type '" << typeName << "'"
+            << "\n    for patch " << p.name()
+            << " of field " << this->dimensionedInternalField().name()
+            << " in file " << this->dimensionedInternalField().objectPath()
+            << exit(FatalIOError);
+    }
+}
+
+
+template<class Type>
+Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField
+(
+    const fvPatch& p,
+    const DimensionedField<Type, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    basicSymmetryFvPatchField<Type>(p, iF, dict),
+    symmetryPlanePatch_(refCast<const symmetryPlaneFvPatch>(p))
+{
+    if (!isType<symmetryPlaneFvPatch>(p))
+    {
+        FatalIOErrorIn
+        (
+            "symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField\n"
+            "(\n"
+            "    const fvPatch& p,\n"
+            "    const Field<Type>& field,\n"
+            "    const dictionary& dict\n"
+            ")\n",
+            dict
+        )   << "\n    patch type '" << p.type()
+            << "' not constraint type '" << typeName << "'"
+            << "\n    for patch " << p.name()
+            << " of field " << this->dimensionedInternalField().name()
+            << " in file " << this->dimensionedInternalField().objectPath()
+            << exit(FatalIOError);
+    }
+}
+
+
+template<class Type>
+Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField
+(
+    const symmetryPlaneFvPatchField<Type>& ptf
+)
+:
+    basicSymmetryFvPatchField<Type>(ptf),
+    symmetryPlanePatch_(ptf.symmetryPlanePatch_)
+{}
+
+
+template<class Type>
+Foam::symmetryPlaneFvPatchField<Type>::symmetryPlaneFvPatchField
+(
+    const symmetryPlaneFvPatchField<Type>& ptf,
+    const DimensionedField<Type, volMesh>& iF
+)
+:
+    basicSymmetryFvPatchField<Type>(ptf, iF),
+    symmetryPlanePatch_(ptf.symmetryPlanePatch_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::tmp<Foam::Field<Type> >
+Foam::symmetryPlaneFvPatchField<Type>::snGrad() const
+{
+    vector nHat(symmetryPlanePatch_.n());
+
+    const Field<Type> iF(this->patchInternalField());
+
+    return
+        (transform(I - 2.0*sqr(nHat), iF) - iF)
+       *(this->patch().deltaCoeffs()/2.0);
+}
+
+
+template<class Type>
+void Foam::symmetryPlaneFvPatchField<Type>::evaluate(const Pstream::commsTypes)
+{
+    if (!this->updated())
+    {
+        this->updateCoeffs();
+    }
+
+    vector nHat(symmetryPlanePatch_.n());
+
+    const Field<Type> iF(this->patchInternalField());
+
+    Field<Type>::operator=
+    (
+        (iF + transform(I - 2.0*sqr(nHat), iF))/2.0
+    );
+
+    transformFvPatchField<Type>::evaluate();
+}
+
+
+template<class Type>
+Foam::tmp<Foam::Field<Type> >
+Foam::symmetryPlaneFvPatchField<Type>::snGradTransformDiag() const
+{
+    vector nHat(symmetryPlanePatch_.n());
+
+    const vector diag
+    (
+        mag(nHat.component(vector::X)),
+        mag(nHat.component(vector::Y)),
+        mag(nHat.component(vector::Z))
+    );
+
+    return tmp<Field<Type> >
+    (
+        new Field<Type>
+        (
+            this->size(),
+            transformMask<Type>
+            (
+                //pow<vector, pTraits<Type>::rank>(diag)
+                pow
+                (
+                    diag,
+                    pTraits<typename powProduct<vector, pTraits<Type>::rank>
+                    ::type>::zero
+                )
+            )
+        )
+    );
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H
new file mode 100644
index 0000000000000000000000000000000000000000..5f17938aa4952852e1fc147dd662bdc9797d387f
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchField.H
@@ -0,0 +1,189 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::symmetryPlaneFvPatchField
+
+Group
+    grpConstraintBoundaryConditions
+
+Description
+    This boundary condition enforces a symmetryPlane constraint
+
+    \heading Patch usage
+
+    Example of the boundary condition specification:
+    \verbatim
+    myPatch
+    {
+        type            symmetryPlane;
+    }
+    \endverbatim
+
+SourceFiles
+    symmetryPlaneFvPatchField.C
+    symmetryPlaneFvPatchFields.C
+    symmetryPlaneFvPatchFields.H
+    symmetryPlaneFvPatchFieldsFwd.H
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlaneFvPatchField_H
+#define symmetryPlaneFvPatchField_H
+
+#include "basicSymmetryFvPatchField.H"
+#include "symmetryPlaneFvPatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class symmetryPlaneFvPatchField Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Type>
+class symmetryPlaneFvPatchField
+:
+    public basicSymmetryFvPatchField<Type>
+{
+    // Private data
+
+        //- Local reference cast into the symmetryPlane patch
+        const symmetryPlaneFvPatch& symmetryPlanePatch_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName(symmetryPlaneFvPatch::typeName_());
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        symmetryPlaneFvPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, volMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        symmetryPlaneFvPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, volMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given symmetryPlaneFvPatchField
+        //  onto a new patch
+        symmetryPlaneFvPatchField
+        (
+            const symmetryPlaneFvPatchField<Type>&,
+            const fvPatch&,
+            const DimensionedField<Type, volMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        symmetryPlaneFvPatchField
+        (
+            const symmetryPlaneFvPatchField<Type>&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvPatchField<Type> > clone() const
+        {
+            return tmp<fvPatchField<Type> >
+            (
+                new symmetryPlaneFvPatchField<Type>(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        symmetryPlaneFvPatchField
+        (
+            const symmetryPlaneFvPatchField<Type>&,
+            const DimensionedField<Type, volMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvPatchField<Type> > clone
+        (
+            const DimensionedField<Type, volMesh>& iF
+        ) const
+        {
+            return tmp<fvPatchField<Type> >
+            (
+                new symmetryPlaneFvPatchField<Type>(*this, iF)
+            );
+        }
+
+
+    // Member functions
+
+        // Evaluation functions
+
+            //- Return gradient at boundary
+            virtual tmp<Field<Type> > snGrad() const;
+
+            //- Evaluate the patch field
+            virtual void evaluate
+            (
+                const Pstream::commsTypes commsType=Pstream::blocking
+            );
+
+            //- Return face-gradient transform diagonal
+            virtual tmp<Field<Type> > snGradTransformDiag() const;
+};
+
+
+// * * * * * * * * * * * Template Specialisations  * * * * * * * * * * * * * //
+
+template<>
+tmp<scalarField> symmetryPlaneFvPatchField<scalar>::snGrad() const;
+
+template<>
+void symmetryPlaneFvPatchField<scalar>::evaluate
+(
+    const Pstream::commsTypes commsType
+);
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "symmetryPlaneFvPatchField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.C b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.C
new file mode 100644
index 0000000000000000000000000000000000000000..5430190f01b40e57ff773df7d415a099a7245d21
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlaneFvPatchFields.H"
+#include "addToRunTimeSelectionTable.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+makePatchFields(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..8b32421c2113b733802987977d6a1ea4089b0be4
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFields.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlaneFvPatchFields_H
+#define symmetryPlaneFvPatchFields_H
+
+#include "symmetryPlaneFvPatchField.H"
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makePatchTypeFieldTypedefs(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFieldsFwd.H b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFieldsFwd.H
new file mode 100644
index 0000000000000000000000000000000000000000..ef8a3946a37afc6504d68e6b267d5a582fb39b3f
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchFieldsFwd.H
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlaneFvPatchFieldsFwd_H
+#define symmetryPlaneFvPatchFieldsFwd_H
+
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template<class Type> class symmetryPlaneFvPatchField;
+
+makePatchTypeFieldTypedefs(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchScalarField.C
new file mode 100644
index 0000000000000000000000000000000000000000..4f439406268e9fdbcf3b1bc799188e776aeaab42
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/constraint/symmetryPlane/symmetryPlaneFvPatchScalarField.C
@@ -0,0 +1,55 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlaneFvPatchField.H"
+#include "volFields.H"
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<>
+Foam::tmp<Foam::scalarField>
+Foam::symmetryPlaneFvPatchField<Foam::scalar>::snGrad() const
+{
+    return tmp<scalarField >(new scalarField(size(), 0.0));
+}
+
+
+template<>
+void Foam::symmetryPlaneFvPatchField<Foam::scalar>::evaluate
+(
+    const Pstream::commsTypes
+)
+{
+    if (!updated())
+    {
+        updateCoeffs();
+    }
+
+    scalarField::operator=(patchInternalField());
+    transformFvPatchField<scalar>::evaluate();
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
index a7205577f301e63d0c61c3f25bcf7bc7c8d92f0c..f93817c3c7a940deb05f075cf2866d42f215f8cb 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchField.C
@@ -536,7 +536,8 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::updateCoeffs()
     if (debug)
     {
         Pout<< "updateCoeffs : set fixedValue to min:" << gMin(*this)
-            << " max:" << gMax(*this) << endl;
+            << " max:" << gMax(*this)
+            << " avg:" << gAverage(*this) << endl;
     }
 
     fixedValueFvPatchField<Type>::updateCoeffs();
@@ -548,7 +549,10 @@ void timeVaryingMappedFixedValueFvPatchField<Type>::write(Ostream& os) const
 {
     fvPatchField<Type>::write(os);
     os.writeKeyword("setAverage") << setAverage_ << token::END_STATEMENT << nl;
-    os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl;
+    if (perturb_ != 1e-5)
+    {
+        os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl;
+    }
 
     if (fieldTableName_ != this->dimensionedInternalField().name())
     {
diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.C b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.C
new file mode 100644
index 0000000000000000000000000000000000000000..9e3477d5864ec618bff8d22ac65f53f2c036694e
--- /dev/null
+++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.C
@@ -0,0 +1,130 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlaneFvsPatchField.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField
+(
+    const fvPatch& p,
+    const DimensionedField<Type, surfaceMesh>& iF
+)
+:
+    fvsPatchField<Type>(p, iF)
+{}
+
+
+template<class Type>
+symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField
+(
+    const symmetryPlaneFvsPatchField<Type>& ptf,
+    const fvPatch& p,
+    const DimensionedField<Type, surfaceMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    fvsPatchField<Type>(ptf, p, iF, mapper)
+{
+    if (!isType<symmetryPlaneFvPatch>(this->patch()))
+    {
+        FatalErrorIn
+        (
+            "symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField\n"
+            "(\n"
+            "    const symmetryPlaneFvsPatchField<Type>& ptf,\n"
+            "    const fvPatch& p,\n"
+            "    const DimensionedField<Type, surfaceMesh>& iF,\n"
+            "    const fvPatchFieldMapper& mapper\n"
+            ")\n"
+        )   << "Field type does not correspond to patch type for patch "
+            << this->patch().index() << "." << endl
+            << "Field type: " << typeName << endl
+            << "Patch type: " << this->patch().type()
+            << exit(FatalError);
+    }
+}
+
+
+template<class Type>
+symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField
+(
+    const fvPatch& p,
+    const DimensionedField<Type, surfaceMesh>& iF,
+    const dictionary& dict
+)
+:
+    fvsPatchField<Type>(p, iF, dict)
+{
+    if (!isType<symmetryPlaneFvPatch>(p))
+    {
+        FatalIOErrorIn
+        (
+            "symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField\n"
+            "(\n"
+            "    const fvPatch& p,\n"
+            "    const Field<Type>& field,\n"
+            "    const dictionary& dict\n"
+            ")\n",
+            dict
+        )   << "patch " << this->patch().index() << " not symmetryPlane type. "
+            << "Patch type = " << p.type()
+            << exit(FatalIOError);
+    }
+}
+
+
+template<class Type>
+symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField
+(
+    const symmetryPlaneFvsPatchField<Type>& ptf
+)
+:
+    fvsPatchField<Type>(ptf)
+{}
+
+
+template<class Type>
+symmetryPlaneFvsPatchField<Type>::symmetryPlaneFvsPatchField
+(
+    const symmetryPlaneFvsPatchField<Type>& ptf,
+    const DimensionedField<Type, surfaceMesh>& iF
+)
+:
+    fvsPatchField<Type>(ptf, iF)
+{}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.H b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.H
new file mode 100644
index 0000000000000000000000000000000000000000..8dd2035610147c02140911b4a55bb68d98f5e538
--- /dev/null
+++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchField.H
@@ -0,0 +1,139 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::symmetryPlaneFvsPatchField
+
+Description
+    Foam::symmetryPlaneFvsPatchField
+
+SourceFiles
+    symmetryPlaneFvsPatchField.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlaneFvsPatchField_H
+#define symmetryPlaneFvsPatchField_H
+
+#include "fvsPatchField.H"
+#include "symmetryPlaneFvPatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                         Class symmetryPlaneFvsPatch Declaration
+\*---------------------------------------------------------------------------*/
+
+template<class Type>
+class symmetryPlaneFvsPatchField
+:
+    public fvsPatchField<Type>
+{
+
+public:
+
+    //- Runtime type information
+    TypeName(symmetryPlaneFvPatch::typeName_());
+
+
+    // Constructors
+
+        //- Construct from patch and internal field
+        symmetryPlaneFvsPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, surfaceMesh>&
+        );
+
+        //- Construct from patch, internal field and dictionary
+        symmetryPlaneFvsPatchField
+        (
+            const fvPatch&,
+            const DimensionedField<Type, surfaceMesh>&,
+            const dictionary&
+        );
+
+        //- Construct by mapping given symmetryPlaneFvsPatchField
+        //  onto a new patch
+        symmetryPlaneFvsPatchField
+        (
+            const symmetryPlaneFvsPatchField<Type>&,
+            const fvPatch&,
+            const DimensionedField<Type, surfaceMesh>&,
+            const fvPatchFieldMapper&
+        );
+
+        //- Construct as copy
+        symmetryPlaneFvsPatchField
+        (
+            const symmetryPlaneFvsPatchField<Type>&
+        );
+
+        //- Construct and return a clone
+        virtual tmp<fvsPatchField<Type> > clone() const
+        {
+            return tmp<fvsPatchField<Type> >
+            (
+                new symmetryPlaneFvsPatchField<Type>(*this)
+            );
+        }
+
+        //- Construct as copy setting internal field reference
+        symmetryPlaneFvsPatchField
+        (
+            const symmetryPlaneFvsPatchField<Type>&,
+            const DimensionedField<Type, surfaceMesh>&
+        );
+
+        //- Construct and return a clone setting internal field reference
+        virtual tmp<fvsPatchField<Type> > clone
+        (
+            const DimensionedField<Type, surfaceMesh>& iF
+        ) const
+        {
+            return tmp<fvsPatchField<Type> >
+            (
+                new symmetryPlaneFvsPatchField<Type>(*this, iF)
+            );
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#ifdef NoRepository
+#   include "symmetryPlaneFvsPatchField.C"
+#endif
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.C b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.C
new file mode 100644
index 0000000000000000000000000000000000000000..0d881f615c0755b0b48846394af774cdc741314e
--- /dev/null
+++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlaneFvsPatchFields.H"
+#include "fvsPatchFields.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+makeFvsPatchFields(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.H b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.H
new file mode 100644
index 0000000000000000000000000000000000000000..b7d5e2cab80cee416a5b64124f770e4ce9365aca
--- /dev/null
+++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFields.H
@@ -0,0 +1,49 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlaneFvsPatchFields_H
+#define symmetryPlaneFvsPatchFields_H
+
+#include "symmetryPlaneFvsPatchField.H"
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+makeFvsPatchTypeFieldTypedefs(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFieldsFwd.H b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFieldsFwd.H
new file mode 100644
index 0000000000000000000000000000000000000000..c041cbf295b777bdc867449ebb82e6408c1324b2
--- /dev/null
+++ b/src/finiteVolume/fields/fvsPatchFields/constraint/symmetryPlane/symmetryPlaneFvsPatchFieldsFwd.H
@@ -0,0 +1,50 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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/>.
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlaneFvsPatchFieldsFwd_H
+#define symmetryPlaneFvsPatchFieldsFwd_H
+
+#include "fieldTypes.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+template<class Type> class symmetryPlaneFvsPatchField;
+
+makeFvsPatchTypeFieldTypedefs(symmetryPlane);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H
index 11ca298ec4ed679f83ddf453a71b447ea25d1e34..ba10021d51949f2ce6452d164fe6c1b9c4a067ef 100644
--- a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H
+++ b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetry/symmetryFvPatch.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -25,7 +25,7 @@ Class
     Foam::symmetryFvPatch
 
 Description
-    Symmetry-plane patch.
+    Symmetry patch for non-planar or multi-plane patches.
 
 SourceFiles
     symmetryFvPatch.C
diff --git a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.C b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.C
new file mode 100644
index 0000000000000000000000000000000000000000..cabfd123c6b1777485bfe23059e4a4e547c69de0
--- /dev/null
+++ b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.C
@@ -0,0 +1,43 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "symmetryPlaneFvPatch.H"
+#include "addToRunTimeSelectionTable.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defineTypeNameAndDebug(symmetryPlaneFvPatch, 0);
+addToRunTimeSelectionTable(fvPatch, symmetryPlaneFvPatch, polyPatch);
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.H b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.H
new file mode 100644
index 0000000000000000000000000000000000000000..069b37b6bc332fea1f61b57d97813f2a04d0d325
--- /dev/null
+++ b/src/finiteVolume/fvMesh/fvPatches/constraint/symmetryPlane/symmetryPlaneFvPatch.H
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::symmetryPlaneFvPatch
+
+Description
+    Symmetry-plane patch.
+
+SourceFiles
+    symmetryPlaneFvPatch.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef symmetryPlaneFvPatch_H
+#define symmetryPlaneFvPatch_H
+
+#include "fvPatch.H"
+#include "symmetryPlanePolyPatch.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+                           Class symmetryPlaneFvPatch Declaration
+\*---------------------------------------------------------------------------*/
+
+class symmetryPlaneFvPatch
+:
+    public fvPatch
+{
+    // Private data
+
+        //- Local reference cast into the symmetryPlane patch
+        const symmetryPlanePolyPatch& symmetryPlanePolyPatch_;
+
+
+public:
+
+    //- Runtime type information
+    TypeName(symmetryPlanePolyPatch::typeName_());
+
+
+    // Constructors
+
+        //- Construct from polyPatch
+        symmetryPlaneFvPatch(const polyPatch& patch, const fvBoundaryMesh& bm)
+        :
+            fvPatch(patch, bm),
+            symmetryPlanePolyPatch_
+            (
+                refCast<const symmetryPlanePolyPatch>(patch)
+            )
+        {}
+
+
+    // Member Functions
+
+        //- Return symmetry plane normal
+        const vector& n() const
+        {
+            return symmetryPlanePolyPatch_.n();
+        }
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C
index bb370fffb8e2dfe12fe641b350811cea3a3e1c4e..5bc4d56e9414f88583067db33246031a7a68d57a 100644
--- a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C
+++ b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.C
@@ -51,11 +51,11 @@ void pointConstraints::makePatchPatchAddressing()
             << endl;
     }
 
-    const pointMesh& pMesh = mesh();
-    const polyMesh& mesh = pMesh();
+    //const polyMesh& mesh = mesh();
+    const pointMesh& pMesh = pointMesh::New(mesh());
 
     const pointBoundaryMesh& pbm = pMesh.boundary();
-    const polyBoundaryMesh& bm = mesh.boundaryMesh();
+    const polyBoundaryMesh& bm = mesh().boundaryMesh();
 
 
     // first count the total number of patch-patch points
@@ -146,7 +146,7 @@ void pointConstraints::makePatchPatchAddressing()
     // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 
     {
-        const globalMeshData& gd = mesh.globalData();
+        const globalMeshData& gd = mesh().globalData();
         const labelListList& globalPointSlaves = gd.globalPointSlaves();
         const mapDistribute& globalPointSlavesMap = gd.globalPointSlavesMap();
         const Map<label>& cpPointMap = gd.coupledPatch().meshPointMap();
@@ -226,7 +226,7 @@ void pointConstraints::makePatchPatchAddressing()
                 {
                     //Pout<< "on meshpoint:" << meshPointI
                     //    << " coupled:" << coupledPointI
-                    //    << " at:" << mesh.points()[meshPointI]
+                    //    << " at:" << mesh().points()[meshPointI]
                     //    << " have new constraint:"
                     //    << constraints[coupledPointI]
                     //    << endl;
@@ -244,7 +244,7 @@ void pointConstraints::makePatchPatchAddressing()
                 {
                     //Pout<< "on meshpoint:" << meshPointI
                     //    << " coupled:" << coupledPointI
-                    //    << " at:" << mesh.points()[meshPointI]
+                    //    << " at:" << mesh().points()[meshPointI]
                     //    << " have possibly extended constraint:"
                     //    << constraints[coupledPointI]
                     //    << endl;
@@ -323,9 +323,10 @@ void pointConstraints::makePatchPatchAddressing()
 
 // * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * * //
 
-pointConstraints::pointConstraints(const pointMesh& pm)
+//pointConstraints::pointConstraints(const pointMesh& pm)
+pointConstraints::pointConstraints(const polyMesh& pm)
 :
-    MeshObject<pointMesh, Foam::UpdateableMeshObject, pointConstraints>(pm)
+    MeshObject<polyMesh, Foam::UpdateableMeshObject, pointConstraints>(pm)
 {
     makePatchPatchAddressing();
 }
@@ -334,7 +335,12 @@ pointConstraints::pointConstraints(const pointMesh& pm)
 // * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * * //
 
 pointConstraints::~pointConstraints()
-{}
+{
+    if (debug)
+    {
+        Pout<< "pointConstraints::~pointConstraints()" << endl;
+    }
+}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
@@ -375,9 +381,9 @@ void pointConstraints::constrainDisplacement
 
     // Apply any 2D motion constraints (or should they go before
     // corner constraints?)
-    twoDPointCorrector::New(mesh()()).correctDisplacement
+    twoDPointCorrector::New(mesh()).correctDisplacement
     (
-        mesh()().points(),
+        mesh().points(),
         pf.internalField()
     );
 
diff --git a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H
index 06515ba003b58673103035ccacd551457003c452..b5256155ee7cdb60e497a5d8b8bc9cc680430c06 100644
--- a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H
+++ b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraints.H
@@ -34,6 +34,11 @@ Description
           coupled to points which are not on any constraint patch and we
           don't want to get inconsistency between the two points.
 
+    Note: is currently MeshObject on polyMesh but should really be on
+          pointMesh. The problem is that pointMesh::updateMesh never
+          gets called (since currently polyMesh gets reset and destroys
+          pointMesh)
+
 SourceFiles
     pointConstraints.C
     pointConstraintsTemplates.C
@@ -62,7 +67,8 @@ class polyMesh;
 
 class pointConstraints
 :
-    public MeshObject<pointMesh, UpdateableMeshObject, pointConstraints>
+//See above:public MeshObject<pointMesh, UpdateableMeshObject, pointConstraints>
+    public MeshObject<polyMesh, UpdateableMeshObject, pointConstraints>
 {
     // Private data
 
@@ -97,7 +103,8 @@ public:
     // Constructors
 
         //- Constructor from pointMesh.
-        explicit pointConstraints(const pointMesh&);
+        //explicit pointConstraints(const pointMesh&);
+        explicit pointConstraints(const polyMesh&);
 
 
     //- Destructor
diff --git a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C
index 724d827e7ffec97fab2bed41bd132bd374a398f4..c30ee47c2a0374e792340498c11e758811d2a93d 100644
--- a/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C
+++ b/src/finiteVolume/interpolation/volPointInterpolation/pointConstraintsTemplates.C
@@ -139,7 +139,12 @@ void pointConstraints::constrain
     pf.correctBoundaryConditions();
 
     // Sync any dangling points
-    syncUntransformedData(mesh()(), pf.internalField(), maxMagSqrEqOp<Type>());
+    syncUntransformedData
+    (
+        pf.mesh()(),
+        pf.internalField(),
+        maxMagSqrEqOp<Type>()
+    );
 
     // Apply multiple constraints on edge/corner points
     constrainCorners(pf);
diff --git a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C
index 2c9bf7d5e4b1d601cce470a11069aa6026a382de..16b3abed4edc9bc2d5507f57983061f1fd553739 100644
--- a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C
+++ b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolate.C
@@ -271,7 +271,7 @@ void volPointInterpolation::interpolateBoundaryField
     interpolateBoundaryField(vf, pf);
 
     // Apply constraints
-    const pointConstraints& pcs = pointConstraints::New(pf.mesh());
+    const pointConstraints& pcs = pointConstraints::New(vf.mesh());
 
     pcs.constrain(pf, overrideFixedValue);
 }
diff --git a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C
index 7a307d31ae697aa52b00b76d949ddf59c72cacc0..53e1e4c448488ff3ede623e8ae15f409741adf09 100644
--- a/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C
+++ b/src/finiteVolume/interpolation/volPointInterpolation/volPointInterpolation.C
@@ -390,7 +390,7 @@ void volPointInterpolation::interpolateDisplacement
     interpolateBoundaryField(vf, pf);
 
     // Apply displacement constraints
-    const pointConstraints& pcs = pointConstraints::New(pf.mesh());
+    const pointConstraints& pcs = pointConstraints::New(vf.mesh());
 
     pcs.constrainDisplacement(pf, false);
 }
diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C
index cf1b18b89df764bfe3343339ab941401958fff88..bbbc75f396873331c57b5cd9c4147e7628954e42 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C
+++ b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.C
@@ -48,8 +48,8 @@ timeVaryingMappedFixedValuePointPatchField
     startAverage_(pTraits<Type>::zero),
     endSampleTime_(-1),
     endSampledValues_(0),
-    endAverage_(pTraits<Type>::zero)
-
+    endAverage_(pTraits<Type>::zero),
+    offset_()
 {}
 
 
@@ -75,7 +75,13 @@ timeVaryingMappedFixedValuePointPatchField
     startAverage_(pTraits<Type>::zero),
     endSampleTime_(-1),
     endSampledValues_(0),
-    endAverage_(pTraits<Type>::zero)
+    endAverage_(pTraits<Type>::zero),
+    offset_
+    (
+        ptf.offset_.valid()
+      ? ptf.offset_().clone().ptr()
+      : NULL
+    )
 {}
 
 
@@ -100,8 +106,14 @@ timeVaryingMappedFixedValuePointPatchField
     startAverage_(pTraits<Type>::zero),
     endSampleTime_(-1),
     endSampledValues_(0),
-    endAverage_(pTraits<Type>::zero)
+    endAverage_(pTraits<Type>::zero),
+    offset_()
 {
+    if (dict.found("offset"))
+    {
+        offset_ = DataEntry<Type>::New("offset", dict);
+    }
+
     dict.readIfPresent("fieldTableName", fieldTableName_);
 
     if (dict.found("value"))
@@ -141,7 +153,13 @@ timeVaryingMappedFixedValuePointPatchField
     startAverage_(ptf.startAverage_),
     endSampleTime_(ptf.endSampleTime_),
     endSampledValues_(ptf.endSampledValues_),
-    endAverage_(ptf.endAverage_)
+    endAverage_(ptf.endAverage_),
+    offset_
+    (
+        ptf.offset_.valid()
+      ? ptf.offset_().clone().ptr()
+      : NULL
+    )
 {}
 
 
@@ -165,7 +183,13 @@ timeVaryingMappedFixedValuePointPatchField
     startAverage_(ptf.startAverage_),
     endSampleTime_(ptf.endSampleTime_),
     endSampledValues_(ptf.endSampledValues_),
-    endAverage_(ptf.endAverage_)
+    endAverage_(ptf.endAverage_),
+    offset_
+    (
+        ptf.offset_.valid()
+      ? ptf.offset_().clone().ptr()
+      : NULL
+    )
 {}
 
 
@@ -532,10 +556,18 @@ void Foam::timeVaryingMappedFixedValuePointPatchField<Type>::updateCoeffs()
         }
     }
 
+    // apply offset to mapped values
+    if (offset_.valid())
+    {
+        const scalar t = this->db().time().timeOutputValue();
+        this->operator==(*this + offset_->value(t));
+    }
+
     if (debug)
     {
         Pout<< "updateCoeffs : set fixedValue to min:" << gMin(*this)
-            << " max:" << gMax(*this) << endl;
+            << " max:" << gMax(*this)
+            << " avg:" << gAverage(*this) << endl;
     }
 
     fixedValuePointPatchField<Type>::updateCoeffs();
@@ -550,13 +582,21 @@ void Foam::timeVaryingMappedFixedValuePointPatchField<Type>::write
 {
     fixedValuePointPatchField<Type>::write(os);
     os.writeKeyword("setAverage") << setAverage_ << token::END_STATEMENT << nl;
-    os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl;
+    if (perturb_ != 1e-5)
+    {
+        os.writeKeyword("perturb") << perturb_ << token::END_STATEMENT << nl;
+    }
 
     if (fieldTableName_ != this->dimensionedInternalField().name())
     {
         os.writeKeyword("fieldTableName") << fieldTableName_
             << token::END_STATEMENT << nl;
     }
+
+    if (offset_.valid())
+    {
+        offset_->writeData(os);
+    }
 }
 
 
diff --git a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H
index 942dc3e4a643960058160516e32533b59cc49937..ed87fa4c543a1352ef111ab1020b73667f5c6d73 100644
--- a/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H
+++ b/src/fvMotionSolver/pointPatchFields/derived/timeVaryingMappedFixedValue/timeVaryingMappedFixedValuePointPatchField.H
@@ -41,6 +41,7 @@ SourceFiles
 #include "fixedValuePointPatchField.H"
 #include "instantList.H"
 #include "pointToPointPlanarInterpolation.H"
+#include "DataEntry.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -91,6 +92,9 @@ class timeVaryingMappedFixedValuePointPatchField
         //- If setAverage: end average value
         Type endAverage_;
 
+        //- Time varying offset values to interpolated data
+        autoPtr<DataEntry<Type> > offset_;
+
 
 public:
 
diff --git a/src/lagrangian/basic/particle/particle.H b/src/lagrangian/basic/particle/particle.H
index 0275cc5fd1ec6ed1cd6bcd20b3d8fac3d86666c6..6cb1838e83a482e4d82f213a05209d41a6f4d46d 100644
--- a/src/lagrangian/basic/particle/particle.H
+++ b/src/lagrangian/basic/particle/particle.H
@@ -55,6 +55,7 @@ class polyPatch;
 
 class cyclicPolyPatch;
 class processorPolyPatch;
+class symmetryPlanePolyPatch;
 class symmetryPolyPatch;
 class wallPolyPatch;
 class wedgePolyPatch;
@@ -248,6 +249,15 @@ protected:
         template<class TrackData>
         void hitWedgePatch(const wedgePolyPatch&, TrackData& td);
 
+        //- Overridable function to handle the particle hitting a
+        //  symmetryPlanePatch
+        template<class TrackData>
+        void hitSymmetryPlanePatch
+        (
+            const symmetryPlanePolyPatch&,
+            TrackData& td
+        );
+
         //- Overridable function to handle the particle hitting a
         //  symmetryPatch
         template<class TrackData>
diff --git a/src/lagrangian/basic/particle/particleTemplates.C b/src/lagrangian/basic/particle/particleTemplates.C
index ad50f7ddd8261ee575e4ca0f7420a6bcdf484811..3f47fe82e6ad4f6ad9631ea85695161ef49b31ab 100644
--- a/src/lagrangian/basic/particle/particleTemplates.C
+++ b/src/lagrangian/basic/particle/particleTemplates.C
@@ -28,6 +28,7 @@ License
 #include "cyclicPolyPatch.H"
 #include "cyclicAMIPolyPatch.H"
 #include "processorPolyPatch.H"
+#include "symmetryPlanePolyPatch.H"
 #include "symmetryPolyPatch.H"
 #include "wallPolyPatch.H"
 #include "wedgePolyPatch.H"
@@ -585,6 +586,13 @@ Foam::scalar Foam::particle::trackToFace
                     static_cast<const wedgePolyPatch&>(patch), td
                 );
             }
+            else if (isA<symmetryPlanePolyPatch>(patch))
+            {
+                p.hitSymmetryPlanePatch
+                (
+                    static_cast<const symmetryPlanePolyPatch&>(patch), td
+                );
+            }
             else if (isA<symmetryPolyPatch>(patch))
             {
                 p.hitSymmetryPatch
@@ -958,6 +966,20 @@ void Foam::particle::hitWedgePatch
 }
 
 
+template<class TrackData>
+void Foam::particle::hitSymmetryPlanePatch
+(
+    const symmetryPlanePolyPatch& spp,
+    TrackData&
+)
+{
+    vector nf = normal();
+    nf /= mag(nf);
+
+    transformProperties(I - 2.0*nf*nf);
+}
+
+
 template<class TrackData>
 void Foam::particle::hitSymmetryPatch
 (
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
index 298ca934d19206356ee53c3c17851aac1d9bed40..ee94b0b0156265b28f7c57b89975407c41f49188 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriver.H
@@ -510,7 +510,7 @@ private:
                     const motionSmoother& meshMover,
                     const label nSmoothNormals,
                     const label nSmoothSurfaceNormals,
-                    const scalar minMedianAxisAngleCos,
+                    const scalar minMedialAxisAngleCos,
                     const scalar featureAngle,
 
                     pointVectorField& dispVec,
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C
index a2d7a39a3a6eb5fb1680c47636489fa90271c847..e8c3d38cd6c30778ca58b80a12459cc797d48ef0 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/autoLayerDriverShrink.C
@@ -864,7 +864,7 @@ void Foam::autoLayerDriver::medialAxisSmoothingInfo
     const motionSmoother& meshMover,
     const label nSmoothNormals,
     const label nSmoothSurfaceNormals,
-    const scalar minMedianAxisAngleCos,
+    const scalar minMedialAxisAngleCos,
     const scalar featureAngle,
 
     pointVectorField& dispVec,
@@ -1049,7 +1049,7 @@ void Foam::autoLayerDriver::medialAxisSmoothingInfo
             {
                 // Unvisited point. See above about nUnvisit warning
             }
-            else if (isMaxEdge(pointWallDist, edgeI, minMedianAxisAngleCos))
+            else if (isMaxEdge(pointWallDist, edgeI, minMedialAxisAngleCos))
             {
                 // Both end points of edge have very different nearest wall
                 // point. Mark both points as medial axis points.
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C
index 8ac5eadea544b715175d1cc8db3f6b12886e6a0c..b466e17de2fcb627b72eed5c0dc293f3de3ad8f8 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.C
@@ -154,10 +154,6 @@ Foam::layerParameters::layerParameters
     (
         readScalar(dict.lookup("maxThicknessToMedialRatio"))
     ),
-    minMedianAxisAngleCos_
-    (
-        Foam::cos(degToRad(readScalar(dict.lookup("minMedianAxisAngle"))))
-    ),
     nBufferCellsNoExtrude_
     (
         readLabel(dict.lookup("nBufferCellsNoExtrude"))
@@ -175,6 +171,18 @@ Foam::layerParameters::layerParameters
         )
     )
 {
+    word angleKey = "minMedialAxisAngle";
+    if (!dict.found(angleKey))
+    {
+        // Backwards compatibility
+        angleKey = "minMedianAxisAngle";
+    }
+    minMedialAxisAngleCos_ = Foam::cos
+    (
+        degToRad(readScalar(dict.lookup(angleKey)))
+    );
+
+
     // Detect layer specification mode
 
     label nSpec = 0;
diff --git a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H
index 3b4d09f76f362e745428ac681ed765b272b70065..d9d2860238fff705520dd5ae45e92d14bc050bb5 100644
--- a/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H
+++ b/src/mesh/autoMesh/autoHexMesh/autoHexMeshDriver/layerParameters/layerParameters.H
@@ -134,7 +134,7 @@ private:
 
         scalar maxThicknessToMedialRatio_;
 
-        scalar minMedianAxisAngleCos_;
+        scalar minMedialAxisAngleCos_;
 
         label nBufferCellsNoExtrude_;
 
@@ -348,9 +348,9 @@ public:
             }
 
             //- Angle used to pick up medial axis points
-            scalar minMedianAxisAngleCos() const
+            scalar minMedialAxisAngleCos() const
             {
-                return minMedianAxisAngleCos_;
+                return minMedialAxisAngleCos_;
             }
 
             label nSnap() const
diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C
index 728cae5f16a61ad930892bea41d6a31335b5bbc2..84d212e4251ce0b684056c4068b6a360210f7237 100644
--- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C
+++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/displacementMeshMoverMotionSolver.C
@@ -106,7 +106,15 @@ void Foam::displacementMeshMoverMotionSolver::solve()
 
     label nAllowableErrors = 0;
     labelList checkFaces(identity(mesh().nFaces()));
-    meshMover().move(coeffDict(), nAllowableErrors, checkFaces);
+    meshMover().move
+    (
+        coeffDict().subDict(meshMover().type() + "Coeffs"),
+        nAllowableErrors,
+        checkFaces
+    );
+
+    // This will have updated the mesh and implicitly the pointDisplacement
+    pointDisplacement().correctBoundaryConditions();
 }
 
 
diff --git a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C
index db2dedf89ff6928130fe3744e684306aa4dcc7e9..eb223c88414a6c294290464d790e15b4629d74a1 100644
--- a/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C
+++ b/src/mesh/autoMesh/autoHexMesh/externalDisplacementMeshMover/medialAxisMeshMover.C
@@ -402,7 +402,7 @@ bool Foam::medialAxisMeshMover::isMaxEdge
 void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
 {
     Info<< typeName
-        << " : Calculate distance to Medial Axis ..." << endl;
+        << " : Calculating distance to Medial Axis ..." << endl;
 
     const pointField& points = mesh().points();
 
@@ -420,9 +420,15 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
     );
 
     //- When is medial axis
-    const scalar minMedianAxisAngleCos = Foam::cos
+    word angleKey = "minMedialAxisAngle";
+    if (!coeffDict.found(angleKey))
+    {
+        // Backwards compatibility
+        angleKey = "minMedianAxisAngle";
+    }
+    scalar minMedialAxisAngleCos = Foam::cos
     (
-        degToRad(readScalar(coeffDict.lookup("minMedianAxisAngle")))
+        degToRad(readScalar(coeffDict.lookup(angleKey)))
     );
 
     //- Feature angle when to stop adding layers
@@ -442,6 +448,13 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
         coeffDict.lookup("nSmoothNormals")
     );
 
+    //- Number of edges walking out
+    const label nMedialAxisIter = coeffDict.lookupOrDefault<label>
+    (
+        "nMedialAxisIter",
+        mesh().globalData().nTotalPoints()
+    );
+
 
     // Predetermine mesh edges
     // ~~~~~~~~~~~~~~~~~~~~~~~
@@ -512,10 +525,10 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
             wallInfo,
             pointWallDist,
             edgeWallDist,
-            mesh().globalData().nTotalPoints(),   // max iterations
+            0,   // max iterations
             dummyTrackData
         );
-
+        wallDistCalc.iterate(nMedialAxisIter);
 
         label nUnvisit = returnReduce
         (
@@ -525,16 +538,27 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
 
         if (nUnvisit > 0)
         {
-            WarningIn
-            (
-                "medialAxisMeshMover::"
-                "medialAxisSmoothingInfo(..)"
-            )   << "Walking did not visit all points." << nl
-                << "    Did not visit " << nUnvisit
-                << " out of " << mesh().globalData().nTotalPoints()
-                << " points. This is not necessarily a problem" << nl
-                << "    and might be due to faceZones splitting of part"
-                << " of the domain." << nl << endl;
+            if (nMedialAxisIter > 0)
+            {
+                Info<< typeName
+                    << " : Limited walk to " << nMedialAxisIter
+                    << " steps. Not visited " << nUnvisit
+                    << " out of " << mesh().globalData().nTotalPoints()
+                    << " points" << endl;
+            }
+            else
+            {
+                WarningIn
+                (
+                    "medialAxisMeshMover::"
+                    "medialAxisSmoothingInfo(..)"
+                )   << "Walking did not visit all points." << nl
+                    << "    Did not visit " << nUnvisit
+                    << " out of " << mesh().globalData().nTotalPoints()
+                    << " points. This is not necessarily a problem" << nl
+                    << "    and might be due to faceZones splitting of part"
+                    << " of the domain." << nl << endl;
+            }
         }
     }
 
@@ -564,8 +588,29 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
             )
             {
                 // Unvisited point. See above about nUnvisit warning
+                forAll(e, ep)
+                {
+                    label pointI = e[ep];
+
+                    if (!pointMedialDist[pointI].valid(dummyTrackData))
+                    {
+                        maxPoints.append(pointI);
+                        maxInfo.append
+                        (
+                            pointData
+                            (
+                                points[pointI],
+                                0.0,
+                                pointI,         // passive data
+                                vector::zero    // passive data
+                            )
+                        );
+                        pointMedialDist[pointI] = maxInfo.last();
+                    }
+                }
+
             }
-            else if (isMaxEdge(pointWallDist, edgeI, minMedianAxisAngleCos))
+            else if (isMaxEdge(pointWallDist, edgeI, minMedialAxisAngleCos))
             {
                 // Both end points of edge have very different nearest wall
                 // point. Mark both points as medial axis points.
@@ -653,7 +698,8 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
                 if (pvf.fixesValue())
                 {
                     // Disable all movement on fixedValue patchFields
-                    Info<< "Inserting all points on patch " << pp.name()
+                    Info<< typeName
+                        << " : Inserting all points on patch " << pp.name()
                         << endl;
 
                     forAll(meshPoints, i)
@@ -683,7 +729,8 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
                     // normal as the passive vector. Note that this points
                     // out of the originating wall so inside of the domain
                     // on this patch.
-                    Info<< "Inserting points on patch " << pp.name()
+                    Info<< typeName
+                        << " : Inserting points on patch " << pp.name()
                         << " if angle to nearest layer patch > "
                         << slipFeatureAngle << " degrees." << endl;
 
@@ -753,15 +800,29 @@ void Foam::medialAxisMeshMover::update(const dictionary& coeffDict)
 
             pointMedialDist,
             edgeMedialDist,
-            mesh().globalData().nTotalPoints(),   // max iterations
+            0,   // max iterations
             dummyTrackData
         );
+        medialDistCalc.iterate(2*nMedialAxisIter);
+
 
         // Extract medial axis distance as pointScalarField
         forAll(pointMedialDist, pointI)
         {
-            medialDist_[pointI] = Foam::sqrt(pointMedialDist[pointI].distSqr());
-            medialVec_[pointI] = pointMedialDist[pointI].origin();
+            if (pointMedialDist[pointI].valid(dummyTrackData))
+            {
+                medialDist_[pointI] = Foam::sqrt
+                (
+                    pointMedialDist[pointI].distSqr()
+                );
+                medialVec_[pointI] = pointMedialDist[pointI].origin();
+            }
+            else
+            {
+                // Unvisited. Do as if on medial axis so unmoving
+                medialDist_[pointI] = 0.0;
+                medialVec_[pointI] = point(1, 0, 0);
+            }
         }
     }
 
@@ -1380,7 +1441,8 @@ void Foam::medialAxisMeshMover::findIsolatedRegions
     }
 
     reduce(nPointCounter, sumOp<label>());
-    Info<< "Number isolated points extrusion stopped : "<< nPointCounter
+    Info<< typeName
+        << " : Number of isolated points extrusion stopped : "<< nPointCounter
         << endl;
 }
 
@@ -1632,6 +1694,13 @@ void Foam::medialAxisMeshMover::calculateDisplacement
         coeffDict.lookup("nSmoothThickness")
     );
 
+    //- Number of edges walking out
+    const label nMedialAxisIter = coeffDict.lookupOrDefault<label>
+    (
+        "nMedialAxisIter",
+        mesh().globalData().nTotalPoints()
+    );
+
 
     // Precalulate master points/edge (only relevant for shared points/edges)
     const PackedBoolList isMasterPoint(syncTools::getMasterPoints(mesh()));
@@ -1677,7 +1746,8 @@ void Foam::medialAxisMeshMover::calculateDisplacement
               + ".obj"
             )
         );
-        Info<< "Writing points with too large an extrusion distance to "
+        Info<< typeName
+            << " : Writing points with too large an extrusion distance to "
             << str().name() << endl;
     }
 
@@ -1694,8 +1764,9 @@ void Foam::medialAxisMeshMover::calculateDisplacement
               + ".obj"
             )
         );
-        Info<< "Writing points with too large an extrusion distance to "
-            << medialVecStr().name() << endl;
+        Info<< typeName
+            << " : Writing medial axis vectors on points with too large"
+            << " an extrusion distance to " << medialVecStr().name() << endl;
     }
 
     forAll(meshPoints, patchPointI)
@@ -1721,7 +1792,7 @@ void Foam::medialAxisMeshMover::calculateDisplacement
             if (thicknessRatio > maxThicknessToMedialRatio)
             {
                 // Truncate thickness.
-                if (debug)
+                if (debug&2)
                 {
                     Pout<< "truncating displacement at "
                         << mesh().points()[pointI]
@@ -1770,7 +1841,7 @@ void Foam::medialAxisMeshMover::calculateDisplacement
     }
 
     reduce(numThicknessRatioExclude, sumOp<label>());
-    Info<< typeName << " : Reduce layer thickness at "
+    Info<< typeName << " : Reducing layer thickness at "
         << numThicknessRatioExclude
         << " nodes where thickness to medial axis distance is large " << endl;
 
@@ -1849,9 +1920,10 @@ void Foam::medialAxisMeshMover::calculateDisplacement
             wallInfo,
             pointWallDist,
             edgeWallDist,
-            mesh().globalData().nTotalPoints(),   // max iterations
+            0,   // max iterations
             dummyTrackData
         );
+        wallDistCalc.iterate(nMedialAxisIter);
     }
 
 
@@ -1917,10 +1989,13 @@ bool Foam::medialAxisMeshMover::shrinkMesh
 
     for (label iter = 0; iter < 2*nSnap ; iter++)
     {
-        Info<< "Iteration " << iter << endl;
+        Info<< typeName
+            << " : Iteration " << iter << endl;
         if (iter == nSnap)
         {
-            Info<< "Displacement scaling for error reduction set to 0." << endl;
+            Info<< typeName
+                << " : Displacement scaling for error reduction set to 0."
+                << endl;
             oldErrorReduction = meshMover_.setErrorReduction(0.0);
         }
 
@@ -1937,7 +2012,7 @@ bool Foam::medialAxisMeshMover::shrinkMesh
             )
         )
         {
-            Info<< typeName << " :" << " Successfully moved mesh" << endl;
+            Info<< typeName << " : Successfully moved mesh" << endl;
             meshOk = true;
             break;
         }
diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
index b861bdb037221a652ed4575f991f2a8a60c0bf67..c8e8be3d06b276926d448363f22031d1552cc3ee 100644
--- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
+++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.C
@@ -141,6 +141,17 @@ void Foam::trackedParticle::hitWedgePatch
 }
 
 
+void Foam::trackedParticle::hitSymmetryPlanePatch
+(
+    const symmetryPlanePolyPatch&,
+    trackingData& td
+)
+{
+    // Remove particle
+    td.keepParticle = false;
+}
+
+
 void Foam::trackedParticle::hitSymmetryPatch
 (
     const symmetryPolyPatch&,
diff --git a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H
index 30acbc2fcc3bfe521f61deafca5806b93b766c47..4500cab11df97acba8386981252bbcce46fd15f6 100644
--- a/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H
+++ b/src/mesh/autoMesh/autoHexMesh/trackedParticle/trackedParticle.H
@@ -214,7 +214,15 @@ public:
             );
 
             //- Overridable function to handle the particle hitting a
-            //  symmetryPlane
+            //  symmetry plane
+            void hitSymmetryPlanePatch
+            (
+                const symmetryPlanePolyPatch&,
+                trackingData& td
+            );
+
+            //- Overridable function to handle the particle hitting a
+            //  symmetry patch
             void hitSymmetryPatch
             (
                 const symmetryPolyPatch&,
diff --git a/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C b/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C
index a850308c6ed6677852506b4abb9f0f06f4215ea6..1f7de7c58c2be7056ec9ce1bfee956f55487f9dd 100644
--- a/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C
+++ b/src/meshTools/triSurface/triSurfaceTools/pointToPointPlanarInterpolation.C
@@ -210,37 +210,45 @@ void Foam::pointToPointPlanarInterpolation::calcWeights
         nearestVertexWeight_
     );
 
-    //if (debug)
-    //{
-    //    forAll(sourcePoints, i)
-    //    {
-    //        Pout<< "source:" << i << " at:" << sourcePoints[i]
-    //            << " 2d:" << localVertices[i]
-    //            << endl;
-    //    }
-    //
-    //
-    //    forAll(destPoints, i)
-    //    {
-    //        label v0 = nearestVertex_[i][0];
-    //        label v1 = nearestVertex_[i][1];
-    //        label v2 = nearestVertex_[i][2];
-    //
-    //        Pout<< "For location " << destPoints[i]
-    //            << " 2d:" << localFaceCentres[i]
-    //            << " sampling vertices" << nl
-    //            << "    " << v0
-    //            << " at:" << sourcePoints[v0]
-    //            << " weight:" << nearestVertexWeight_[i][0] << nl
-    //            << "    " << v1
-    //            << " at:" << sourcePoints[v1]
-    //            << " weight:" << nearestVertexWeight_[i][1] << nl
-    //            << "    " << v2
-    //            << " at:" << sourcePoints[v2]
-    //            << " weight:" << nearestVertexWeight_[i][2] << nl
-    //            << endl;
-    //    }
-    //}
+    if (debug)
+    {
+        forAll(sourcePoints, i)
+        {
+            Pout<< "source:" << i << " at:" << sourcePoints[i]
+                << " 2d:" << localVertices[i]
+                << endl;
+        }
+
+
+        forAll(destPoints, i)
+        {
+            label v0 = nearestVertex_[i][0];
+            label v1 = nearestVertex_[i][1];
+            label v2 = nearestVertex_[i][2];
+
+            Pout<< "For location " << destPoints[i]
+                << " 2d:" << localFaceCentres[i]
+                << " sampling vertices" << nl
+                << "    " << v0
+                << " at:" << sourcePoints[v0]
+                << " weight:" << nearestVertexWeight_[i][0] << nl;
+
+            if (v1 != -1)
+            {
+                Pout<< "    " << v1
+                    << " at:" << sourcePoints[v1]
+                    << " weight:" << nearestVertexWeight_[i][1] << nl;
+            }
+            if (v2 != -1)
+            {
+                Pout<< "    " << v2
+                    << " at:" << sourcePoints[v2]
+                    << " weight:" << nearestVertexWeight_[i][2] << nl;
+            }
+
+            Pout<< endl;
+        }
+    }
 }
 
 
diff --git a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C
index 5fe71cac6ea1f1c0937ccf1f62b47275d652f06f..ad4d234a35dcf0cc8834bca46b5e506937d9a3f5 100644
--- a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C
+++ b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.C
@@ -140,6 +140,17 @@ void Foam::findCellParticle::hitWedgePatch
 }
 
 
+void Foam::findCellParticle::hitSymmetryPlanePatch
+(
+    const symmetryPlanePolyPatch&,
+    trackingData& td
+)
+{
+    // Remove particle
+    td.keepParticle = false;
+}
+
+
 void Foam::findCellParticle::hitSymmetryPatch
 (
     const symmetryPolyPatch&,
diff --git a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H
index 0e87f644e26a07f065693e4bfde72a8ad5a3549e..82a430778a2956238332e28b789653c78a03fc4a 100644
--- a/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H
+++ b/src/postProcessing/functionObjects/field/nearWallFields/findCellParticle.H
@@ -196,7 +196,15 @@ public:
             );
 
             //- Overridable function to handle the particle hitting a
-            //  symmetryPlane
+            //  symmetry plane
+            void hitSymmetryPlanePatch
+            (
+                const symmetryPlanePolyPatch&,
+                trackingData& td
+            );
+
+            //- Overridable function to handle the particle hitting a
+            //  symmetry patch
             void hitSymmetryPatch
             (
                 const symmetryPolyPatch&,
diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
index ff03f1160b301b2bd87d6681392de80e81649c48..b62409d6bb1fb45a6c54fa92eac661ccf3265995 100644
--- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
+++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.C
@@ -345,6 +345,17 @@ void Foam::streamLineParticle::hitWedgePatch
 }
 
 
+void Foam::streamLineParticle::hitSymmetryPlanePatch
+(
+    const symmetryPlanePolyPatch& pp,
+    trackingData& td
+)
+{
+    // Remove particle
+    td.keepParticle = false;
+}
+
+
 void Foam::streamLineParticle::hitSymmetryPatch
 (
     const symmetryPolyPatch& pp,
diff --git a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H
index 02bd609933fffbeb4923d4c242614aeeb4bf9c26..2d8e728662ad56b29cab6cba971d84913b5a0702 100644
--- a/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.H
+++ b/src/postProcessing/functionObjects/field/streamLine/streamLineParticle.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -237,7 +237,15 @@ public:
             );
 
             //- Overridable function to handle the particle hitting a
-            //  symmetryPlane
+            //  symmetry plane
+            void hitSymmetryPlanePatch
+            (
+                const symmetryPlanePolyPatch&,
+                trackingData& td
+            );
+
+            //- Overridable function to handle the particle hitting a
+            //  symmetry patch
             void hitSymmetryPatch
             (
                 const symmetryPolyPatch&,
diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.H b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.H
index df93215be1a6d53747591f5c8e162239be34a405..55ba6c27f75ab94b5a84e24dc3e5db6aaa1ec1f9 100644
--- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.H
+++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticle.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -159,7 +159,16 @@ protected:
         );
 
         //- Overridable function to handle the particle hitting a
-        //  symmetryPlane
+        //  symmetry plane
+        template<class TrackData>
+        void hitSymmetryPlanePatch
+        (
+            const symmetryPlanePolyPatch&,
+            TrackData& td
+        );
+
+        //- Overridable function to handle the particle hitting a
+        //  symmetry patch
         template<class TrackData>
         void hitSymmetryPatch
         (
diff --git a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
index 18b1b37a8984928ea29d615f65f71bebfb71ae0b..265621ae05e0a2c74838e9c5750ef32fcac5d66c 100644
--- a/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
+++ b/src/postProcessing/functionObjects/field/wallBoundedStreamLine/wallBoundedParticleTemplates.C
@@ -80,6 +80,13 @@ void Foam::wallBoundedParticle::patchInteraction
                     static_cast<const wedgePolyPatch&>(patch), td
                 );
             }
+            else if (isA<symmetryPlanePolyPatch>(patch))
+            {
+                p.hitSymmetryPlanePatch
+                (
+                    static_cast<const symmetryPlanePolyPatch&>(patch), td
+                );
+            }
             else if (isA<symmetryPolyPatch>(patch))
             {
                 p.hitSymmetryPatch
@@ -403,6 +410,18 @@ void Foam::wallBoundedParticle::hitWedgePatch
 }
 
 
+template<class TrackData>
+void Foam::wallBoundedParticle::hitSymmetryPlanePatch
+(
+    const symmetryPlanePolyPatch& pp,
+    TrackData& td
+)
+{
+    // Remove particle
+    td.keepParticle = false;
+}
+
+
 template<class TrackData>
 void Foam::wallBoundedParticle::hitSymmetryPatch
 (
diff --git a/src/postProcessing/functionObjects/forces/Make/files b/src/postProcessing/functionObjects/forces/Make/files
index 4f9cf092148bd82a13509d7a9f9a79d0e6c59edb..8b91d9092221ed12c0192c7afb0aa1a042d661e5 100644
--- a/src/postProcessing/functionObjects/forces/Make/files
+++ b/src/postProcessing/functionObjects/forces/Make/files
@@ -4,33 +4,4 @@ forces/forcesFunctionObject.C
 forceCoeffs/forceCoeffs.C
 forceCoeffs/forceCoeffsFunctionObject.C
 
-sDoFRBM = pointPatchFields/derived/sixDoFRigidBodyMotion
-
-$(sDoFRBM)/sixDoFRigidBodyMotion.C
-$(sDoFRBM)/sixDoFRigidBodyMotionIO.C
-$(sDoFRBM)/sixDoFRigidBodyMotionState.C
-$(sDoFRBM)/sixDoFRigidBodyMotionStateIO.C
-
-sDoFRBMR = $(sDoFRBM)/sixDoFRigidBodyMotionRestraint
-
-$(sDoFRBMR)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
-$(sDoFRBMR)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C
-$(sDoFRBMR)/linearAxialAngularSpring/linearAxialAngularSpring.C
-$(sDoFRBMR)/linearSpring/linearSpring.C
-$(sDoFRBMR)/sphericalAngularSpring/sphericalAngularSpring.C
-$(sDoFRBMR)/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
-
-sDoFRBMC = $(sDoFRBM)/sixDoFRigidBodyMotionConstraint
-
-$(sDoFRBMC)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
-$(sDoFRBMC)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
-$(sDoFRBMC)/fixedAxis/fixedAxis.C
-$(sDoFRBMC)/fixedLine/fixedLine.C
-$(sDoFRBMC)/fixedOrientation/fixedOrientation.C
-$(sDoFRBMC)/fixedPlane/fixedPlane.C
-$(sDoFRBMC)/fixedPoint/fixedPoint.C
-
-pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
-pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
-
 LIB = $(FOAM_LIBBIN)/libforces
diff --git a/src/regionModels/regionModel/regionModel/regionModel.C b/src/regionModels/regionModel/regionModel/regionModel.C
index 8068660057bf972daf75f8df22371b766d7deed9..04b0077ca9ac2a498f08e05e90511667cc348f18 100644
--- a/src/regionModels/regionModel/regionModel/regionModel.C
+++ b/src/regionModels/regionModel/regionModel/regionModel.C
@@ -103,7 +103,7 @@ void Foam::regionModels::regionModel::initialise()
     forAll(rbm, patchI)
     {
         const polyPatch& regionPatch = rbm[patchI];
-        if (isA<mappedWallPolyPatch>(regionPatch))
+        if (isA<mappedPatchBase>(regionPatch))
         {
             if (debug)
             {
@@ -136,7 +136,7 @@ void Foam::regionModels::regionModel::initialise()
     primaryPatchIDs_.transfer(primaryPatchIDs);
     intCoupledPatchIDs_.transfer(intCoupledPatchIDs);
 
-    if (nBoundaryFaces == 0)
+    if (returnReduce(nBoundaryFaces, sumOp<label>()) == 0)
     {
         WarningIn("regionModel::initialise()")
             << "Region model has no mapped boundary conditions - transfer "
diff --git a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C
index 027336f2e6ab8df2fc2527414c002eed59f3be72..aa3195cc6cbe1d9c236cbae2ef52a63edb784424 100644
--- a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C
+++ b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.C
@@ -25,6 +25,9 @@ License
 
 #include "thermalBaffleFvPatchScalarField.H"
 #include "addToRunTimeSelectionTable.H"
+#include "emptyPolyPatch.H"
+#include "polyPatch.H"
+#include "mappedWallPolyPatch.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -114,17 +117,6 @@ thermalBaffleFvPatchScalarField
             owner_ = true;
             baffle_->rename(baffleName);
         }
-        else if //Backwards compatibility (if region exists)
-        (
-            thisMesh.time().foundObject<fvMesh>(regionName)
-         && baffle_.empty()
-         && regionName != "none"
-        )
-        {
-            baffle_.reset(baffle::New(thisMesh, dict).ptr());
-            owner_ = true;
-            baffle_->rename(baffleName);
-        }
     }
 }
 
@@ -168,19 +160,79 @@ void thermalBaffleFvPatchScalarField::rmap
 
 void thermalBaffleFvPatchScalarField::createPatchMesh()
 {
-    const fvMesh& defaultRegion =
-        db().time().lookupObject<fvMesh>(fvMesh::defaultRegion);
+
+    const fvMesh& thisMesh = patch().boundaryMesh().mesh();
 
     word regionName = dict_.lookup("regionName");
 
+    List<polyPatch*> regionPatches(3);
+    List<word> patchNames(regionPatches.size());
+    List<word> patchTypes(regionPatches.size());
+    List<dictionary> dicts(regionPatches.size());
+
+    patchNames[bottomPatchID] = word("bottom");
+    patchNames[sidePatchID] = word("side");
+    patchNames[topPatchID] = word("top");
+
+    patchTypes[bottomPatchID] = mappedWallPolyPatch::typeName;
+    patchTypes[topPatchID] = mappedWallPolyPatch::typeName;
+
+    if (readBool(dict_.lookup("columnCells")))
+    {
+        patchTypes[sidePatchID] = emptyPolyPatch::typeName;
+    }
+    else
+    {
+        patchTypes[sidePatchID] = polyPatch::typeName;
+    }
+
+    const mappedPatchBase& mpp =
+        refCast<const mappedPatchBase>(patch().patch());
+
+    const word coupleGroup(mpp.coupleGroup());
+
+    wordList inGroups(1);
+    inGroups[0] = coupleGroup;
+
+    dicts[bottomPatchID].add("coupleGroup", coupleGroup);
+    dicts[bottomPatchID].add("inGroups", inGroups);
+    dicts[bottomPatchID].add("sampleMode", mpp.sampleModeNames_[mpp.mode()]);
+
+    const label sepPos = coupleGroup.find('_');
+
+    const word coupleGroupSlave = coupleGroup(0, sepPos) + "_slave";
+
+    inGroups[0] = coupleGroupSlave;
+    dicts[topPatchID].add("coupleGroup", coupleGroupSlave);
+    dicts[topPatchID].add("inGroups", inGroups);
+    dicts[topPatchID].add("sampleMode", mpp.sampleModeNames_[mpp.mode()]);
+
+
+    forAll (regionPatches, patchI)
+    {
+        dictionary&  patchDict = dicts[patchI];
+        patchDict.set("nFaces", 0);
+        patchDict.set("startFace", 0);
+
+        regionPatches[patchI] = polyPatch::New
+        (
+            patchTypes[patchI],
+            patchNames[patchI],
+            dicts[patchI],
+            patchI,
+            thisMesh.boundaryMesh()
+        ).ptr();
+    }
+
     extrudeMeshPtr_.reset
     (
         new extrudePatchMesh
         (
-            defaultRegion,
+            thisMesh,
             patch(),
             dict_,
-            regionName
+            regionName,
+            regionPatches
         )
     );
 
diff --git a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H
index 543df2e39b803e60ca1c2def3fca445301fb2d3c..75166563506e6d2e6cc0f6acb4ccdfbd9ba6e88c 100644
--- a/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H
+++ b/src/regionModels/thermalBaffleModels/derivedFvPatchFields/thermalBaffle/thermalBaffleFvPatchScalarField.H
@@ -182,6 +182,14 @@ class thermalBaffleFvPatchScalarField
 {
     // Private data
 
+        //- Enumeration of patch IDs
+        enum patchID
+        {
+            bottomPatchID,
+            topPatchID,
+            sidePatchID
+        };
+
         //- Is the baffle owner
         bool owner_;
 
diff --git a/src/sixDoFRigidBodyMotion/Make/files b/src/sixDoFRigidBodyMotion/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..7ceb41d544ec2e2203132a9bea7893cb67ed3142
--- /dev/null
+++ b/src/sixDoFRigidBodyMotion/Make/files
@@ -0,0 +1,30 @@
+sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
+sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
+sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
+sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
+
+restraints = sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint
+
+$(restraints)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
+$(restraints)/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C
+$(restraints)/linearAxialAngularSpring/linearAxialAngularSpring.C
+$(restraints)/linearSpring/linearSpring.C
+$(restraints)/sphericalAngularSpring/sphericalAngularSpring.C
+$(restraints)/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
+
+constraints = sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint
+
+$(constraints)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
+$(constraints)/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
+$(constraints)/fixedAxis/fixedAxis.C
+$(constraints)/fixedLine/fixedLine.C
+$(constraints)/fixedOrientation/fixedOrientation.C
+$(constraints)/fixedPlane/fixedPlane.C
+$(constraints)/fixedPoint/fixedPoint.C
+
+pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
+pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
+
+sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
+
+LIB = $(FOAM_LIBBIN)/libsixDoFRigidBodyMotion
diff --git a/src/sixDoFRigidBodyMotion/Make/options b/src/sixDoFRigidBodyMotion/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..f2367d2e1d47e8b701978c06a03ad5696c8c8668
--- /dev/null
+++ b/src/sixDoFRigidBodyMotion/Make/options
@@ -0,0 +1,12 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude \
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/postProcessing/functionObjects/forces/lnInclude \
+    -I$(LIB_SRC)/fileFormats/lnInclude \
+    -I$(LIB_SRC)/dynamicMesh/lnInclude
+
+LIB_LIBS = \
+    -lforces \
+    -lmeshTools \
+    -lfileFormats \
+    -ldynamicMesh
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
index 3045282447067284e583c0ac88b00d27c18a7b49..75af41d304aa3dd77fe049bcdc9913430078d7fc 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.C
@@ -238,10 +238,13 @@ void sixDoFRigidBodyDisplacementPointPatchVectorField::updateCoeffs()
         g_ = g.value();
     }
 
+    // scalar ramp = min(max((this->db().time().value() - 5)/10, 0), 1);
+    scalar ramp = 1.0;
+
     motion_.updateAcceleration
     (
-        f.forceEff() + g_*motion_.mass(),
-        f.momentEff(),
+        ramp*(f.forceEff() + g_*motion_.mass()),
+        ramp*(f.momentEff()),
         t.deltaTValue()
     );
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
similarity index 100%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/sixDoFRigidBodyDisplacement/sixDoFRigidBodyDisplacementPointPatchVectorField.H
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
similarity index 100%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.C
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
rename to src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
index 65af1b096de97a508f63d39233a84fb71772e28a..3ffaf25bb52b897940ae5892c7deafab7a18ac4f 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
+++ b/src/sixDoFRigidBodyMotion/pointPatchFields/derived/uncoupledSixDoFRigidBodyDisplacement/uncoupledSixDoFRigidBodyDisplacementPointPatchVectorField.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
similarity index 90%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
index 4e218fc0d316944711bffbe75cf7cdb2663fdec7..492b88752c0d48dda341cc1e3c3af34e6bf4559c 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.C
@@ -24,6 +24,7 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "sixDoFRigidBodyMotion.H"
+#include "septernion.H"
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
@@ -175,6 +176,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion()
     momentOfInertia_(diagTensor::one*VSMALL),
     mass_(VSMALL),
     aRelax_(1.0),
+    aDamp_(1.0),
     report_(false)
 {}
 
@@ -192,6 +194,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
     const tensor& initialQ,
     const diagTensor& momentOfInertia,
     scalar aRelax,
+    scalar aDamp,
     bool report
 )
 :
@@ -215,6 +218,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
     momentOfInertia_(momentOfInertia),
     mass_(mass),
     aRelax_(aRelax),
+    aDamp_(aDamp),
     report_(report)
 {}
 
@@ -239,6 +243,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion(const dictionary& dict)
     momentOfInertia_(dict.lookup("momentOfInertia")),
     mass_(readScalar(dict.lookup("mass"))),
     aRelax_(dict.lookupOrDefault<scalar>("accelerationRelaxation", 1.0)),
+    aDamp_(dict.lookupOrDefault<scalar>("accelerationDamping", 1.0)),
     report_(dict.lookupOrDefault<Switch>("report", false))
 {
     addRestraints(dict);
@@ -264,6 +269,7 @@ Foam::sixDoFRigidBodyMotion::sixDoFRigidBodyMotion
     momentOfInertia_(sDoFRBM.momentOfInertia_),
     mass_(sDoFRBM.mass_),
     aRelax_(sDoFRBM.aRelax_),
+    aDamp_(sDoFRBM.aDamp_),
     report_(sDoFRBM.report_)
 {}
 
@@ -375,8 +381,8 @@ void Foam::sixDoFRigidBodyMotion::updatePosition
 
     if (Pstream::master())
     {
-        v() = v0() + 0.5*deltaT0*a();
-        pi() = pi0() + 0.5*deltaT0*tau();
+        v() = v0() + aDamp_*0.5*deltaT0*a();
+        pi() = pi0() + aDamp_*0.5*deltaT0*tau();
 
         // Leapfrog move part
         centreOfMass() = centreOfMass0() + deltaT*v();
@@ -426,8 +432,8 @@ void Foam::sixDoFRigidBodyMotion::updateAcceleration
         applyConstraints(deltaT);
 
         // Correct velocities
-        v() += 0.5*deltaT*a();
-        pi() += 0.5*deltaT*tau();
+        v() += aDamp_*0.5*deltaT*a();
+        pi() += aDamp_*0.5*deltaT*tau();
 
         if (report_)
         {
@@ -446,8 +452,8 @@ void Foam::sixDoFRigidBodyMotion::updateVelocity(scalar deltaT)
 
     if (Pstream::master())
     {
-        v() += 0.5*deltaT*a();
-        pi() += 0.5*deltaT*tau();
+        v() += aDamp_*0.5*deltaT*a();
+        pi() += aDamp_*0.5*deltaT*tau();
 
         if (report_)
         {
@@ -528,4 +534,47 @@ void Foam::sixDoFRigidBodyMotion::status() const
 }
 
 
+Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::currentPosition
+(
+    const pointField& initialPoints
+) const
+{
+    return
+    (
+        centreOfMass()
+      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_))
+    );
+}
+
+
+Foam::tmp<Foam::pointField> Foam::sixDoFRigidBodyMotion::scaledPosition
+(
+    const pointField& initialPoints,
+    const scalarField& scale
+) const
+{
+    // Calculate the transformation septerion from the initial state
+    septernion s
+    (
+        centreOfMass() - initialCentreOfMass(),
+        quaternion(Q() & initialQ().T())
+    );
+
+    tmp<pointField> tpoints(new pointField(initialPoints));
+    pointField& points = tpoints();
+
+    forAll(points, pointi)
+    {
+        //- Slerp septernion
+        septernion ss(slerp(septernion::I, s, scale[pointi]));
+
+        points[pointi] =
+            initialCentreOfMass()
+          + ss.transform(initialPoints[pointi] - initialCentreOfMass());
+    }
+
+    return tpoints;
+}
+
+
 // ************************************************************************* //
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
similarity index 96%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
index dcdc9f441bbd26f8d07ff9515cfb78aa10c5af2f..c75e0719642f58d7bc43fb8cae08a219df033c66 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion.H
@@ -122,6 +122,9 @@ class sixDoFRigidBodyMotion
         //- Acceleration relaxation coefficient
         scalar aRelax_;
 
+        //- Acceleration damping coefficient (for steady-state simulations)
+        scalar aDamp_;
+
         //- Switch to turn reporting of motion data on and off
         Switch report_;
 
@@ -264,6 +267,7 @@ public:
             const tensor& initialQ,
             const diagTensor& momentOfInertia,
             scalar aRelax = 1.0,
+            scalar aDamp = 1.0,
             bool report = false
         );
 
@@ -321,14 +325,19 @@ public:
 
         //- Transform the given initial state pointField by the current
         //  motion state
-        inline tmp<pointField> currentPosition
+        tmp<pointField> currentPosition(const pointField& initialPoints) const;
+
+        //- Transform the given initial state pointField by the current
+        //  motion state
+        tmp<pointField> scaledPosition
         (
-            const pointField& pInitial
+            const pointField& initialPoints,
+            const scalarField& scale
         ) const;
 
         //- Transform the given initial state point by the current motion
         //  state
-        inline point currentPosition(const point& pInitial) const;
+        inline point currentPosition(const point& initialPoints) const;
 
         //- Transform the given initial state direction by the current
         //  motion state
@@ -344,7 +353,7 @@ public:
         //  additional supplied force and moment
         point predictedPosition
         (
-            const point& pInitial,
+            const point& initialPoints,
             const vector& deltaForce,
             const vector& deltaMoment,
             scalar deltaT
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C
index cfff8d36767d3632a96e48ac2b44be91319cf661..0e2737842535eba35bbd5a64b08e37c9a1a2b701 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
index c394e6892d05e293e51b7cb23c8fdb3d9bab6ad9..7772833f4d53fccb4f81be74b404cc92c9433e2e 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedAxis/fixedAxis.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C
index 920e4ef698b6036981e29e458b7a506184138e9f..f77afa2b10ade1dc45492a1995ab8dd67f2fd1da 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
index b308bd2faad25845ce779d42eb27f546da73fa92..8d0710e0908780deb5364a99e63c4f5ab695e388 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedLine/fixedLine.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C
index 98630a62e66a2f343b86c9a0e903787e3649b3e6..c66bdbb3623383e897bf77d359c2ca110314030e 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
index 2c88722ecfc6f9c3877c9fc62453a3515efe7d6b..fcf7a62167ac24d29205cc07a68cd133c0d4a89a 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedOrientation/fixedOrientation.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C
index 0ad4f755bfc4ae088d9d6dbc13a4502170c4280b..263694ee3f2ee1a8c449055844088dcb1632e88f 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
index d3aca88c8beaaf9595b04e819561e41c92ccd2f6..b7f100ac5eae4e7dfd6d0d556dbe702fe8cdf055 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPlane/fixedPlane.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C
index 97eba4718d327d9397f4aacf4fdd14d181d37773..084334868dbee3ab2cc9a8f20b9625e29c22666c 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
index 3db6ec0fa8cc972680c99508330bf9e00add64ba..c361d3a8b3d0ad730ec293f2fdc39b02c50f379a 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/fixedPoint/fixedPoint.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
index b4154fc847f0b62de2e694b5c6a760aff560440e..22299c7f3c8cc3f2dc1b7fca94aa554a3c975665 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.C
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
index 059585b966532ab31d5ec7c72bc43740d7809a2b..b1f5438948cf5ad3bd255f1e403db4a28d4f90ad 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
similarity index 96%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
index 1bc23dbf0c440d9c278f5722ab2a255f78a3731c..fa74999aa5d8d3ec9dd785422758ade35fba4de7 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraint/sixDoFRigidBodyMotionConstraintNew.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
similarity index 95%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
index 5c1eb5e7ebe6d91c0698ab69305f3b1eeb9c076d..e64e1677fcb2987cc8dbc5906fc48a6b759090ce 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionI.H
@@ -255,26 +255,15 @@ inline Foam::vector& Foam::sixDoFRigidBodyMotion::tau()
 
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
-inline Foam::tmp<Foam::pointField>
-Foam::sixDoFRigidBodyMotion::currentPosition(const pointField& pInitial) const
-{
-    return
-    (
-        centreOfMass()
-      + (Q() & initialQ_.T() & (pInitial - initialCentreOfMass_)))
-    ;
-}
-
-
 inline Foam::point Foam::sixDoFRigidBodyMotion::currentPosition
 (
-    const point& pInitial
+    const point& initialPoints
 ) const
 {
     return
     (
         centreOfMass()
-      + (Q() & initialQ_.T() & (pInitial - initialCentreOfMass_))
+      + (Q() & initialQ_.T() & (initialPoints - initialCentreOfMass_))
     );
 }
 
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
similarity index 100%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionIO.C
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C
index 1e1c2dab751ec9390d59bc1945466f532342073c..76805d60d47a8bf1772957292ca5a1a88ef9169a 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
index c82979ea15e0e8505822e756f47f17d2bc7bb3ae..d7f8c5e2805bc572d86f902dade04204c4efd074 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearAxialAngularSpring/linearAxialAngularSpring.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C
index 1b96b1d5d30c31b530c20ee084264f0cc723a74c..c6b1c10ca063592136c08861faa11022d9006566 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
index 41840264aab5586352966ecae00202460415d550..c0610d974b39d9843580e78c81c473206e6370cd 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/linearSpring/linearSpring.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
index 6a7088a0dc351764b68d747215870491470b8bc3..b06c5baf465f9262ec34ae7d69934c60c3584b38 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.C
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
index 13d02532d5bcf75ec32efef7600b7f0fbc30df5b..d8bdf1469a3d60b404ce8ab0f25157002ec1723a 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C
similarity index 96%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C
index f96d3b46ce0fa62c778689c89ea651a1075b18b6..9361e0ab4df1c3b788435bb944d02d6ca50563da 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraint/sixDoFRigidBodyMotionRestraintNew.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C
index 3d2ec6d0ad5d702c7bd8baab89c57c608d481c46..dbb480b93aa692727e6ee5ca9b45cdc572809e0c 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
index 3c347e91a05aecfe40e837358a85a9dfe9305fc9..a36ef5d4ab104f3e1f2683184cd8496b73cb33f6 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/sphericalAngularSpring/sphericalAngularSpring.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
index 198967778a4d3f2759143aa7e3c561af0b0aa601..252aa471f7958fab956c2887b1aa6e209e4537f0 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
index ddc5190c27a1233d9ec9e6355c04ed55cfd163ab..bb45f00d519361353833a4cb02574ccac7219757 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionRestraint/tabulatedAxialAngularSpring/tabulatedAxialAngularSpring.H
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
index 6eddebc8b05bb2cd0efd6fca557b98743513521d..e92274c09844e8ce80bae96fcf7e462136851f45 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
similarity index 98%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
index d6a618e70ec484b97c89a4d024036e687e75db4d..92b3109c8b505676d8e878002da1e7aef28f1c86 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionState.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
index 15bce1ba24c77a9fe73b5d3ce31187f345f83163..e5e955724532012278cde20d66357311677b81c5 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateI.H
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
similarity index 97%
rename from src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
rename to src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
index ec13669919c885ad717ea876377f4593fd328339..4033b240ba4e7087d7be33d17e959972962982e9 100644
--- a/src/postProcessing/functionObjects/forces/pointPatchFields/derived/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionStateIO.C
@@ -2,7 +2,7 @@
   =========                 |
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2011 OpenFOAM Foundation
+    \\  /    A nd           | Copyright (C) 2011-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
new file mode 100644
index 0000000000000000000000000000000000000000..ca303bbeca1bf75f0414003adfa0b6b967065f4d
--- /dev/null
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.C
@@ -0,0 +1,186 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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 "sixDoFRigidBodyMotionSolver.H"
+#include "addToRunTimeSelectionTable.H"
+#include "polyMesh.H"
+#include "patchDist.H"
+#include "volPointInterpolation.H"
+#include "uniformDimensionedFields.H"
+#include "forces.H"
+
+// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
+
+namespace Foam
+{
+    defineTypeNameAndDebug(sixDoFRigidBodyMotionSolver, 0);
+
+    addToRunTimeSelectionTable
+    (
+        motionSolver,
+        sixDoFRigidBodyMotionSolver,
+        dictionary
+    );
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::sixDoFRigidBodyMotionSolver::sixDoFRigidBodyMotionSolver
+(
+    const polyMesh& mesh,
+    const IOdictionary& dict
+)
+:
+    displacementMotionSolver(mesh, dict, typeName),
+    motion_(coeffDict()),
+    patches_(wordReList(coeffDict().lookup("patches"))),
+    patchSet_(mesh.boundaryMesh().patchSet(patches_)),
+    distance_(readScalar(coeffDict().lookup("distance"))),
+    rhoInf_(1.0),
+    rhoName_(coeffDict().lookupOrDefault<word>("rhoName", "rho")),
+    scale_
+    (
+        IOobject
+        (
+            "scale",
+            mesh.time().timeName(),
+            mesh,
+            IOobject::NO_READ,
+            IOobject::NO_WRITE,
+            false
+        ),
+        pointMesh::New(mesh),
+        dimensionedScalar("zero", dimless, 0.0)
+    ),
+    curTimeIndex_(-1)
+{
+    const fvMesh& fMesh = dynamic_cast<const fvMesh&>(mesh);
+
+    if (rhoName_ == "rhoInf")
+    {
+        rhoInf_ = readScalar(dict.lookup("rhoInf"));
+    }
+
+    // Calculate scaling factor everywhere
+    // ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
+
+    {
+        patchDist dist(fMesh, patchSet_);
+
+        // Update distance to object
+        pointScalarField pDist
+        (
+            volPointInterpolation::New
+            (
+                fMesh
+            ).interpolate(dist)
+        );
+
+        // Scaling. 1 at patches, 0 at distance_ away from patches
+        scale_.internalField() = 1 - min(1.0, pDist.internalField()/distance_);
+        scale_.correctBoundaryConditions();
+        scale_.write();
+    }
+}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+Foam::sixDoFRigidBodyMotionSolver::~sixDoFRigidBodyMotionSolver()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+Foam::tmp<Foam::pointField>
+Foam::sixDoFRigidBodyMotionSolver::curPoints() const
+{
+    return points0() + pointDisplacement_.internalField();
+}
+
+
+void Foam::sixDoFRigidBodyMotionSolver::solve()
+{
+    const Time& t = mesh().time();
+
+    if (mesh().nPoints() != points0().size())
+    {
+        FatalErrorIn
+        (
+            "sixDoFRigidBodyMotionSolver::curPoints() const"
+        )   << "The number of points in the mesh seems to have changed." << endl
+            << "In constant/polyMesh there are " << points0().size()
+            << " points; in the current mesh there are " << mesh().nPoints()
+            << " points." << exit(FatalError);
+    }
+
+    // Store the motion state at the beginning of the time-step
+    if (curTimeIndex_ != this->db().time().timeIndex())
+    {
+        motion_.newTime();
+        curTimeIndex_ = this->db().time().timeIndex();
+    }
+
+    // Patch force data is valid for the current positions, so
+    // calculate the forces on the motion object from this data, then
+    // update the positions
+
+    motion_.updatePosition(t.deltaTValue(), t.deltaT0Value());
+
+    dictionary forcesDict;
+
+    forcesDict.add("type", forces::typeName);
+    forcesDict.add("patches", patches_);
+    forcesDict.add("rhoInf", rhoInf_);
+    forcesDict.add("rhoName", rhoName_);
+    forcesDict.add("CofR", motion_.centreOfMass());
+
+    forces f("forces", db(), forcesDict);
+
+    f.calcForcesMoment();
+
+    uniformDimensionedVectorField g =
+        db().lookupObject<uniformDimensionedVectorField>("g");
+
+    // scalar ramp = min(max((this->db().time().value() - 5)/10, 0), 1);
+    scalar ramp = 1.0;
+
+    motion_.updateAcceleration
+    (
+        ramp*(f.forceEff() + g.value()*motion_.mass()),
+        ramp*(f.momentEff()),
+        t.deltaTValue()
+    );
+
+    // Update the displacements
+    pointDisplacement_.internalField() =
+        motion_.scaledPosition(points0(), scale_) - points0();
+
+    pointDisplacement_.correctBoundaryConditions();
+}
+
+
+// ************************************************************************* //
diff --git a/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H
new file mode 100644
index 0000000000000000000000000000000000000000..1d1e72263c8c0cfa8088afee9cf3981756640092
--- /dev/null
+++ b/src/sixDoFRigidBodyMotion/sixDoFRigidBodyMotionSolver/sixDoFRigidBodyMotionSolver.H
@@ -0,0 +1,136 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2013 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::sixDoFRigidBodyMotionSolver
+
+Description
+    6-DoF solid-body mesh motion solver for an fvMesh.
+
+    Applies SLERP interpolation of movement as function of distance to
+    the object surface.
+
+SourceFiles
+    sixDoFRigidBodyMotionSolver.C
+
+\*---------------------------------------------------------------------------*/
+
+#ifndef sixDoFRigidBodyMotionSolver_H
+#define sixDoFRigidBodyMotionSolver_H
+
+#include "displacementMotionSolver.H"
+#include "sixDoFRigidBodyMotion.H"
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+
+/*---------------------------------------------------------------------------*\
+        Class sixDoFRigidBodyMotionSolver Declaration
+\*---------------------------------------------------------------------------*/
+
+class sixDoFRigidBodyMotionSolver
+:
+    public displacementMotionSolver
+{
+    // Private data
+
+        //- Six dof motion object
+        sixDoFRigidBodyMotion motion_;
+
+        wordReList patches_;
+
+        //- Patches to integrate forces
+        const labelHashSet patchSet_;
+
+        //- Morphing distance
+        const scalar distance_;
+
+        //- Reference density required by the forces object for
+        //  incompressible calculations, required if rhoName == rhoInf
+        scalar rhoInf_;
+
+        //- Name of density field, optional unless used for an
+        //  incompressible simulation, when this needs to be specified
+        //  as rhoInf
+        word rhoName_;
+
+        //- Current interpolation scale (1 at patches, 0 at distance_)
+        pointScalarField scale_;
+
+        //- Current time index (used for updating)
+        label curTimeIndex_;
+
+
+    // Private Member Functions
+
+        //- Disallow default bitwise copy construct
+        sixDoFRigidBodyMotionSolver
+        (
+            const sixDoFRigidBodyMotionSolver&
+        );
+
+        //- Disallow default bitwise assignment
+        void operator=(const sixDoFRigidBodyMotionSolver&);
+
+
+public:
+
+    //- Runtime type information
+    TypeName("sixDoFRigidBodyMotion");
+
+
+    // Constructors
+
+        //- Construct from polyMesh and IOdictionary
+        sixDoFRigidBodyMotionSolver
+        (
+            const polyMesh&,
+            const IOdictionary& dict
+        );
+
+
+    //- Destructor
+    ~sixDoFRigidBodyMotionSolver();
+
+
+    // Member Functions
+
+        //- Return point location obtained from the current motion field
+        virtual tmp<pointField> curPoints() const;
+
+        //- Solve for motion
+        virtual void solve();
+};
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+} // End namespace Foam
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+#endif
+
+// ************************************************************************* //
diff --git a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H b/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H
index 2210d567a317663006428a0eeceae7e1f8796489..fa295c97c97161767c3c7ef5c6222683ae4c7b4c 100644
--- a/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H
+++ b/src/thermophysicalModels/properties/liquidProperties/liquidProperties/liquidProperties.H
@@ -64,7 +64,7 @@ class liquidProperties
         //- Critical pressure [Pa]
         scalar Pc_;
 
-        //- Critical volume [m^3/mol]
+        //- Critical volume [m^3/kmol]
         scalar Vc_;
 
         //- Critical compressibility factor []
@@ -185,7 +185,7 @@ public:
             //- Critical pressure [Pa]
             inline scalar Pc() const;
 
-            //- Critical volume [m^3/mol]
+            //- Critical volume [m^3/kmol]
             inline scalar Vc() const;
 
             //- Critical compressibilty factor
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
index 862d4ee6be33dbe206ec2144eb3895c861095a93..bd27dc874d9ca12b334c36d0ad4661e0efa886c1 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.C
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -47,7 +47,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField
 :
     mixedFvPatchScalarField(p, iF),
     temperatureCoupledBase(patch(), "undefined", "undefined-K"),
-    neighbourFieldName_("undefined-neighbourFieldName")
+    TnbrName_("undefined-Tnbr")
 {
     this->refValue() = 0.0;
     this->refGrad() = 0.0;
@@ -66,7 +66,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField
 :
     mixedFvPatchScalarField(ptf, p, iF, mapper),
     temperatureCoupledBase(patch(), ptf.KMethod(), ptf.kappaName()),
-    neighbourFieldName_(ptf.neighbourFieldName_)
+    TnbrName_(ptf.TnbrName_)
 {}
 
 
@@ -80,7 +80,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField
 :
     mixedFvPatchScalarField(p, iF),
     temperatureCoupledBase(patch(), dict),
-    neighbourFieldName_(dict.lookup("neighbourFieldName"))
+    TnbrName_(dict.lookup("neighbourFieldName"))
 {
     if (!isA<mappedPatchBase>(this->patch().patch()))
     {
@@ -129,7 +129,7 @@ turbulentTemperatureCoupledBaffleMixedFvPatchScalarField
 :
     mixedFvPatchScalarField(wtcsf, iF),
     temperatureCoupledBase(patch(), wtcsf.KMethod(), wtcsf.kappaName()),
-    neighbourFieldName_(wtcsf.neighbourFieldName_)
+    TnbrName_(wtcsf.TnbrName_)
 {}
 
 
@@ -169,7 +169,7 @@ void turbulentTemperatureCoupledBaffleMixedFvPatchScalarField::updateCoeffs()
     (
         nbrPatch.lookupPatchField<volScalarField, scalar>
         (
-            neighbourFieldName_
+            TnbrName_
         )
     );
 
@@ -237,7 +237,7 @@ void turbulentTemperatureCoupledBaffleMixedFvPatchScalarField::write
 ) const
 {
     mixedFvPatchScalarField::write(os);
-    os.writeKeyword("neighbourFieldName")<< neighbourFieldName_
+    os.writeKeyword("TnbrName")<< TnbrName_
         << token::END_STATEMENT << nl;
     temperatureCoupledBase::write(os);
 }
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H
index e9fc1f84aedd597d9414bcd5d40cecd4a30c164c..60e61d9d0f02c2ac85fee2faca8c488c86057fb3 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.H
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureCoupledBaffleMixed/turbulentTemperatureCoupledBaffleMixedFvPatchScalarField.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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -89,7 +89,7 @@ class turbulentTemperatureCoupledBaffleMixedFvPatchScalarField
     // Private data
 
         //- Name of field on the neighbour region
-        const word neighbourFieldName_;
+        const word TnbrName_;
 
 
 public:
diff --git a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
index 137db852d481eea3bb8fb11343b21d896dfaf6e0..6d512d50bd5c6479c42832e16ccfa8b131efe83c 100644
--- a/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
+++ b/src/turbulenceModels/compressible/turbulenceModel/derivedFvPatchFields/turbulentTemperatureRadCoupledMixed/turbulentTemperatureRadCoupledMixedFvPatchScalarField.C
@@ -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-2013 OpenFOAM Foundation
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
 License
@@ -84,9 +84,9 @@ turbulentTemperatureRadCoupledMixedFvPatchScalarField
 :
     mixedFvPatchScalarField(p, iF),
     temperatureCoupledBase(patch(), dict),
-    TnbrName_(dict.lookup("Tnbr")),
-    QrNbrName_(dict.lookup("QrNbr")),
-    QrName_(dict.lookup("Qr"))
+    TnbrName_(dict.lookupOrDefault<word>("Tnbr", "T")),
+    QrNbrName_(dict.lookupOrDefault<word>("QrNbr", "none")),
+    QrName_(dict.lookupOrDefault<word>("Qr", "none"))
 {
     if (!isA<mappedPatchBase>(this->patch().patch()))
     {
diff --git a/tutorials/basic/potentialFoam/cylinder/0.org/U b/tutorials/basic/potentialFoam/cylinder/0.org/U
index c4b3d7fb847efb27b1bb62a66c1edcf5302b29c5..d6116b31aabcabcab75c2b6d7b039eb4925ef1b2 100644
--- a/tutorials/basic/potentialFoam/cylinder/0.org/U
+++ b/tutorials/basic/potentialFoam/cylinder/0.org/U
@@ -43,7 +43,7 @@ boundaryField
 
     cylinder
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     defaultFaces
diff --git a/tutorials/basic/potentialFoam/cylinder/0.org/p b/tutorials/basic/potentialFoam/cylinder/0.org/p
index 89f2085d0defe41b267263f067bf0b237f573684..6f49804a73c532afd414d41edb937ba089777746 100644
--- a/tutorials/basic/potentialFoam/cylinder/0.org/p
+++ b/tutorials/basic/potentialFoam/cylinder/0.org/p
@@ -43,7 +43,7 @@ boundaryField
 
     cylinder
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     defaultFaces
diff --git a/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict b/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict
index b234ca868aa82d451fa0ba50244b4e806efbe039..7bfe080d73fbeb9c68fad0d317cdc849914ae7a1 100644
--- a/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict
+++ b/tutorials/basic/potentialFoam/cylinder/constant/polyMesh/blockMeshDict
@@ -138,7 +138,7 @@ boundary
     }
     cylinder
     {
-        type symmetryPlane;
+        type symmetry;
         faces
         (
             (10 5 24 29)
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT
index 53679a4d4015921a950bb20ef27a026c93fdd4f7..ef322d8c87d4dab8bc272c69eb834ae5ef32a43b 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryT
@@ -26,7 +26,7 @@ boundaryField
         value           uniform 300;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU
index ea3b12802eedcf9902e3527cccd1b18297c5c07a..744ecbbfb812a7416d788c9fa2b6d98758a69e0b 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/boundaryU
@@ -26,7 +26,7 @@ boundaryField
         value           uniform (1936 0 0);
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN
index d4692578fb6d6333ad0b045cbf5b623804a7a101..785995c6cf929f6382791a86d02fbf6c6e8ff46a 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/dsmcRhoN
@@ -25,7 +25,7 @@ boundaryField
         type            zeroGradient;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD
index 25c79baa0dfe753cecaf849836af34168ff96948..7b9c6df33abac4bf60a111566100b2693303c37e 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/fD
@@ -26,7 +26,7 @@ boundaryField
         value           uniform (0 0 0);
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof
index a7675b5581cfd93ff11a2602cc76bf1054349320..ead6eebcbd0b706b4d0b9b60c7b8ca8d303641fd 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/iDof
@@ -25,7 +25,7 @@ boundaryField
         type            zeroGradient;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE
index f906279f83784e6e443cc462dd37c10afc1174fd..ced72b0e8dc1ff43a77200bd4c3bd706dda196a2 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/internalE
@@ -25,7 +25,7 @@ boundaryField
         type            zeroGradient;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE
index 46d7cf4032db1396170cf097902676bfb7be6f38..0bd68d2dd0bd0e2d0f04ee2c965105c647f4db0e 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/linearKE
@@ -25,7 +25,7 @@ boundaryField
         type            zeroGradient;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum
index 366978bbc47a727326e5972d04a064250b3a0913..2a65f62e0499cef7f99a62999471fba220864132 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/momentum
@@ -25,7 +25,7 @@ boundaryField
         type            zeroGradient;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q
index 497d603d75e470c9720018f789a08743a4d8d206..49d5c4c775c8f428631c094e9a15fc621bf3e8e4 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/q
@@ -27,7 +27,7 @@ boundaryField
 
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM
index 20a8d376945ec1d4f783a3add22b249de4328e8e..a07b9b4cc5720af7e6cb96a020496b02c31e2c17 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoM
@@ -25,7 +25,7 @@ boundaryField
         type            zeroGradient;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN
index 9aec13a5eed9c62f9fb59c65bf1142cc53d5938a..10cad731ebd2944a2209c7fef8f5187e2fb713b5 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/0/rhoN
@@ -25,7 +25,7 @@ boundaryField
         type            zeroGradient;
     }
 
-    entrance
+    "entrance.*"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict
index 66a179d00eb614bdbf766cee3c43207c1bbbafb6..599dfd540caaaeeffb04e3771723305ff69a8803 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/constant/polyMesh/blockMeshDict
@@ -56,12 +56,20 @@ boundary
         );
     }
 
-    entrance
+    entrance1
     {
         type symmetryPlane;
         faces
         (
             (0 1 5 4)
+        );
+    }
+
+    entrance2
+    {
+        type symmetryPlane;
+        faces
+        (
             (0 3 2 1)
         );
     }
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T
index 2c6bde2e11234c7c304f802383b3e0b98bdedc2c..656062e8a95733adcfc4337933ebf94fe4277cb7 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/baffle3DRegion/T
@@ -24,11 +24,8 @@ boundaryField
     bottom
     {
         type                compressible::thermalBaffle;
-        Tnbr                T;
         kappa               solidThermo;
         kappaName           none;
-        QrNbr               none;
-        Qr                  none;
         value               uniform 300;
     }
     side
@@ -38,11 +35,8 @@ boundaryField
     top
     {
         type                compressible::thermalBaffle;
-        Tnbr                T;
         kappa               solidThermo;
         kappaName           none;
-        QrNbr               none;
-        Qr                  none;
         value               uniform 300;
     }
 }
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches
index 17ab57161fb6693f0003500292a88bee4c7a6d49..a068b051ba8ac32fe1153cb2adc3c662d80e4d69 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureMasterBafflePatches
@@ -9,15 +9,10 @@
 T
 {
         type                compressible::thermalBaffle;
-        Tnbr                T;
         kappa               fluidThermo;
         kappaName           none;
-        QrNbr               none;
-        Qr                  none;
         value               uniform 300;
 
-        // Thermo baffle model
-        //thermalBaffleModel   thermalBaffle;
         regionName           ${baffleRegionName};
         active               yes;
 
@@ -26,33 +21,6 @@ T
         // New fvMesh (region) information
         # include "extrudeModel"
 
-
-        // New mesh polyPatch information
-        bottomCoeffs
-        {
-            name        "bottom";
-            type        mappedWall;
-            sampleMode  nearestPatchFace;
-            samplePatch ${masterPatchName};
-            offsetMode  uniform;
-            offset      (0 0 0);
-        }
-
-        topCoeffs
-        {
-            name        "top";
-            type        mappedWall;
-            sampleMode  nearestPatchFace;
-            samplePatch ${slavePatchName};
-            offsetMode  uniform;
-            offset      (0 0 0);
-        }
-
-        sideCoeffs
-        {
-            name        "side";
-            type        patch;
-        }
 }
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict
index fe16ef97a259ec6b8886c14ee462a6c0bdc0c79e..2aed1e32a615e3405ccb0d355239984cfc0f1514 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict
+++ b/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/system/createBafflesDict
@@ -48,47 +48,16 @@ baffles
         surface     triSurfaceMesh;
         name        baffle3D.stl;
 
-        patches
+        patchPairs
         {
-            master
-            {
-                //- Master side patch
-                name            ${masterPatchName};
-
-                type            mappedWall;
-                inGroups        (baffleWallGroup);
-
-                sampleMode      nearestPatchFace;
-                sampleRegion    ${baffleRegionName};
-                samplePatch     bottom;
-                offsetMode      uniform;
-                offset          (0 0 0);
-
-                patchFields
-                {
-                    #include "./0/include/wallBafflePatches"
-                    #include "./0/include/3DBaffle/3DTemperatureMasterBafflePatches"
-                }
-            }
-            slave
+            type            mappedWall;
+            sampleMode      nearestPatchFace;
+            //Group master and slave in different groups. (default off)
+            groupBase       on;
+            patchFields
             {
-                //- Slave side patch
-                name            ${slavePatchName};
-
-                type            mappedWall;
-                inGroups        (baffleWallGroup);
-
-                sampleMode      nearestPatchFace;
-                sampleRegion    ${baffleRegionName};
-                samplePatch     top;
-                offsetMode      uniform;
-                offset          (0 0 0);
-
-                patchFields
-                {
-                    #include "./0/include/wallBafflePatches"
-                    #include "./0/include/3DBaffle/3DTemperatureSlaveBafflePatches"
-                }
+                #include "./0/include/wallBafflePatches"
+                #include "./0/include/3DBaffle/3DTemperatureMasterBafflePatches"
             }
         }
     }
diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U
index b6507db443dcd3e12f13ba5ec1f196bc2fc36d4b..9b63f3c191a4b6c36b08e3704f45360d30bbb114 100644
--- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U
+++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/U
@@ -33,7 +33,7 @@ boundaryField
     }
     up
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
     hole
     {
diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl
index 496477b8a6596e3c31f281f1b516662595c7a526..b35fc203808408e14912000de992eba5bccfc862 100644
--- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl
+++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kl
@@ -34,7 +34,7 @@ boundaryField
     }
     up
     {
-        type           symmetryPlane;
+        type           symmetry;
     }
     hole
     {
diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt
index 265bd65e66f967426d383ecd7d09665fdfd75687..c64ca0f6cff76dc305cb63e56440d0afa38990d7 100644
--- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt
+++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/kt
@@ -34,7 +34,7 @@ boundaryField
     }
     up
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
     hole
     {
diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut
index e2a11d2cffc99cd11b2cca0fadae84fda1a64b3a..435c96ce84a9229d930170318d84c25ad313369a 100644
--- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut
+++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/nut
@@ -33,7 +33,7 @@ boundaryField
     }
     up
     {
-        type           symmetryPlane;
+        type           symmetry;
     }
     hole
     {
diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega
index 9ed9c7a2dc0853983ef82932a00f881186564dd5..fed86624a8eb3c3db210347610e3debba58c6fd0 100644
--- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega
+++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/omega
@@ -34,7 +34,7 @@ boundaryField
     }
     up
     {
-        type           symmetryPlane;
+        type           symmetry;
     }
     hole
     {
diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p
index fbb21d38abc95c5d5e7a7548c5f839272bc9ebc8..e2ef78a321070c009eacc94d7dbc04ce26b30350 100644
--- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p
+++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/0/p
@@ -31,7 +31,7 @@ boundaryField
     }
     up
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
     hole
     {
diff --git a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict
index 64e4d59a024a09314d0dff56ee5f257e7807b55e..28e1b8a9f3951cdcc8a0d8c8b39d1bc67b013e20 100644
--- a/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict
+++ b/tutorials/incompressible/pimpleFoam/elipsekkLOmega/constant/polyMesh/blockMeshDict
@@ -67,7 +67,7 @@ boundary
 (
     left
     {
-        type symmetryPlane;
+        type symmetry;
         faces
         (
             (8 9 20 19)
@@ -85,7 +85,7 @@ boundary
     }
     down
     {
-        type symmetryPlane;
+        type symmetry;
         faces
         (
             (0 1 12 11)
@@ -94,7 +94,7 @@ boundary
     }
     up
     {
-        type symmetryPlane;
+        type symmetry;
         faces
         (
             (7 8 19 18)
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U
index 8cbb63e11608b0080a911f2591fc31af47ef1a9b..cee307a730f64dcc1f2b1b96970ff69e9868aadd 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/U
@@ -54,7 +54,7 @@ boundaryField
     {
         type            symmetryPlane;
     }
-    frontAndBack
+    "(front|back)"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches
index 69519e55ad077a0426254a46a79e65935e095f54..ae6ea03155c54a5561e7bc393f131d38dfae4c4c 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/include/frontBackUpperPatches
@@ -11,7 +11,7 @@ upperWall
     type symmetryPlane;
 }
 
-frontAndBack
+"(front|back)"
 {
     type symmetryPlane;
 }
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k
index 17fb5eca6d05e1702952e9b9bf20ac7d11889c8d..b4cd87638c3a29462792abf6ee257c83ae3b1199 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/k
@@ -46,7 +46,7 @@ boundaryField
     {
         type            symmetryPlane;
     }
-    frontAndBack
+    "(front|back)"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda
index 8fb0fba67ec954e8fcc9436c52270edd5f2512cb..41461e671110c3338e2b919e10057e1cc97ceaec 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nuTilda
@@ -46,7 +46,7 @@ boundaryField
     {
         type            symmetryPlane;
     }
-    frontAndBack
+    "(front|back)"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut
index 9f5768c2e73c9231f2b6a5e86171b814217b6b2b..915f16d2257f63a89179082c09d9d26735f511fe 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/nut
@@ -21,7 +21,7 @@ internalField   uniform 0;
 
 boundaryField
 {
-    frontAndBack
+    "(front|back)"
     {
         type            symmetryPlane;
         value           uniform 0;
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p
index ea47d98bd969451e359de3dab54bf8477d8ecab5..f85ce77a8ce2b3741bf182ed4e13b478200f415f 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/0.org/p
@@ -42,7 +42,7 @@ boundaryField
     {
         type            symmetryPlane;
     }
-    frontAndBack
+    "(front|back)"
     {
         type            symmetryPlane;
     }
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict
index ecd71ab96cbc821f0b2d3aa7f006578aca6009d6..53f4ee34474e057cfe840445b41c674f63575bad 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict
@@ -40,12 +40,19 @@ edges
 
 boundary
 (
-    frontAndBack
+    front
     {
         type symmetryPlane;
         faces
         (
             (3 7 6 2)
+        );
+    }
+    back
+    {
+        type symmetryPlane;
+        faces
+        (
             (1 5 4 0)
         );
     }
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall
index 9272e69301522a40d59f915a105738c04dbf38b7..c865acf47b5a02d5d6b490b5da742329c69cd50e 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/blockMeshDict.8pSmall
@@ -40,12 +40,19 @@ edges
 
 boundary
 (
-    frontAndBack
+    front
     {
         type symmetryPlane;
         faces
         (
             (3 7 6 2)
+        );
+    }
+    back
+    {
+        type symmetryPlane;
+        faces
+        (
             (1 5 4 0)
         );
     }
diff --git a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary
index 70a305827af2cbe30d545936791c61bf3ada7876..40530a746d077ecc7a9cb45a277031110b068c62 100644
--- a/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary
+++ b/tutorials/incompressible/pisoFoam/les/motorBike/motorBike/constant/polyMesh/boundary
@@ -15,15 +15,22 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-5
+6
 (
-    frontAndBack
+    front
     {
         type            symmetryPlane;
         inGroups        1(symmetryPlane);
-        nFaces          320;
+        nFaces          160;
         startFace       3456;
     }
+    back
+    {
+        type            symmetryPlane;
+        inGroups        1(symmetryPlane);
+        nFaces          160;
+        startFace       3616;
+    }
     inlet
     {
         type            patch;
diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes
index 70e7cf49ab6ec67ae4c65dc39708f95f9a61a430..84e4f5d57dfd09e85acab261c76262e00856e689 100644
--- a/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes
+++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/fvSchemes
@@ -28,13 +28,13 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss linearUpwind grad(U);
+    div(rhoPhi,U)  Gauss linearUpwind grad(U);
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression 1;
     div(phid1,p_rgh) Gauss upwind;
     div(phid2,p_rgh) Gauss upwind;
-    div(rho*phi,T)  Gauss linearUpwind unlimited;
-    div(rho*phi,K)  Gauss upwind;
+    div(rhoPhi,T)  Gauss linearUpwind unlimited;
+    div(rhoPhi,K)  Gauss upwind;
     div(phi,k)  Gauss upwind;
     div(phi,epsilon) Gauss upwind;
     div((muEff*dev2(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U
index 92d3cfd744cc45ea733384c41fdc96497f965257..cdfb0476f512ad3fbc326665250c1ba4eeea57e2 100644
--- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U
+++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/U
@@ -39,7 +39,7 @@ boundaryField
 
     sides
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     atmosphere
diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org
index dbef449a2f88da06ed726668d4636417ca2131cc..9f0c8ce1fc6fce29cadbdca5aa07f99adffe52ac 100644
--- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org
+++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/alpha.water.org
@@ -11,7 +11,7 @@ FoamFile
     format      ascii;
     class       volScalarField;
     location    "0";
-    object      alpha;
+    object      alpha.water;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -34,7 +34,7 @@ boundaryField
 
     sides
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     atmosphere
diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k
index 9f4d8df1c01a973102a7e5c645e39c382962deaa..aad177972c35962637692bb6233b97855b9788a9 100644
--- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k
+++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/k
@@ -34,7 +34,7 @@ boundaryField
 
     sides
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     atmosphere
diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut
index 5106e2b1029e657da831443c0dc3ee9d5e52fa96..c36622b550442471c0f6994d2cc46c97368ee7d0 100644
--- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut
+++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/nut
@@ -34,7 +34,7 @@ boundaryField
 
     sides
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     atmosphere
diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega
index 885912311ac33b4f148d9a7f7031996b734b38ba..cf768115ca3e68ffaa1a7f50684ba3909ea99921 100644
--- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega
+++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/omega
@@ -40,7 +40,7 @@ boundaryField
 
     sides
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     atmosphere
diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh
index 835531655703ace8fb4f92cbec548c0a569f1ad9..d041cce82d07af19480424a07c2eb2ce63e92ac9 100644
--- a/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh
+++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/0/p_rgh
@@ -33,7 +33,7 @@ boundaryField
 
     sides
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     atmosphere
diff --git a/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict b/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict
index 15c061cdf7ca172f97a8b4e63434a77a1a131ab1..989ecac8b0ae3ecffa8eda3106db8e383b52af45 100644
--- a/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict
+++ b/tutorials/multiphase/LTSInterFoam/wigleyHull/constant/polyMesh/blockMeshDict
@@ -68,7 +68,7 @@ boundary
 
     sides
     {
-        type symmetryPlane;
+        type symmetry;
         faces
         (
             (1 5 4 0)
diff --git a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes
index 568660217fe3cdf6d0843a3fff4f058d4d03d1bb..e6b91940f088b92d23efb21a78fc8437f487c08c 100644
--- a/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes
+++ b/tutorials/multiphase/MRFInterFoam/mixerVessel2D/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss linear;
+    div(rhoPhi,U)  Gauss linear;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water
index 0f3dcd46393f9b498f154afa8e76bbbe50579b1e..e1483e3c1ea0f46f5be5c2d819f89291fe8b3ace 100644
--- a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water
+++ b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/0.org/alpha.water
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      alpha1;
+    object      alpha.water;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes
index d1ed26cae3bca94b43c279390ae992152d8c1682..8c391523146a27e605a4cd78234fe5b85346f191 100644
--- a/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes
+++ b/tutorials/multiphase/MRFMultiphaseInterFoam/mixerVessel2D/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss limitedLinearV 1;
+    div(rhoPhi,U)  Gauss limitedLinearV 1;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes b/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes
index 3d39f5b409eb703d6ffea93e60538665384fb81b..85be6a2abe599318c6182c176356482da3fa4dc1 100644
--- a/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes
+++ b/tutorials/multiphase/compressibleInterDyMFoam/ras/sloshingTank2D/system/fvSchemes
@@ -30,11 +30,11 @@ divSchemes
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression 1;
 
-    div(rho*phi,U)  Gauss vanLeerV;
+    div(rhoPhi,U)  Gauss vanLeerV;
     div(phi,thermo:rho.water) Gauss linear;
     div(phi,thermo:rho.air) Gauss linear;
-    div(rho*phi,T)  Gauss vanLeer;
-    div(rho*phi,K)  Gauss linear;
+    div(rhoPhi,T)  Gauss vanLeer;
+    div(rhoPhi,K)  Gauss linear;
     div((phi+meshPhi),p)  Gauss linear;
 
     div((muEff*dev2(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes
index b44890f3896acda7fb7e8726a5231784fb20b1ff..2003e43e507d73c37ee629b545a1fa2395ab067e 100644
--- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes
+++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge2D/system/fvSchemes
@@ -30,11 +30,11 @@ divSchemes
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression 1;
 
-    div(rho*phi,U)  Gauss upwind;
+    div(rhoPhi,U)  Gauss upwind;
     div(phi,thermo:rho.water) Gauss upwind;
     div(phi,thermo:rho.air) Gauss upwind;
-    div(rho*phi,T)  Gauss upwind;
-    div(rho*phi,K)  Gauss upwind;
+    div(rhoPhi,T)  Gauss upwind;
+    div(rhoPhi,K)  Gauss upwind;
     div(phi,p)      Gauss upwind;
     div(phi,k)      Gauss upwind;
 
diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes
index b44890f3896acda7fb7e8726a5231784fb20b1ff..2003e43e507d73c37ee629b545a1fa2395ab067e 100644
--- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes
+++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/fvSchemes
@@ -30,11 +30,11 @@ divSchemes
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression 1;
 
-    div(rho*phi,U)  Gauss upwind;
+    div(rhoPhi,U)  Gauss upwind;
     div(phi,thermo:rho.water) Gauss upwind;
     div(phi,thermo:rho.air) Gauss upwind;
-    div(rho*phi,T)  Gauss upwind;
-    div(rho*phi,K)  Gauss upwind;
+    div(rhoPhi,T)  Gauss upwind;
+    div(rhoPhi,K)  Gauss upwind;
     div(phi,p)      Gauss upwind;
     div(phi,k)      Gauss upwind;
 
diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T
index 1dc67cd149c827026b09c4f1738f89f3a7073cc1..8041c3700d95a318a5e9f57f89081f7bccb4ec5a 100644
--- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T
+++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/0.org/T
@@ -39,7 +39,7 @@ boundaryField
     atmosphere
     {
         type            inletOutlet;
-        phi             rho*phi;
+        phi             rhoPhi;
         inletValue      $internalField;
     }
     defaultFaces
diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes
index 9f3fac1dce597032e84957e7b639b1152fb3cad8..fd25001435963d0885cd27d48e1d7f31204700ab 100644
--- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes
+++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/fvSchemes
@@ -27,12 +27,12 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss upwind;
+    div(rhoPhi,U)  Gauss upwind;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     "div\(phi,.*rho.*\)" Gauss upwind;
-    div(rho*phi,T)  Gauss upwind;
-    div(rho*phi,K)  Gauss upwind;
+    div(rhoPhi,T)  Gauss upwind;
+    div(rhoPhi,K)  Gauss upwind;
     div(phi,p)      Gauss upwind;
     div((muEff*dev2(T(grad(U))))) Gauss linear;
 }
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict
index 6c2f78df72ac14f3681a8d56f6a0f381841f43dd..7132713ff0c3ff5b6053ebf25cd9f2a18e40d0df 100644
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/constant/dynamicMeshDict
@@ -41,7 +41,7 @@ dynamicRefineFvMeshCoeffs
     (
         (phi none)
         (nHatf none)
-        (rho*phi none)
+        (rhoPhi none)
         (ghf none)
     );
     // Write the refinement level as a volScalarField
diff --git a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes
index ba444728e19c244ad788ce3878e4c65a2609b292..6a01390f25ecca9d7ba0bef02edf0cdb391ea166 100644
--- a/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/damBreakWithObstacle/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss upwind;
+    div(rhoPhi,U)  Gauss upwind;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
index daff376a9d323b0fc015d085f6f15ccf2e51e110..2b8d06c0fee203a782e795d7251859f4ba1276c9 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/0.org/pointDisplacement
@@ -32,13 +32,7 @@ boundaryField
     }
     floatingObject
     {
-        type            sixDoFRigidBodyDisplacement;
-        centreOfMass    (0.5 0.5 0.5);
-        momentOfInertia (0.08622222 0.08622222 0.144);
-        mass            9.6;
-        rhoInf          1;
-        report          on;
-        accelerationRelaxation 0.3;
+        type            calculated;
         value           uniform (0 0 0);
     }
 }
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
index 8001efbebcfad0057065cd89baeff3e54c58b6bb..3dfd129db5fbb717145f9cc67bbaa0e5de8623af 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/constant/dynamicMeshDict
@@ -14,15 +14,22 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dynamicFvMesh      dynamicMotionSolverFvMesh;
+dynamicFvMesh       dynamicMotionSolverFvMesh;
 
-motionSolverLibs ("libfvMotionSolvers.so");
+motionSolverLibs    ("libsixDoFRigidBodyMotion.so");
 
-solver            displacementLaplacian;
+solver              sixDoFRigidBodyMotion;
 
-displacementLaplacianCoeffs
+sixDoFRigidBodyMotionCoeffs
 {
-    diffusivity       inverseDistance (floatingObject);
+    patches         (floatingObject);
+    distance        0.3;
+
+    centreOfMass    (0.5 0.5 0.5);
+    momentOfInertia (0.08622222 0.08622222 0.144);
+    mass            9.6;
+    report          on;
+    accelerationRelaxation 0.3;
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
index 2a0a90efa67a634198a39d9b79ec7f9606a5be1a..d51c2fd31ed6c3b2dc01d5e8ffad9a213cf3a21d 100644
--- a/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObject/system/controlDict
@@ -51,12 +51,4 @@ maxCo           5;
 maxAlphaCo      5;
 maxDeltaT       1;
 
-libs
-(
-    "libOpenFOAM.so"
-    "libincompressibleRASModels.so"
-    "libfvMotionSolvers.so"
-    "libforces.so"
-);
-
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/U b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/U
new file mode 100644
index 0000000000000000000000000000000000000000..3bd47593e0467cf08cac6c3846c1f4b7702c1fe3
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/U
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    location    "0";
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    stationaryWalls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    atmosphere
+    {
+        type            pressureInletOutletVelocity;
+        value           uniform (0 0 0);
+    }
+    floatingObject
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/alpha.water b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/alpha.water
new file mode 100644
index 0000000000000000000000000000000000000000..e09e2739bd74209760e5464f8115fcb98a495b1d
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/alpha.water
@@ -0,0 +1,41 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     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
+{
+    stationaryWalls
+    {
+        type            zeroGradient;
+    }
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      uniform 0;
+        value           uniform 0;
+    }
+    floatingObject
+    {
+        type            zeroGradient;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/epsilon b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/epsilon
new file mode 100644
index 0000000000000000000000000000000000000000..7f3186509e35ac5e959629401a942c7b254f53df
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/epsilon
@@ -0,0 +1,49 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      epsilon;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -3 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    stationaryWalls
+    {
+        type            epsilonWallFunction;
+        Cmu             0.09;
+        kappa           0.41;
+        E               9.8;
+        value           uniform 0.1;
+    }
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      uniform 0.1;
+        value           uniform 0.1;
+    }
+    floatingObject
+    {
+        type            epsilonWallFunction;
+        Cmu             0.09;
+        kappa           0.41;
+        E               9.8;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/k b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/k
new file mode 100644
index 0000000000000000000000000000000000000000..b43eb2f5c00f09a27984fcf19366600a87a876f5
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/k
@@ -0,0 +1,43 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      k;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -2 0 0 0 0];
+
+internalField   uniform 0.1;
+
+boundaryField
+{
+    stationaryWalls
+    {
+        type            kqRWallFunction;
+        value           uniform 0.1;
+    }
+    atmosphere
+    {
+        type            inletOutlet;
+        inletValue      uniform 0.1;
+        value           uniform 0.1;
+    }
+    floatingObject
+    {
+        type            kqRWallFunction;
+        value           uniform 0.1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/nut b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/nut
new file mode 100644
index 0000000000000000000000000000000000000000..9d437e984132980225b2dfe8071b3a564d15e833
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/nut
@@ -0,0 +1,48 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    location    "0";
+    object      nut;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 2 -1 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    stationaryWalls
+    {
+        type            nutkWallFunction;
+        Cmu             0.09;
+        kappa           0.41;
+        E               9.8;
+        value           uniform 0;
+    }
+    atmosphere
+    {
+        type            calculated;
+        value           uniform 0;
+    }
+    floatingObject
+    {
+        type            nutkWallFunction;
+        Cmu             0.09;
+        kappa           0.41;
+        E               9.8;
+        value           uniform 0;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/p_rgh b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/p_rgh
new file mode 100644
index 0000000000000000000000000000000000000000..e24799fc142dceac24cdc489930837bd6163db4f
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/p_rgh
@@ -0,0 +1,44 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     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
+{
+    stationaryWalls
+    {
+        type            fixedFluxPressure;
+    }
+    atmosphere
+    {
+        type            totalPressure;
+        p0              uniform 0;
+        U               U;
+        phi             phi;
+        rho             rho;
+        psi             none;
+        gamma           1;
+        value           uniform 0;
+    }
+    floatingObject
+    {
+        type            fixedFluxPressure;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/pointDisplacement b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/pointDisplacement
new file mode 100644
index 0000000000000000000000000000000000000000..daff376a9d323b0fc015d085f6f15ccf2e51e110
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/0.org/pointDisplacement
@@ -0,0 +1,47 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     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
+{
+    stationaryWalls
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    atmosphere
+    {
+        type            fixedValue;
+        value           uniform (0 0 0);
+    }
+    floatingObject
+    {
+        type            sixDoFRigidBodyDisplacement;
+        centreOfMass    (0.5 0.5 0.5);
+        momentOfInertia (0.08622222 0.08622222 0.144);
+        mass            9.6;
+        rhoInf          1;
+        report          on;
+        accelerationRelaxation 0.3;
+        value           uniform (0 0 0);
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allclean b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..d16400a94f636d461b62f6f909c2d64d7e29c335
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allclean
@@ -0,0 +1,11 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # run from this directory
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+rm -rf 0 > /dev/null 2>&1
+
+cleanCase
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allrun b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..8ca61574f237151679a9f4041dcc7540282c72b3
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/Allrun
@@ -0,0 +1,17 @@
+#!/bin/sh
+cd ${0%/*} || exit 1    # run from this directory
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+# Set application name
+application=`getApplication`
+
+runApplication blockMesh
+runApplication topoSet
+runApplication subsetMesh -overwrite c0 -patch floatingObject
+cp -r 0.org 0 > /dev/null 2>&1
+runApplication setFields
+runApplication $application
+
+# ----------------------------------------------------------------- end-of-file
diff --git a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureSlaveBafflePatches b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/RASProperties
similarity index 69%
rename from tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureSlaveBafflePatches
rename to tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/RASProperties
index 9ca00a628f803a95ac26f205b6238a26b08d03ab..a4937b503a46850b2626f0d301e4a07b9f691507 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/3DBaffle/3DTemperatureSlaveBafflePatches
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/RASProperties
@@ -5,16 +5,21 @@
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
-T
+FoamFile
 {
-        type                compressible::thermalBaffle;
-        Tnbr                T;
-        kappa               fluidThermo;
-        kappaName           none;
-        QrNbr               none;
-        Qr                  none;
-        value               uniform 300;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      RASProperties;
 }
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+RASModel        kEpsilon;
+
+turbulence      on;
+
+printCoeffs     on;
+
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/dynamicMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..b350585fe9e80204fbf4038f73628f25f1e4b39c
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/dynamicMeshDict
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      motionProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh      dynamicMotionSolverFvMesh;
+
+motionSolverLibs    ("libfvMotionSolvers.so" "libsixDoFRigidBodyMotion.so");
+
+solver            displacementLaplacian;
+
+displacementLaplacianCoeffs
+{
+    diffusivity       inverseDistance (floatingObject);
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/g b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/g
new file mode 100644
index 0000000000000000000000000000000000000000..897615a50df92736e7b9c64bb2e64fba539496fc
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/g
@@ -0,0 +1,22 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       uniformDimensionedVectorField;
+    location    "constant";
+    object      g;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -2 0 0 0 0];
+value           ( 0 0 -9.81 );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..67928d075a42ee149582200510ad64144bee4e1a
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/blockMeshDict
@@ -0,0 +1,73 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+convertToMeters 1;
+
+vertices
+(
+    (0 0 0)
+    (1 0 0)
+    (1 1 0)
+    (0 1 0)
+    (0 0 1)
+    (1 0 1)
+    (1 1 1)
+    (0 1 1)
+);
+
+blocks
+(
+    hex (0 1 2 3 4 5 6 7) (40 40 60) simpleGrading (1 1 1)
+);
+
+edges
+(
+);
+
+boundary
+(
+    stationaryWalls
+    {
+        type wall;
+        faces
+        (
+            (0 3 2 1)
+            (2 6 5 1)
+            (1 5 4 0)
+            (3 7 6 2)
+            (0 4 7 3)
+        );
+    }
+    atmosphere
+    {
+        type patch;
+        faces
+        (
+            (4 5 6 7)
+        );
+    }
+    floatingObject
+    {
+        type wall;
+        faces ();
+    }
+);
+
+mergePatchPairs
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/boundary b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..1543006b7ac2cf94c682d7432780a0bd0d678615
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/polyMesh/boundary
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    stationaryWalls
+    {
+        type            wall;
+        nFaces          11200;
+        startFace       277808;
+    }
+    atmosphere
+    {
+        type            patch;
+        nFaces          1600;
+        startFace       289008;
+    }
+    floatingObject
+    {
+        type            wall;
+        nFaces          672;
+        startFace       290608;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/transportProperties b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..3729fc7648bb9d76cae6c48139d4b359b92e526c
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/transportProperties
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    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/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/1DBaffle/1DTemperatureSlaveBafflePatches b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/turbulenceProperties
similarity index 71%
rename from tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/1DBaffle/1DTemperatureSlaveBafflePatches
rename to tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/turbulenceProperties
index eafad0fe9852c775b1908b2e7c25a697e7eb68d0..c2021e7271ad4486bc209ceb70840ec26087d5e1 100644
--- a/tutorials/heatTransfer/buoyantSimpleFoam/circuitBoardCooling/0.org/include/1DBaffle/1DTemperatureSlaveBafflePatches
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/constant/turbulenceProperties
@@ -5,12 +5,16 @@
 |   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
-T
+FoamFile
 {
-   type     compressible::thermalBaffle1D<hConstSolidThermoPhysics>;
-   samplePatch  baffle1DWall_master;
-   value        uniform 300;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "constant";
+    object      turbulenceProperties;
 }
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+simulationType  RASModel;
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/controlDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..d51c2fd31ed6c3b2dc01d5e8ffad9a213cf3a21d
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/controlDict
@@ -0,0 +1,54 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     interDyMFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         6;
+
+deltaT          0.01;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.2;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  12;
+
+writeCompression uncompressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           5;
+maxAlphaCo      5;
+maxDeltaT       1;
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..0548a40b126dfbd72a03816fa8bc3fc04ed3cb6e
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/decomposeParDict
@@ -0,0 +1,45 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 8;
+
+method          scotch;
+
+simpleCoeffs
+{
+    n               ( 2 2 1 );
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               ( 2 2 1 );
+    delta           0.001;
+    order           xyz;
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           ( );
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..df7685da654a4a4fa7b159dc88722b7c7a521f5a
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSchemes
@@ -0,0 +1,62 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default         Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+}
+
+divSchemes
+{
+    div(rhoPhi,U)  Gauss vanLeerV;
+    div(phi,alpha)  Gauss vanLeer;
+    div(phirb,alpha) Gauss interfaceCompression;
+    div(phi,k)      Gauss upwind;
+    div(phi,epsilon) Gauss upwind;
+    div((muEff*dev(T(grad(U))))) Gauss linear;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    p_rgh;
+    pcorr;
+    alpha.water;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSolution b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..c539caec767bd1663cc77089af78b605b21446b0
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/fvSolution
@@ -0,0 +1,152 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    "cellDisplacement.*"
+    {
+        solver          GAMG;
+        tolerance       1e-5;
+        relTol          0;
+        smoother        GaussSeidel;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+    }
+
+    "alpha.water.*"
+    {
+        nAlphaCorr      1;
+        nAlphaSubCycles 1;
+        cAlpha          1;
+
+        alphaOuterCorrectors  yes;
+
+        MULESCorr       yes;
+        nLimiterIter    5;
+
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-8;
+        relTol          0;
+    }
+
+    "pcorr.*"
+    {
+        solver          PCG;
+        preconditioner
+        {
+            preconditioner  GAMG;
+            tolerance       1e-5;
+            relTol          0;
+            smoother        DICGaussSeidel;
+            nPreSweeps      0;
+            nPostSweeps     2;
+            nFinestSweeps   2;
+            cacheAgglomeration false;
+            nCellsInCoarsestLevel 10;
+            agglomerator    faceAreaPair;
+            mergeLevels     1;
+        }
+
+        tolerance       1e-05;
+        relTol          0;
+        maxIter         100;
+    }
+
+    p_rgh
+    {
+        solver          GAMG;
+        tolerance       1e-8;
+        relTol          0.01;
+        smoother        DIC;
+        nPreSweeps      0;
+        nPostSweeps     2;
+        nFinestSweeps   2;
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator    faceAreaPair;
+        mergeLevels     1;
+    }
+
+    p_rghFinal
+    {
+        solver          PCG;
+        preconditioner
+        {
+            preconditioner  GAMG;
+            tolerance       1e-8;
+            relTol          0;
+            nVcycles        2;
+            smoother        DICGaussSeidel;
+            nPreSweeps      2;
+            nPostSweeps     2;
+            nFinestSweeps   2;
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator    faceAreaPair;
+            mergeLevels     1;
+        }
+
+        tolerance       1e-8;
+        relTol          0;
+        maxIter         20;
+    }
+
+    "(U|k|epsilon)"
+    {
+        solver          smoothSolver;
+        smoother        GaussSeidel;
+        tolerance       1e-6;
+        relTol          0.1;
+        nSweeps         1;
+    }
+
+    "(U|k|epsilon)Final"
+    {
+        solver          smoothSolver;
+        smoother        GaussSeidel;
+        tolerance       1e-6;
+        relTol          0;
+        nSweeps         1;
+    }
+}
+
+PIMPLE
+{
+    momentumPredictor no;
+    nOuterCorrectors 6;
+    nCorrectors      1;
+    nNonOrthogonalCorrectors 0;
+    correctPhi      yes;
+    moveMeshOuterCorrectors yes;
+}
+
+relaxationFactors
+{
+    fields
+    {
+    }
+    equations
+    {
+        ".*" 1;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/setFieldsDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..2506a693af099682fa83ec08257f7e33b07498f8
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/setFieldsDict
@@ -0,0 +1,39 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    location    "system";
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue alpha.water 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box ( -100 -100 -100 ) ( 100 100 0.5368 );
+        fieldValues ( volScalarFieldValue alpha.water 1 );
+    }
+
+    boxToCell
+    {
+        box ( 0.7 0.8 -100 ) ( 100 100 0.65 );
+        fieldValues ( volScalarFieldValue alpha.water 1 );
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/topoSetDict b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/topoSetDict
new file mode 100644
index 0000000000000000000000000000000000000000..7cfce50d58bf0d2bc54981426cdb76ad4d9a542f
--- /dev/null
+++ b/tutorials/multiphase/interDyMFoam/ras/floatingObjectOld/system/topoSetDict
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      www.OpenFOAM.org                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      topoSetDict;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+actions
+(
+    {
+        name    c0;
+        type    cellSet;
+        action  new;
+        source  boxToCell;
+        sourceInfo
+        {
+            box (0.35 0.35 0.44) (0.65 0.65 0.56);
+        }
+    }
+
+    {
+        name    c0;
+        type    cellSet;
+        action  invert;
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes
index 70e7cf49ab6ec67ae4c65dc39708f95f9a61a430..84e4f5d57dfd09e85acab261c76262e00856e689 100644
--- a/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/mixerVesselAMI/system/fvSchemes
@@ -28,13 +28,13 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss linearUpwind grad(U);
+    div(rhoPhi,U)  Gauss linearUpwind grad(U);
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression 1;
     div(phid1,p_rgh) Gauss upwind;
     div(phid2,p_rgh) Gauss upwind;
-    div(rho*phi,T)  Gauss linearUpwind unlimited;
-    div(rho*phi,K)  Gauss upwind;
+    div(rhoPhi,T)  Gauss linearUpwind unlimited;
+    div(rhoPhi,K)  Gauss upwind;
     div(phi,k)  Gauss upwind;
     div(phi,epsilon) Gauss upwind;
     div((muEff*dev2(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes
index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss vanLeerV;
+    div(rhoPhi,U)  Gauss vanLeerV;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss vanLeer;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes
index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank2D3DoF/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss vanLeerV;
+    div(rhoPhi,U)  Gauss vanLeerV;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss vanLeer;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes
index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss vanLeerV;
+    div(rhoPhi,U)  Gauss vanLeerV;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss vanLeer;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes
index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D3DoF/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss vanLeerV;
+    div(rhoPhi,U)  Gauss vanLeerV;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss vanLeer;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes
index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644
--- a/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/sloshingTank3D6DoF/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss vanLeerV;
+    div(rhoPhi,U)  Gauss vanLeerV;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss vanLeer;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes b/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes
index b2c0af769de60be4fa5704d4973f1d0e6ae62d45..90379ecc541423649a05ed06cadd84b2252b9ff0 100644
--- a/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes
+++ b/tutorials/multiphase/interDyMFoam/ras/testTubeMixer/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss vanLeerV;
+    div(rhoPhi,U)  Gauss vanLeerV;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss vanLeer;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org b/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org
index f4ef0309517e7abb534ae10a948b3dd7bc4fede2..67a10a49fd4a7ca09e7e67a366edfff20913e518 100644
--- a/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org
+++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/0/alpha.water.org
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      alpha;
+    object      alpha.water;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes
index aded32f19531e85eb3b940fae50024c6628844f3..ef8581b85fac9dc78cea846977d7933cce157ac1 100644
--- a/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/laminar/capillaryRise/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss upwind;
+    div(rhoPhi,U)  Gauss upwind;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes
index 1d9632b67461e66072dc478e30a1133c3801c202..672ec59cc1fbbbf7eb75e051bb167808cc7ceb49 100644
--- a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss limitedLinearV 1;
+    div(rhoPhi,U)  Gauss limitedLinearV 1;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution
index 9e473a7865023654a2e5865a837a2989d6071492..0836eb66e57e756a1f4467b199877a3c7c21a35f 100644
--- a/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/damBreak/system/fvSolution
@@ -17,7 +17,7 @@ FoamFile
 
 solvers
 {
-    alpha.water
+    "alpha.water.*"
     {
         nAlphaCorr      2;
         nAlphaSubCycles 1;
diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org b/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org
index 914cb9ee1a0007ac0f19318ff30d93baeb6f8e75..d5b5bc0ce74cb77c9ea57247c4324ce360c90ad3 100644
--- a/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org
+++ b/tutorials/multiphase/interFoam/ras/waterChannel/0/alpha.water.org
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      alpha;
+    object      alpha.water;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict
index 64eae52fe0c8adca928d5ac57ed83e84597d78ff..bfea3cad84711f84633e955ca793b09b8e6af093 100644
--- a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict
+++ b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/controlDict
@@ -66,7 +66,7 @@ functions
 
         fields
         (
-            rho*phi
+            rhoPhi
         );
     }
 
diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes
index de873558162e1e1cea020af091244cba613e96e7..803b55e99544928c5a3cd0442df63de4e9b6b016 100644
--- a/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/ras/waterChannel/LTSInterFoam/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss linearUpwind grad(U);
+    div(rhoPhi,U)  Gauss linearUpwind grad(U);
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div(phi,k)      Gauss upwind;
diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict b/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict
index 05b109778c550ad3fa1a6cb1a3a94641829382a8..7d4ac3e2ef25f49e84c92b223e51c96f0ff425e0 100644
--- a/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict
+++ b/tutorials/multiphase/interFoam/ras/waterChannel/system/controlDict
@@ -67,7 +67,7 @@ functions
 
         fields
         (
-            rho*phi
+            rhoPhi
         );
     }
 
diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes
index 11fc30f2729251a04dbc6d17b621722ea785fbdb..053e51aa7f2d05c9829a95121112f5c9cbeab3e0 100644
--- a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSchemes
@@ -29,7 +29,7 @@ divSchemes
 {
     default             none;
 
-    div(rho*phi,U)      Gauss linearUpwind grad(U);
+    div(rhoPhi,U)      Gauss linearUpwind grad(U);
     div(phi,alpha)      Gauss vanLeer;
     div(phirb,alpha)    Gauss interfaceCompression;
 
diff --git a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution
index f6208ef3d23141f4002c87e5a90a0d4207596194..1a7bff2000b7530e309c934df8be824bb87d8972 100644
--- a/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution
+++ b/tutorials/multiphase/interFoam/ras/waterChannel/system/fvSolution
@@ -17,7 +17,7 @@ FoamFile
 
 solvers
 {
-    alpha.water
+    "alpha.water.*"
     {
         nAlphaCorr      1;
         nAlphaSubCycles 1;
diff --git a/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes
index 8ed8e03cc081883369e850bae8f758e5823c4b5b..3869ad107b691a7963cc3d5d2c1454f5c7788bcd 100644
--- a/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes
+++ b/tutorials/multiphase/interFoam/ras/weirOverflow/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss linear;
+    div(rhoPhi,U)  Gauss linear;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div(phi,k)      Gauss upwind;
diff --git a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes
index ea304e7042cb6bda7221eed5ee0c717684d3f48f..1de7b2421d4981d4b0ffe6f316b0e0e7c9eba555 100644
--- a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes
+++ b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/fvSchemes
@@ -27,7 +27,7 @@ gradSchemes
 
 divSchemes
 {
-    div(rho*phi,U)  Gauss limitedLinearV 1;
+    div(rhoPhi,U)  Gauss limitedLinearV 1;
     div(phi,alpha)  Gauss vanLeer;
     div(phirb,alpha) Gauss interfaceCompression;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U
index 35049b5a32a89e44c8995b056341063795d27a77..2929f0e586937c9bff9faf0b545243bb1743a9c2 100644
--- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U
+++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/U
@@ -36,7 +36,7 @@ boundaryField
 
     walls
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     bullet
diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water
index 6ca929b85518854cdadce3d0ce13500e21666b65..c08ba3184e0f599d9b062e94b6c553797f212dea 100644
--- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water
+++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/alpha.water
@@ -35,7 +35,7 @@ boundaryField
 
     walls
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     bullet
diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh
index f2ef63d0be0ced1f66ff74471e1a87f72bc2a739..1106c436ecfe9001af305c9dfd0fa2e7a5a68ff3 100644
--- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh
+++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/0/p_rgh
@@ -34,7 +34,7 @@ boundaryField
 
     walls
     {
-        type            symmetryPlane;
+        type            symmetry;
     }
 
     bullet
diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict
index 100156548dc5a63f11c7a333711e5ca59d743362..a88ee223dcf3f67449a08f9d2931c25efbd00950 100644
--- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict
+++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/blockMeshDict
@@ -54,7 +54,7 @@ boundary
     }
     walls
     {
-        type symmetryPlane;
+        type symmetry;
         faces
         (
             (0 4 7 3)
diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary
index 17c34d0093bec0469e5824177f10948c1f2b86ba..c87bd5dc917069d98ffd5703d32f421044ad6947 100644
--- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary
+++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/constant/polyMesh/boundary
@@ -31,8 +31,8 @@ FoamFile
     }
     walls
     {
-        type            symmetryPlane;
-        inGroups        1(symmetryPlane);
+        type            symmetry;
+        inGroups        1(symmetry);
         nFaces          3000;
         startFace       1130431;
     }
diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution
index 41c0ac39c6a22d42a6dee9577cd5a9bdfbe7a7be..f19f2cd8b23802d6e351247ded6af95d41cbe478 100644
--- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution
+++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/fvSolution
@@ -16,7 +16,7 @@ FoamFile
 
 solvers
 {
-    alpha.water
+    "alpha.water.*"
     {
         cAlpha          0;
         nAlphaCorr      2;
diff --git a/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes b/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes
index c4837bb39f9ed2c9b51387613228f3ae2a12cd5b..84a24f49246ed00e059462e590ef65ecab7b5723 100644
--- a/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes
+++ b/tutorials/multiphase/twoLiquidMixingFoam/lockExchange/system/fvSchemes
@@ -30,7 +30,7 @@ divSchemes
 {
     default         none;
 
-    div(rho*phi,U)  Gauss linear;
+    div(rhoPhi,U)  Gauss linear;
     div(phi,alpha)  Gauss vanLeer;
     div(phi,k)      Gauss limitedLinear 1;
     div((muEff*dev(T(grad(U))))) Gauss linear;
diff --git a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air
index 637ebed0e893d74b6cff62103ebf3c627ec682b9..b995d77c1687f8ba93cc24503dd72b1355ef7b90 100644
--- a/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air
+++ b/tutorials/multiphase/twoPhaseEulerFoam/laminar/mixerVessel2D/0/alpha.air
@@ -10,7 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    object      alpha1;
+    object      alpha.air;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //