diff --git a/.gitignore b/.gitignore
index f32722697ba7b4bdea39dc723724f1978c728072..4a7188cdfbaaa032b0025983cdc81649a20f8aa5 100644
--- a/.gitignore
+++ b/.gitignore
@@ -16,6 +16,8 @@
 *.la
 *.so
 *.jar
+
+# ignore derived files
 lex.yy.c
 
 # Corefiles
@@ -32,9 +34,10 @@ linux*Gcc*
 
 # reinstate wmake/rules that look like build folders
 !wmake/rules/linux*
-# but do ignore the derived files in there
-wmake/rules/linux*/dirToString
-wmake/rules/linux*/wmkdep
+
+# but do continue to ignore the derived wmake files
+wmake/rules/*/dirToString
+wmake/rules/*/wmkdep
 
 # doxygen generated documentation
 doc/[Dd]oxygen/html
diff --git a/applications/utilities/mesh/conversion/polyDualMesh/Make/files b/applications/utilities/mesh/conversion/polyDualMesh/Make/files
index de69b15edfcfc37273d21c3c670ccf885c87d43b..c43f79e8e148201c61e6d3d41f6fff50a540b4d7 100644
--- a/applications/utilities/mesh/conversion/polyDualMesh/Make/files
+++ b/applications/utilities/mesh/conversion/polyDualMesh/Make/files
@@ -1,4 +1,3 @@
-polyDualMesh.C
 polyDualMeshApp.C
 
 EXE = $(FOAM_APPBIN)/polyDualMesh
diff --git a/applications/utilities/mesh/conversion/polyDualMesh/Make/options b/applications/utilities/mesh/conversion/polyDualMesh/Make/options
index 54c035b8f55d183c1ad02bc372398feceaf31718..6dc63a7a989641aba7de693a1920eec74912cb02 100644
--- a/applications/utilities/mesh/conversion/polyDualMesh/Make/options
+++ b/applications/utilities/mesh/conversion/polyDualMesh/Make/options
@@ -1,5 +1,6 @@
 EXE_INC = \
-    -I$(LIB_SRC)/meshTools/lnInclude
+    -I$(LIB_SRC)/meshTools/lnInclude \
+    -I$(LIB_SRC)/conversion/lnInclude
 
 EXE_LIBS = \
-    -lmeshTools
+    -lmeshTools -lconversion
diff --git a/applications/utilities/mesh/manipulation/setSet/setSet.C b/applications/utilities/mesh/manipulation/setSet/setSet.C
index 488d22aa2aa5b8f78e3a4a5dcbdc5f022fa96c6e..2d70f797c7004c14742683f3f4efed4e61995870 100644
--- a/applications/utilities/mesh/manipulation/setSet/setSet.C
+++ b/applications/utilities/mesh/manipulation/setSet/setSet.C
@@ -344,7 +344,7 @@ bool doCommand
       / (10*Pstream::nProcs());
 
 
-    bool error = false;
+    bool ok = true;
 
     // Set to work on
     autoPtr<topoSet> currentSetPtr(NULL);
@@ -388,7 +388,7 @@ bool doCommand
             Pout<< "    Cannot construct/load set "
                 << topoSet::localPath(mesh, setName) << endl;
 
-            error = true;
+            ok = false;
         }
         else
         {
@@ -518,7 +518,7 @@ bool doCommand
     }
     catch (Foam::IOerror& fIOErr)
     {
-        error = true;
+        ok = false;
 
         Pout<< fIOErr.message().c_str() << endl;
 
@@ -529,7 +529,7 @@ bool doCommand
     }
     catch (Foam::error& fErr)
     {
-        error = true;
+        ok = false;
 
         Pout<< fErr.message().c_str() << endl;
 
@@ -539,15 +539,16 @@ bool doCommand
         }
     }
 
-    return !error;
+    return ok;
 }
 
 
+// Status returned from parsing the first token of the line
 enum commandStatus
 {
-    QUIT,
-    INVALID,
-    VALID
+    QUIT,           // quit program
+    INVALID,        // token is not a valid set manipulation command
+    VALID           // ,,    is a valid     ,,
 };
 
 
@@ -841,7 +842,7 @@ int main(int argc, char *argv[])
             }
         }
 
-        ok = false;
+        ok = true;
 
         if (stat == QUIT)
         {
diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
index 0c820006c72b9955e899b38cad0560f8cbec6a86..02f0523f71828b5b4f851b99c331dc48c37f730c 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
@@ -50,6 +50,14 @@ Usage
     Remove any existing @a processor subdirectories before decomposing the
     geometry.
 
+    @param -ifRequired \n
+    Only decompose the geometry if the number of domains has changed from a
+    previous decomposition. No @a processor subdirectories will be removed
+    unless the @a -force option is also specified. This option can be used
+    to avoid redundant geometry decomposition (eg, in scripts), but should
+    be used with caution when the underlying (serial) geometry or the
+    decomposition method etc. have been changed between decompositions.
+
 \*---------------------------------------------------------------------------*/
 
 #include "OSspecific.H"
@@ -80,6 +88,7 @@ int main(int argc, char *argv[])
     argList::validOptions.insert("fields", "");
     argList::validOptions.insert("filterPatches", "");
     argList::validOptions.insert("force", "");
+    argList::validOptions.insert("ifRequired", "");
 
 #   include "setRootCase.H"
 
@@ -88,6 +97,7 @@ int main(int argc, char *argv[])
     bool decomposeFieldsOnly(args.options().found("fields"));
     bool filterPatches(args.options().found("filterPatches"));
     bool forceOverwrite(args.options().found("force"));
+    bool ifRequiredDecomposition(args.options().found("ifRequired"));
 
 #   include "createTime.H"
 
@@ -100,47 +110,84 @@ int main(int argc, char *argv[])
         ++nProcs;
     }
 
-    // Check for previously decomposed case first
+    // get requested numberOfSubdomains
+    label nDomains = 0;
+    {
+        IOdictionary decompDict
+        (
+            IOobject
+            (
+                "decomposeParDict",
+                runTime.time().system(),
+                runTime,
+                IOobject::MUST_READ,
+                IOobject::NO_WRITE,
+                false
+            )
+        );
+
+        decompDict.lookup("numberOfSubdomains") >> nDomains;
+    }
+
     if (decomposeFieldsOnly)
     {
-        if (!nProcs)
+        // Sanity check on previously decomposed case
+        if (nProcs != nDomains)
         {
             FatalErrorIn(args.executable())
-                << "Specifying -fields requires a decomposed geometry!"
+                << "Specified -fields, but the case was decomposed with "
+                << nProcs << " domains"
+                << nl
+                << "instead of " << nDomains
+                << " domains as specified in decomposeParDict"
                 << nl
                 << exit(FatalError);
         }
     }
-    else
+    else if (nProcs)
     {
-        if (nProcs)
+        bool procDirsProblem = true;
+
+        if (ifRequiredDecomposition && nProcs == nDomains)
         {
-            if (forceOverwrite)
-            {
-                Info<< "Removing " << nProcs
-                    << " existing processor directories" << endl;
+            // we can reuse the decomposition
+            decomposeFieldsOnly = true;
+            procDirsProblem = false;
+            forceOverwrite = false;
 
-                // remove existing processor dirs
-                for (label procI = nProcs-1; procI >= 0; --procI)
-                {
-                    fileName procDir
-                    (
-                        runTime.path()/(word("processor") + name(procI))
-                    );
+            Info<< "Using existing processor directories" << nl;
+        }
 
-                    rmDir(procDir);
-                }
-            }
-            else
+        if (forceOverwrite)
+        {
+            Info<< "Removing " << nProcs
+                << " existing processor directories" << endl;
+
+            // remove existing processor dirs
+            // reverse order to avoid gaps if someone interrupts the process
+            for (label procI = nProcs-1; procI >= 0; --procI)
             {
-                FatalErrorIn(args.executable())
-                    << "Case is already decomposed, "
-                        "use the -force option or manually remove" << nl
-                    << "processor directories before decomposing. e.g.," << nl
-                    << "    rm -rf " << runTime.path().c_str() << "/processor*"
-                    << nl
-                    << exit(FatalError);
+                fileName procDir
+                (
+                    runTime.path()/(word("processor") + name(procI))
+                );
+
+                rmDir(procDir);
             }
+
+            procDirsProblem = false;
+        }
+
+        if (procDirsProblem)
+        {
+            FatalErrorIn(args.executable())
+                << "Case is already decomposed with " << nProcs
+                << " domains, use the -force option or manually" << nl
+                << "remove processor directories before decomposing. e.g.,"
+                << nl
+                << "    rm -rf " << runTime.path().c_str() << "/processor*"
+                << nl
+                << exit(FatalError);
         }
     }
 
diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
index b9ee4eaeb126871f082cf1e42a8e8357571f1529..c7317b464faeaa114f70cc6cb55f7fade8bbcd08 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
@@ -1,61 +1,61 @@
-// Mesh decomposition control dictionary
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
+/*-------------------------------*- C++ -*---------------------------------*\
+|    =========                                                              |
+|    \\      /     OpenFOAM                                                 |
+|     \\    /                                                               |
+|      \\  /       The Open Source CFD Toolbox                              |
+|       \\/                                        http://www.OpenFOAM.org  |
+\*-------------------------------------------------------------------------*/
 FoamFile
 {
-    version 0.5;
-    format ascii;
-
-    root     "ROOT";
-    case     "CASE";
-    instance "system";
-    local    "";
-
-    class dictionary;
-
-    object decompositionDict;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    note        "mesh decomposition control dictionary";
+    location    "system";
+    object      decomposeParDict;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-numberOfSubdomains   4;
+numberOfSubdomains  4;
 
-//preservePatches (inlet);
-//preserveFaceZones (heater solid1 solid3);
+// preservePatches (inlet);
+// preserveFaceZones (heater solid1 solid3);
 
-method               simple;
-//method               hierarchical;
-//method               metis;
-//method               manual;
+method          simple;
+// method          hierarchical;
+// method          metis;
+// method          manual;
 
 simpleCoeffs
 {
-    n                    (2 2 1);
-    delta                0.001;
+    n           (2 2 1);
+    delta       0.001;
 }
 
 hierarchicalCoeffs
 {
-    n                    (2 2 1);
-    delta                0.001;
-    order                xyz;
+    n           (2 2 1);
+    delta       0.001;
+    order       xyz;
 }
 
 metisCoeffs
 {
-    //processorWeights 
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
+ /*
+    processorWeights
+    (
+        1
+        1
+        1
+        1
+    );
+  */
 }
 
 manualCoeffs
 {
-    dataFile             "decompositionData";
+    dataFile    "decompositionData";
 }
 
 // ************************************************************************* //
diff --git a/applications/utilities/postProcessing/dataConversion/foamToVTK/vtkMesh.C b/applications/utilities/postProcessing/dataConversion/foamToVTK/vtkMesh.C
index 51f4951906a6341279f4e83f425ac3fd90050d38..f650dab04cee2860d8ce30222bcbe1c3b714f6e7 100644
--- a/applications/utilities/postProcessing/dataConversion/foamToVTK/vtkMesh.C
+++ b/applications/utilities/postProcessing/dataConversion/foamToVTK/vtkMesh.C
@@ -70,6 +70,7 @@ Foam::polyMesh::readUpdateState Foam::vtkMesh::readUpdate()
         // the subset even if only movement.
 
         topoPtr_.clear();
+        pointMeshPtr_.clear();
 
         if (setName_.size() > 0)
         {
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/Allwclean b/applications/utilities/postProcessing/graphics/PV3FoamReader/Allwclean
new file mode 100755
index 0000000000000000000000000000000000000000..0993c14cee915610b0aac195b75341855b7990bd
--- /dev/null
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/Allwclean
@@ -0,0 +1,7 @@
+#!/bin/sh
+set -x
+
+rm -r PV3FoamReader/Make
+
+wclean libso vtkPV3Foam
+
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx b/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
index 091af74399993b30dbb6ff1388b2d2b26c5ccff6..3e576a77db08c0662d91100f4bb7494e843c6393 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/PV3FoamReader/vtkPV3FoamReader.cxx
@@ -54,7 +54,7 @@ vtkPV3FoamReader::vtkPV3FoamReader()
 {
     Debug = 0;
     vtkDebugMacro(<<"Constructor");
-    
+
     SetNumberOfInputPorts(0);
 
     FileName  = NULL;
@@ -115,7 +115,6 @@ vtkPV3FoamReader::vtkPV3FoamReader()
 vtkPV3FoamReader::~vtkPV3FoamReader()
 {
     vtkDebugMacro(<<"Deconstructor");
-    cout << "Destroy ~vtkPV3FoamReader\n";
 
     if (foamData_)
     {
@@ -152,23 +151,30 @@ int vtkPV3FoamReader::RequestInformation
 )
 {
     vtkDebugMacro(<<"RequestInformation");
-    cout<<"REQUEST_INFORMATION\n";
+
+
+    if (Foam::vtkPV3Foam::debug)
+    {
+        cout<<"REQUEST_INFORMATION\n";
+    }
 
     if (!FileName)
     {
         vtkErrorMacro("FileName has to be specified!");
         return 0;
     }
-    
+
+    if (Foam::vtkPV3Foam::debug)
     {
         vtkInformation* outputInfo = this->GetOutputPortInformation(0);
-        outputInfo->Print(cout);
-    
+
         vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast
         (
             outputInfo->Get(vtkMultiBlockDataSet::DATA_OBJECT())
         );
-        if (output) 
+
+        outputInfo->Print(cout);
+        if (output)
         {
             output->Print(cout);
         }
@@ -177,21 +183,19 @@ int vtkPV3FoamReader::RequestInformation
             cout << "no output\n";
         }
 
-        cout << "GetExecutive:\n";
-
         this->GetExecutive()->GetOutputInformation(0)->Print(cout);
-    }
-    
-    {
+
         int nInfo = outputVector->GetNumberOfInformationObjects();
-        cout<<"requestInfo with " << nInfo << " items\n";
+
+        cout<< "requestInfo with " << nInfo << " items:\n";
+
         for (int i=0; i<nInfo; i++)
         {
             vtkInformation *info = outputVector->GetInformationObject(i);
             info->Print(cout);
         }
     }
-    
+
     vtkInformation *outInfo = outputVector->GetInformationObject(0);
 
     if (!foamData_)
@@ -207,15 +211,12 @@ int vtkPV3FoamReader::RequestInformation
     else
     {
         vtkDebugMacro("RequestInformation: updating information");
-
         foamData_->UpdateInformation();
     }
 
     int nTimeSteps = 0;
     double* timeSteps = foamData_->timeSteps(nTimeSteps);
 
-    cout<<"Have nTimeSteps: " << nTimeSteps << "\n";
-
     outInfo->Set
     (
         vtkStreamingDemandDrivenPipeline::TIME_STEPS(),
@@ -229,13 +230,16 @@ int vtkPV3FoamReader::RequestInformation
         timeRange[0] = timeSteps[0];
         timeRange[1] = timeSteps[nTimeSteps-1];
 
-        cout<<"nTimeSteps " << nTimeSteps << "\n";
-        cout<<"timeRange " << timeRange[0] << " -> " << timeRange[1] << "\n";
+        if (Foam::vtkPV3Foam::debug)
+        {
+            cout<<"nTimeSteps " << nTimeSteps << "\n";
+            cout<<"timeRange " << timeRange[0] << " to " << timeRange[1] << "\n";
 
-//        for (int i = 0; i < nTimeSteps; ++i)
-//        {
-//            cout<<"step[" << i << "] = " << timeSteps[i] << "\n";
-//        }
+            for (int i = 0; i < nTimeSteps; ++i)
+            {
+                cout<< "step[" << i << "] = " << timeSteps[i] << "\n";
+            }
+        }
 
         outInfo->Set
         (
@@ -247,7 +251,6 @@ int vtkPV3FoamReader::RequestInformation
 
     delete timeSteps;
 
-    cout<<"done RequestInformation\n";
     return 1;
 }
 
@@ -261,21 +264,27 @@ int vtkPV3FoamReader::RequestData
 )
 {
     vtkDebugMacro(<<"RequestData");
-    cout<<"REQUEST_DATA\n";
 
     if (!FileName)
     {
         vtkErrorMacro("FileName has to be specified!");
         return 0;
     }
-    
+
     {
         int nInfo = outputVector->GetNumberOfInformationObjects();
-        cout<<"requestData with " << nInfo << " items\n";
+        if (Foam::vtkPV3Foam::debug)
+        {
+            cout<<"requestData with " << nInfo << " items\n";
+        }
         for (int i=0; i<nInfo; i++)
         {
             vtkInformation *info = outputVector->GetInformationObject(i);
-            info->Print(cout);
+
+            if (Foam::vtkPV3Foam::debug)
+            {
+                info->Print(cout);
+            }
         }
     }
 
@@ -284,38 +293,38 @@ int vtkPV3FoamReader::RequestData
     (
         outInfo->Get(vtkMultiBlockDataSet::DATA_OBJECT())
     );
-    
-#if 1
+
+    if (Foam::vtkPV3Foam::debug)
     {
         vtkInformation* outputInfo = this->GetOutputPortInformation(0);
         outputInfo->Print(cout);
-    
+
         vtkMultiBlockDataSet* output = vtkMultiBlockDataSet::SafeDownCast
         (
             outputInfo->Get(vtkMultiBlockDataSet::DATA_OBJECT())
         );
-        if (output) 
+        if (output)
         {
             output->Print(cout);
         }
         else
         {
-            cout << "no output\n";
+            cout<< "no output\n";
         }
-        
+
         vtkInformation* execInfo = this->GetExecutive()->GetOutputInformation(0);
         execInfo->Print(cout);
-        
+
         outInfo->Print(cout);
-        
+
         vtkMultiBlockDataSet* dobj = vtkMultiBlockDataSet::SafeDownCast
         (
             outInfo->Get(vtkMultiBlockDataSet::DATA_OBJECT())
         );
-        if (dobj) 
+        if (dobj)
         {
             dobj->Print(cout);
-            
+
             vtkInformation* dobjInfo = dobj->GetInformation();
             dobjInfo->Print(cout);
         }
@@ -323,16 +332,16 @@ int vtkPV3FoamReader::RequestData
         {
             cout << "no data_object\n";
         }
-        
-
     }
-#endif
 
     if (outInfo->Has(vtkStreamingDemandDrivenPipeline::UPDATE_TIME_STEPS()))
     {
-        cout<<"Has UPDATE_TIME_STEPS\n";
-        cout<<"output->GetNumberOfBlocks() " << output->GetNumberOfBlocks() <<
-            "\n";
+        if (Foam::vtkPV3Foam::debug)
+        {
+            cout<<"Has UPDATE_TIME_STEPS\n";
+            cout<<"output->GetNumberOfBlocks() = "
+                << output->GetNumberOfBlocks() << "\n";
+        }
 
         // Get the requested time step.
         // We only supprt requests of a single time step
@@ -370,10 +379,6 @@ int vtkPV3FoamReader::RequestData
     }
     UpdateGUIOld = GetUpdateGUI();
 
-    cout<<"done RequestData\n";
-    cout<<"done output->GetNumberOfBlocks() "
-        << output->GetNumberOfBlocks() << "\n";
-
     return 1;
 }
 
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C
index e019e299d0c040de44e919658a69e0efbeab9f00..678ae8e9588981fadb579da34f89849d20eda948 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.C
@@ -87,10 +87,13 @@ void Foam::vtkPV3Foam::AddToBlock
 
     if (block)
     {
-        Info<< "block[" << blockNo << "] has "
-            << block->GetNumberOfBlocks()
-            <<  " datasets prior to adding set " << datasetNo
-            <<  " with name: " << blockName << endl;
+        if (debug)
+        {
+            Info<< "block[" << blockNo << "] has "
+                << block->GetNumberOfBlocks()
+                <<  " datasets prior to adding set " << datasetNo
+                <<  " with name: " << blockName << endl;
+        }
 
         // when assigning dataset 0, also name the parent block
         if (!datasetNo && selector.name())
@@ -481,8 +484,11 @@ Foam::vtkPV3Foam::vtkPV3Foam
 
     dbPtr_().functionObjects().off();
 
-    cout<<"constructed with output: ";
-    output_->Print(cout),
+    if (debug)
+    {
+        cout<< "constructed with output: ";
+        output_->Print(cout);
+    }
 
     resetCounters();
 
@@ -579,8 +585,8 @@ void Foam::vtkPV3Foam::Update
 {
     if (debug)
     {
-        Info<< "entered Foam::vtkPV3Foam::Update" << endl;
-        cout<<"Update\n";
+        cout<< "entered Foam::vtkPV3Foam::Update" << nl
+             <<"Update\n";
         output->Print(cout);
 
         cout<<"Internally:\n";
@@ -765,7 +771,10 @@ void Foam::vtkPV3Foam::addPatchNames(vtkRenderer* renderer)
         true
     );
 
-    Info<<"patches: " << selectedPatches <<endl;
+    if (debug)
+    {
+        Info<<"patches: " << selectedPatches <<endl;
+    }
 
     // Find the total number of zones
     // Each zone will take the patch name
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
index f5aadcd0512c9df0c25c43d543d1718c23e0dc44..a1d374cc9d2d5dff2ec71bfc5bcd15ba79cdf0cd 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3Foam.H
@@ -172,6 +172,7 @@ public:
             }
         };
 
+
 private:
 
     // Private data
@@ -645,85 +646,6 @@ public:
 };
 
 
-// * * * * * * * * * * * * * Template Specialisations  * * * * * * * * * * * //
-
-template<>
-void vtkPV3Foam::convertVolField
-(
-    const GeometricField<scalar, fvPatchField, volMesh>& sf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo&,
-    const label datasetNo,
-    labelList& superCells
-);
-
-
-template<>
-void vtkPV3Foam::convertPatchFaceField
-(
-    const word& name,
-    const Field<scalar>&,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo&,
-    const label datasetNo
-);
-
-template<>
-void vtkPV3Foam::convertFaceField
-(
-    const GeometricField<scalar, fvPatchField, volMesh>&,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo&,
-    const label datasetNo,
-    const fvMesh&,
-    const labelList& faceLabels
-);
-
-
-template<>
-void vtkPV3Foam::convertFaceField
-(
-    const GeometricField<scalar, fvPatchField, volMesh>&,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo&,
-    const label datasetNo,
-    const fvMesh&,
-    const faceSet&
-);
-
-
-template<>
-void vtkPV3Foam::convertPointField
-(
-    const GeometricField<scalar, pointPatchField, pointMesh>&,
-    const GeometricField<scalar, fvPatchField, volMesh>&,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo&,
-    const label datasetNo
-);
-
-
-template<>
-void vtkPV3Foam::convertPatchPointField
-(
-    const word& name,
-    const Field<scalar>&,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo&,
-    const label datasetNo
-);
-
-
-template<>
-void vtkPV3Foam::convertLagrangianField
-(
-    const IOField<scalar>&,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo&,
-    const label datasetNo
-);
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertFaceField.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertFaceField.H
index c6b3e51d4783220abcb61e1208c6e103a8251dce..114aab667a5f9347b799b53e8274f0495ede37c4 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertFaceField.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertFaceField.H
@@ -48,6 +48,8 @@ void Foam::vtkPV3Foam::convertFaceField
     const labelList& faceLabels
 )
 {
+    const label nComp = pTraits<Type>::nComponents;
+
     vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
     (
         GetDataSetFromBlock(output, selector, datasetNo)
@@ -59,33 +61,30 @@ void Foam::vtkPV3Foam::convertFaceField
 
     vtkFloatArray *cellData = vtkFloatArray::New();
     cellData->SetNumberOfTuples(faceLabels.size());
-    cellData->SetNumberOfComponents(Type::nComponents);
-    cellData->Allocate(Type::nComponents*faceLabels.size());
+    cellData->SetNumberOfComponents(nComp);
+    cellData->Allocate(nComp*faceLabels.size());
     cellData->SetName(tf.name().c_str());
 
-    float vec[Type::nComponents];
+    float vec[nComp];
 
     forAll(faceLabels, faceI)
     {
         const label faceNo = faceLabels[faceI];
         if (faceNo < nInternalFaces)
         {
-            Type t = 0.5 *
-            (
-                tf[faceOwner[faceNo]] + tf[faceNeigh[faceNo]]
-            );
+            Type t = 0.5*(tf[faceOwner[faceNo]] + tf[faceNeigh[faceNo]]);
 
-            for (direction d=0; d<Type::nComponents; d++)
+            for (direction d=0; d<nComp; d++)
             {
-                vec[d] = t[d];
+                vec[d] = component(t, d);
             }
         }
         else
         {
             const Type& t = tf[faceOwner[faceNo]];
-            for (direction d=0; d<Type::nComponents; d++)
+            for (direction d=0; d<nComp; d++)
             {
-                vec[d] = t[d];
+                vec[d] = component(t, d);
             }
         }
 
@@ -108,6 +107,8 @@ void Foam::vtkPV3Foam::convertFaceField
     const faceSet& fSet
 )
 {
+    const label nComp = pTraits<Type>::nComponents;
+
     vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
     (
         GetDataSetFromBlock(output, selector, datasetNo)
@@ -119,11 +120,11 @@ void Foam::vtkPV3Foam::convertFaceField
 
     vtkFloatArray *cellData = vtkFloatArray::New();
     cellData->SetNumberOfTuples(fSet.size());
-    cellData->SetNumberOfComponents(Type::nComponents);
-    cellData->Allocate(Type::nComponents*fSet.size());
+    cellData->SetNumberOfComponents(nComp);
+    cellData->Allocate(nComp*fSet.size());
     cellData->SetName(tf.name().c_str());
 
-    float vec[Type::nComponents];
+    float vec[nComp];
 
     label faceI = 0;
     forAllConstIter(faceSet, fSet, iter)
@@ -132,22 +133,19 @@ void Foam::vtkPV3Foam::convertFaceField
 
         if (faceNo < nInternalFaces)
         {
-            Type t = 0.5 *
-            (
-                tf[faceOwner[faceNo]] + tf[faceNeigh[faceNo]]
-            );
+            Type t = 0.5*(tf[faceOwner[faceNo]] + tf[faceNeigh[faceNo]]);
 
-            for (direction d=0; d<Type::nComponents; d++)
+            for (direction d=0; d<nComp; d++)
             {
-                vec[d] = t[d];
+                vec[d] = component(t, d);
             }
         }
         else
         {
             const Type& t = tf[faceOwner[faceNo]];
-            for (direction d=0; d<Type::nComponents; d++)
+            for (direction d=0; d<nComp; d++)
             {
-                vec[d] = t[d];
+                vec[d] = component(t, d);
             }
         }
 
@@ -160,125 +158,6 @@ void Foam::vtkPV3Foam::convertFaceField
 }
 
 
-template<>
-void Foam::vtkPV3Foam::convertFaceField
-(
-    const GeometricField<scalar, fvPatchField, volMesh>& tf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo& selector,
-    const label datasetNo,
-    const fvMesh& mesh,
-    const labelList& faceLabels
-)
-{
-    vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
-    (
-        GetDataSetFromBlock(output, selector, datasetNo)
-    );
-
-    const label nInternalFaces = mesh.nInternalFaces();
-    const labelList& faceOwner = mesh.faceOwner();
-    const labelList& faceNeigh = mesh.faceNeighbour();
-
-    vtkFloatArray *cellData = vtkFloatArray::New();
-    cellData->SetNumberOfTuples(faceLabels.size());
-    cellData->SetNumberOfComponents(1);
-    cellData->Allocate(faceLabels.size());
-    cellData->SetName(tf.name().c_str());
-
-    forAll(faceLabels, faceI)
-    {
-        const label faceNo = faceLabels[faceI];
-        if (faceNo < nInternalFaces)
-        {
-            cellData->InsertComponent
-            (
-                faceI,
-                0,
-                0.5 * (tf[faceOwner[faceNo]] + tf[faceNeigh[faceNo]])
-            );
-        }
-        else
-        {
-            cellData->InsertComponent
-            (
-                faceI, 0, tf[faceOwner[faceNo]]
-            );
-        }
-
-    }
-
-    vtkmesh->GetCellData()->AddArray(cellData);
-
-    if (!vtkmesh->GetCellData()->GetScalars())
-    {
-        vtkmesh->GetCellData()->SetScalars(cellData);
-    }
-
-    cellData->Delete();
-}
-
-
-template<>
-void Foam::vtkPV3Foam::convertFaceField
-(
-    const GeometricField<scalar, fvPatchField, volMesh>& tf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo& selector,
-    const label datasetNo,
-    const fvMesh& mesh,
-    const faceSet& fSet
-)
-{
-    vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
-    (
-        GetDataSetFromBlock(output, selector, datasetNo)
-    );
-
-    const label nInternalFaces = mesh.nInternalFaces();
-    const labelList& faceOwner = mesh.faceOwner();
-    const labelList& faceNeigh = mesh.faceNeighbour();
-
-    vtkFloatArray *cellData = vtkFloatArray::New();
-    cellData->SetNumberOfTuples(fSet.size());
-    cellData->SetNumberOfComponents(1);
-    cellData->Allocate(fSet.size());
-    cellData->SetName(tf.name().c_str());
-
-    label faceI = 0;
-    forAllConstIter(faceSet, fSet, iter)
-    {
-        const label faceNo = iter.key();
-        if (faceNo < nInternalFaces)
-        {
-            cellData->InsertComponent
-            (
-                faceI,
-                0,
-                0.5 * (tf[faceOwner[faceNo]] + tf[faceNeigh[faceNo]])
-            );
-        }
-        else
-        {
-            cellData->InsertComponent
-            (
-                faceI, 0, tf[faceOwner[faceNo]]
-            );
-        }
-        ++faceI;
-    }
-
-    vtkmesh->GetCellData()->AddArray(cellData);
-
-    if (!vtkmesh->GetCellData()->GetScalars())
-    {
-        vtkmesh->GetCellData()->SetScalars(cellData);
-    }
-
-    cellData->Delete();
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertLagrangianFields.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertLagrangianFields.H
index 7f99944008460041075523cdf90b7b6f2bb0362f..0ccc3f81a04536a507caf3d6cccc59c368a3dde0 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertLagrangianFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertLagrangianFields.H
@@ -95,6 +95,8 @@ void Foam::vtkPV3Foam::convertLagrangianField
     const label datasetNo
 )
 {
+    const label nComp = pTraits<Type>::nComponents;
+
     vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
     (
         GetDataSetFromBlock(output, selector, datasetNo)
@@ -102,24 +104,24 @@ void Foam::vtkPV3Foam::convertLagrangianField
 
     vtkFloatArray *pointData = vtkFloatArray::New();
     pointData->SetNumberOfTuples(tf.size());
-    pointData->SetNumberOfComponents(Type::nComponents);
-    pointData->Allocate(Type::nComponents*tf.size());
+    pointData->SetNumberOfComponents(nComp);
+    pointData->Allocate(nComp*tf.size());
     pointData->SetName(tf.name().c_str());
 
     if (debug)
     {
         Info<< "converting Lagrangian <Type>Field: " << tf.name() << nl
             << "tf.size() = " << tf.size() << nl
-            << "nComps  = " << Type::nComponents << endl;
+            << "nComp  = " << nComp << endl;
     }
 
-    float vec[Type::nComponents];
+    float vec[nComp];
 
     forAll(tf, i)
     {
-        for (direction d=0; d<Type::nComponents; d++)
+        for (direction d=0; d<nComp; d++)
         {
-            vec[d] = tf[i][d];
+            vec[d] = component(tf[i], d);
         }
 
         pointData->InsertTuple(i, vec);
@@ -130,48 +132,6 @@ void Foam::vtkPV3Foam::convertLagrangianField
 }
 
 
-template<>
-void Foam::vtkPV3Foam::convertLagrangianField
-(
-    const IOField<scalar>& sf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo& selector,
-    const label datasetNo
-)
-{
-    vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
-    (
-        GetDataSetFromBlock(output, selector, datasetNo)
-    );
-
-    vtkFloatArray *pointData = vtkFloatArray::New();
-    pointData->SetNumberOfTuples(sf.size());
-    pointData->SetNumberOfComponents(1);
-    pointData->Allocate(sf.size());
-    pointData->SetName(sf.name().c_str());
-
-    if (debug)
-    {
-        Info<< "converting Lagrangian scalarField: " << sf.name() << nl
-            << "sf.size() = " << sf.size() << nl
-            << "nComps  = 1" << endl;
-    }
-
-    for (int i=0; i<sf.size(); i++)
-    {
-        pointData->InsertComponent(i, 0, sf[i]);
-    }
-
-    vtkmesh->GetPointData()->AddArray(pointData);
-    if (!vtkmesh->GetPointData()->GetScalars())
-    {
-        vtkmesh->GetPointData()->SetScalars(pointData);
-    }
-
-    pointData->Delete();
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchFaceField.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchFaceField.H
index 11954235ea5de5866a05ced9268b4f99af772935..af0fde5e21db913a599b06f0438ab3edb555fd4c 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchFaceField.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchFaceField.H
@@ -48,6 +48,8 @@ void Foam::vtkPV3Foam::convertPatchFaceField
     const label datasetNo
 )
 {
+    const label nComp = pTraits<Type>::nComponents;
+
     vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
     (
         GetDataSetFromBlock(output, selector, datasetNo)
@@ -55,18 +57,18 @@ void Foam::vtkPV3Foam::convertPatchFaceField
 
     vtkFloatArray *cellData = vtkFloatArray::New();
     cellData->SetNumberOfTuples(ptf.size());
-    cellData->SetNumberOfComponents(Type::nComponents);
-    cellData->Allocate(Type::nComponents*ptf.size());
+    cellData->SetNumberOfComponents(nComp);
+    cellData->Allocate(nComp*ptf.size());
     cellData->SetName(name.c_str());
 
-    float vec[Type::nComponents];
+    float vec[nComp];
 
     forAll(ptf, i)
     {
         const Type& t = ptf[i];
-        for (direction d=0; d<Type::nComponents; d++)
+        for (direction d=0; d<nComp; d++)
         {
-            vec[d] = t[d];
+            vec[d] = component(t, d);
         }
 
         cellData->InsertTuple(i, vec);
@@ -77,43 +79,6 @@ void Foam::vtkPV3Foam::convertPatchFaceField
 }
 
 
-template<>
-void Foam::vtkPV3Foam::convertPatchFaceField
-(
-    const word& name,
-    const Field<scalar>& psf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo& selector,
-    const label datasetNo
-)
-{
-    vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
-    (
-        GetDataSetFromBlock(output, selector, datasetNo)
-    );
-
-    vtkFloatArray *cellData = vtkFloatArray::New();
-    cellData->SetNumberOfTuples(psf.size());
-    cellData->SetNumberOfComponents(1);
-    cellData->Allocate(psf.size());
-    cellData->SetName(name.c_str());
-
-    forAll(psf, i)
-    {
-        cellData->InsertComponent(i, 0, psf[i]);
-    }
-
-    vtkmesh->GetCellData()->AddArray(cellData);
-
-    if (!vtkmesh->GetCellData()->GetScalars())
-    {
-        vtkmesh->GetCellData()->SetScalars(cellData);
-    }
-
-    cellData->Delete();
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchPointField.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchPointField.H
index c0a3a92f9ab47c08ef82fad16107ebc5fd8c3f4a..a793958218a2084299fc9a4fd50b85bb9d9078f4 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchPointField.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPatchPointField.H
@@ -45,6 +45,8 @@ void Foam::vtkPV3Foam::convertPatchPointField
     const label datasetNo
 )
 {
+    const label nComp = pTraits<Type>::nComponents;
+
     vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
     (
         GetDataSetFromBlock(output, selector, datasetNo)
@@ -52,17 +54,17 @@ void Foam::vtkPV3Foam::convertPatchPointField
 
     vtkFloatArray *pointData = vtkFloatArray::New();
     pointData->SetNumberOfTuples(pptf.size());
-    pointData->SetNumberOfComponents(Type::nComponents);
-    pointData->Allocate(Type::nComponents*pptf.size());
+    pointData->SetNumberOfComponents(nComp);
+    pointData->Allocate(nComp*pptf.size());
     pointData->SetName(name.c_str());
 
-    float vec[Type::nComponents];
+    float vec[nComp];
 
     forAll(pptf, i)
     {
-        for (direction d=0; d<Type::nComponents; d++)
+        for (direction d=0; d<nComp; d++)
         {
-            vec[d] = pptf[i][d];
+            vec[d] = component(pptf[i], d);
         }
 
         pointData->InsertTuple(i, vec);
@@ -73,42 +75,6 @@ void Foam::vtkPV3Foam::convertPatchPointField
 }
 
 
-template<>
-void Foam::vtkPV3Foam::convertPatchPointField
-(
-    const word& name,
-    const Field<scalar>& ppsf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo& selector,
-    const label datasetNo
-)
-{
-    vtkPolyData* vtkmesh = vtkPolyData::SafeDownCast
-    (
-        GetDataSetFromBlock(output, selector, datasetNo)
-    );
-
-    vtkFloatArray *pointData = vtkFloatArray::New();
-    pointData->SetNumberOfTuples(ppsf.size());
-    pointData->SetNumberOfComponents(1);
-    pointData->Allocate(ppsf.size());
-    pointData->SetName(name.c_str());
-
-    for (int i=0; i<ppsf.size(); i++)
-    {
-        pointData->InsertComponent(i, 0, ppsf[i]);
-    }
-
-    vtkmesh->GetPointData()->AddArray(pointData);
-    if (!vtkmesh->GetPointData()->GetScalars())
-    {
-        vtkmesh->GetPointData()->SetScalars(pointData);
-    }
-
-    pointData->Delete();
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPointFields.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPointFields.H
index fc16caca71954e3f033848581442a16966ee1cf5..28d7fdfe5d0a8f2ab1bdbc9bc7c4769015c11592 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPointFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertPointFields.H
@@ -33,8 +33,6 @@ InClass
 // Foam includes
 #include "interpolatePointToCell.H"
 
-// VTK includes
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -145,6 +143,8 @@ void Foam::vtkPV3Foam::convertPointField
     const label datasetNo
 )
 {
+    const label nComp = pTraits<Type>::nComponents;
+
     vtkUnstructuredGrid* internalMesh = vtkUnstructuredGrid::SafeDownCast
     (
         GetDataSetFromBlock(output, selector, datasetNo)
@@ -152,17 +152,17 @@ void Foam::vtkPV3Foam::convertPointField
 
     vtkFloatArray *pointData = vtkFloatArray::New();
     pointData->SetNumberOfTuples(ptf.size() + addPointCellLabels_.size());
-    pointData->SetNumberOfComponents(Type::nComponents);
-    pointData->Allocate(Type::nComponents*ptf.size());
+    pointData->SetNumberOfComponents(nComp);
+    pointData->Allocate(nComp*ptf.size());
     pointData->SetName(tf.name().c_str());
 
-    float vec[Type::nComponents];
+    float vec[nComp];
 
     forAll(ptf, i)
     {
-        for (direction d=0; d<Type::nComponents; d++)
+        for (direction d=0; d<nComp; d++)
         {
-            vec[d] = ptf[i][d];
+            vec[d] = component(ptf[i], d);
         }
 
         pointData->InsertTuple(i, vec);
@@ -176,9 +176,9 @@ void Foam::vtkPV3Foam::convertPointField
         {
             Type t = tf[addPointCellLabels_[api]];
 
-            for (direction d=0; d<Type::nComponents; d++)
+            for (direction d=0; d<nComp; d++)
             {
-                vec[d] = t[d];
+                vec[d] = component(t, d);
             }
 
             pointData->InsertTuple(i++, vec);
@@ -190,9 +190,9 @@ void Foam::vtkPV3Foam::convertPointField
         {
             Type t = interpolatePointToCell(ptf, addPointCellLabels_[api]);
 
-            for (direction d=0; d<Type::nComponents; d++)
+            for (direction d=0; d<nComp; d++)
             {
-                vec[d] = t[d];
+                vec[d] = component(t, d);
             }
 
             pointData->InsertTuple(i++, vec);
@@ -204,69 +204,6 @@ void Foam::vtkPV3Foam::convertPointField
 }
 
 
-template<>
-void Foam::vtkPV3Foam::convertPointField
-(
-    const GeometricField<scalar, pointPatchField, pointMesh>& psf,
-    const GeometricField<scalar, fvPatchField, volMesh>& sf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo& selector,
-    const label datasetNo
-)
-{
-    vtkUnstructuredGrid* internalMesh = vtkUnstructuredGrid::SafeDownCast
-    (
-        GetDataSetFromBlock(output, selector, datasetNo)
-    );
-
-    vtkFloatArray *pointData = vtkFloatArray::New();
-    pointData->SetNumberOfTuples(psf.size() + addPointCellLabels_.size());
-    pointData->SetNumberOfComponents(1);
-    pointData->Allocate(psf.size());
-    pointData->SetName(sf.name().c_str());
-
-    for (int i=0; i<psf.size(); i++)
-    {
-        pointData->InsertComponent(i, 0, psf[i]);
-    }
-
-    label i = psf.size();
-
-    if (&sf != &GeometricField<scalar, fvPatchField, volMesh>::null())
-    {
-        forAll(addPointCellLabels_, api)
-        {
-            pointData->InsertComponent
-            (
-                i++,
-                0,
-                sf[addPointCellLabels_[api]]
-            );
-        }
-    }
-    else
-    {
-        forAll(addPointCellLabels_, api)
-        {
-            pointData->InsertComponent
-            (
-                i++,
-                0,
-                interpolatePointToCell(psf, addPointCellLabels_[api])
-            );
-        }
-    }
-
-    internalMesh->GetPointData()->AddArray(pointData);
-    if (!internalMesh->GetPointData()->GetScalars())
-    {
-        internalMesh->GetPointData()->SetScalars(pointData);
-    }
-
-    pointData->Delete();
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertVolFields.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertVolFields.H
index 4fcdd1725e2e7bb63169f5edb290fa0f06da31fc..ff2a1d8bcef1fb5614cb0a26b4ee639ec2ad83f5 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertVolFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamConvertVolFields.H
@@ -372,6 +372,8 @@ void Foam::vtkPV3Foam::convertVolField
     labelList& superCells
 )
 {
+    const label nComp = pTraits<Type>::nComponents;
+
     vtkUnstructuredGrid* vtkmesh = vtkUnstructuredGrid::SafeDownCast
     (
         GetDataSetFromBlock(output, selector, datasetNo)
@@ -379,8 +381,8 @@ void Foam::vtkPV3Foam::convertVolField
 
     vtkFloatArray* celldata = vtkFloatArray::New();
     celldata->SetNumberOfTuples(superCells.size());
-    celldata->SetNumberOfComponents(Type::nComponents);
-    celldata->Allocate(Type::nComponents*superCells.size());
+    celldata->SetNumberOfComponents(nComp);
+    celldata->Allocate(nComp*superCells.size());
     celldata->SetName(tf.name().c_str());
 
     if (debug)
@@ -388,17 +390,17 @@ void Foam::vtkPV3Foam::convertVolField
         Info<< "converting vol<Type>Field: " << tf.name() << nl
             << "field size = " << tf.size() << nl
             << "nTuples = " << superCells.size() << nl
-            << "nComps  = " << Type::nComponents << endl;
+            << "nComp  = " << nComp << endl;
     }
 
-    float vec[Type::nComponents];
+    float vec[nComp];
 
     forAll(superCells, scI)
     {
         const Type& t = tf[superCells[scI]];
-        for (direction d=0; d<Type::nComponents; d++)
+        for (direction d=0; d<nComp; d++)
         {
-            vec[d] = t[d];
+            vec[d] = component(t, d);
         }
 
         celldata->InsertTuple(scI, vec);
@@ -409,50 +411,6 @@ void Foam::vtkPV3Foam::convertVolField
 }
 
 
-template<>
-void Foam::vtkPV3Foam::convertVolField
-(
-    const GeometricField<scalar, fvPatchField, volMesh>& sf,
-    vtkMultiBlockDataSet* output,
-    const selectionInfo& selector,
-    const label datasetNo,
-    labelList& superCells
-)
-{
-    vtkUnstructuredGrid* vtkmesh = vtkUnstructuredGrid::SafeDownCast
-    (
-        GetDataSetFromBlock(output, selector, datasetNo)
-    );
-
-    vtkFloatArray *cellData = vtkFloatArray::New();
-    cellData->SetNumberOfTuples(superCells.size());
-    cellData->SetNumberOfComponents(1);
-    cellData->Allocate(superCells.size());
-    cellData->SetName(sf.name().c_str());
-
-    if (debug)
-    {
-        Info<< "converting volScalarField: " << sf.name() << nl
-            << "field size = " << sf.size() << nl
-            << "nTuples = " << superCells.size() << nl
-            << "nComps  = 1" << endl;
-    }
-
-    forAll(superCells, scI)
-    {
-        cellData->InsertComponent(scI, 0, sf[superCells[scI]]);
-    }
-
-    vtkmesh->GetCellData()->AddArray(cellData);
-    if (!vtkmesh->GetCellData()->GetScalars())
-    {
-        vtkmesh->GetCellData()->SetScalars(cellData);
-    }
-
-    cellData->Delete();
-}
-
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #endif
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdate.C b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdate.C
index c1babdcdc989d454c716ab400f6e0775ff2276e9..e7e4ac9106610c84edfe456ab19b65c29d1c71df 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdate.C
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdate.C
@@ -114,6 +114,12 @@ void Foam::vtkPV3Foam::updateVolFields
     }
 
     volPointInterpolation pInterp(mesh, pMesh);
+/*
+    convertVolFields<Foam::label>
+    (
+        mesh, pInterp, objects, arraySelection, output
+    );
+*/
     convertVolFields<Foam::scalar>
     (
         mesh, pInterp, objects, arraySelection, output
@@ -159,7 +165,12 @@ void Foam::vtkPV3Foam::updatePointFields
     {
         Info<< "converting Foam point fields" << endl;
     }
-
+/*
+    convertPointFields<Foam::label>
+    (
+        mesh, objects, arraySelection, output
+    );
+*/
     convertPointFields<Foam::scalar>
     (
         mesh, objects, arraySelection, output
@@ -213,6 +224,11 @@ void Foam::vtkPV3Foam::updateLagrangianFields
         Info<< "converting Foam Lagrangian fields" << endl;
     }
 
+    convertLagrangianFields<Foam::label>
+    (
+        mesh, objects, arraySelection, output
+    );
+
     convertLagrangianFields<Foam::scalar>
     (
         mesh, objects, arraySelection, output
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformation.C b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformation.C
index c6a520f6734e8e69eb6051db06e477960cba3912..d86a8a90dc56ba33a316e1051393c0103ffbd2cf 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformation.C
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformation.C
@@ -108,15 +108,13 @@ void Foam::vtkPV3Foam::updateInformationLagrangian()
 {
     if (debug)
     {
-        Info<< "entered Foam::vtkPV3Foam::updateInformationLagrangian at timePath "
-            << dbPtr_->timePath()/"lagrangian" << endl;
+        Info<< "entered Foam::vtkPV3Foam::updateInformationLagrangian "
+            << "at timePath " << dbPtr_->timePath()/"lagrangian" << endl;
     }
 
     vtkDataArraySelection* arraySelection = reader_->GetRegionSelection();
 
     // Search for list of lagrangian objects for this time
-    // IOobjectList lagrangianObjects(dbPtr(), dbPtr_().timeName(), "lagrangian");
-
     fileNameList cloudDirs
     (
         readDir(dbPtr_->timePath()/"lagrangian", fileName::DIRECTORY)
@@ -144,7 +142,11 @@ void Foam::vtkPV3Foam::updateInformationLagrangian()
     }
     else
     {
-        Info<<"no cloudDirs @ " << dbPtr_->timePath()/"lagrangian" << endl;
+        if (debug)
+        {
+            Info<<"no clouds identified in "
+                << dbPtr_->timePath()/"lagrangian" << endl;
+        }
     }
 
 }
@@ -159,7 +161,7 @@ void Foam::vtkPV3Foam::updateInformationPatches()
 
     vtkDataArraySelection *arraySelection = reader_->GetRegionSelection();
 
-    //- Read patches
+    // Read patches
     polyBoundaryMeshEntries patchEntries
     (
         IOobject
@@ -182,7 +184,7 @@ void Foam::vtkPV3Foam::updateInformationPatches()
     {
         label nFaces(readLabel(patchEntries[entryI].dict().lookup("nFaces")));
 
-        //- Valid patch if nFace > 0
+        // Valid patch if nFace > 0
         if (nFaces)
         {
             // Add patch to GUI region list
@@ -208,7 +210,7 @@ void Foam::vtkPV3Foam::updateInformationZones()
 
     vtkDataArraySelection *arraySelection = reader_->GetRegionSelection();
 
-    //- Read cell zone information
+    // Read cell zone information
     {
         zonesEntries zones
         (
@@ -240,7 +242,7 @@ void Foam::vtkPV3Foam::updateInformationZones()
         superCellZonesCells_.setSize(selectInfoCellZones_.size());
     }
 
-    //- Read face zone information
+    // Read face zone information
     {
         zonesEntries zones
         (
@@ -270,7 +272,7 @@ void Foam::vtkPV3Foam::updateInformationZones()
         }
     }
 
-    //- Read point zone information
+    // Read point zone information
     {
         zonesEntries zones
         (
@@ -373,6 +375,11 @@ void Foam::vtkPV3Foam::updateInformationLagrangianFields()
         "lagrangian"/cloudName_
     );
 
+    addFields<IOField<label> >
+    (
+        arraySelection,
+        objects
+    );
     addFields<IOField<scalar> >
     (
         arraySelection,
diff --git a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformationFields.H b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformationFields.H
index d93a88012899ef51f853d005f0904605bacd83f1..91571ca5f4b276f869b7baecb73d3c936acf6cd6 100644
--- a/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformationFields.H
+++ b/applications/utilities/postProcessing/graphics/PV3FoamReader/vtkPV3Foam/vtkPV3FoamUpdateInformationFields.H
@@ -55,6 +55,13 @@ void Foam::vtkPV3Foam::updateInformationFields
     // Populate the GUI volume/point field arrays
 
     //- Add volume fields to GUI
+/*
+    addFields<GeometricField<label, patchType, meshType> >
+    (
+        arraySelection,
+        objects
+    );
+*/
     addFields<GeometricField<scalar, patchType, meshType> >
     (
         arraySelection,
diff --git a/bin/paraFoam b/bin/paraFoam
index e32dd57964de94c498089cfc8c7c95cda26b683e..93fb4cf03b12210d8c008ca805eaccb4dceeec7c 100755
--- a/bin/paraFoam
+++ b/bin/paraFoam
@@ -77,8 +77,8 @@ do
    [ -s "$parentDir/$check" ] || usage "file does not exist:  '$parentDir/$check'"
 done
 
-caseFile="$caseName.foam"
-# caseFile="$caseName.OpenFOAM"
+#caseFile="$caseName.foam"
+caseFile="$caseName.OpenFOAM"
 
 case "$ParaView_VERSION" in
 2*)
diff --git a/doc/Doxygen/Doxyfile b/doc/Doxygen/Doxyfile
index a0d244d89a31b621c2fef9281724cd8b1075615d..f5ab1204243274fe5fd6471ea8031c14dee007ac 100644
--- a/doc/Doxygen/Doxyfile
+++ b/doc/Doxygen/Doxyfile
@@ -1244,7 +1244,7 @@ DOTFILE_DIRS           =
 # The MAX_DOT_GRAPH_MAX_NODES tag can be used to set the maximum number of
 # nodes that will be shown in the graph. If the number of nodes in a graph
 # becomes larger than this value, doxygen will truncate the graph, which is
-# visualized by representing a node as a red box. Note that doxygen if the number
+# visualized by representing a node as a red box. Note that if the number
 # of direct children of the root node in a graph is already larger than
 # MAX_DOT_GRAPH_NOTES then the graph will not be shown at all. Also note
 # that the size of a graph can be further restricted by MAX_DOT_GRAPH_DEPTH.
diff --git a/src/Allwmake b/src/Allwmake
index f7b68983c6fa2882aa2a5c6c16f2e2c43597a597..08bb914b740eff477bdfe8019cf9bb665b0f4493 100755
--- a/src/Allwmake
+++ b/src/Allwmake
@@ -31,6 +31,7 @@ wmake libso randomProcesses
 ( cd turbulenceModels && ./Allwmake )
 ( cd lagrangian && ./Allwmake )
 ( cd postProcessing && ./Allwmake )
+( cd conversion && ./Allwmake )
 
 wmake libso autoMesh
 wmake libso errorEstimation
diff --git a/src/OpenFOAM/db/dictionary/dictionary.C b/src/OpenFOAM/db/dictionary/dictionary.C
index 7ec434aac811bbe755afdf7d1cd14b1d923ad7dd..8a38ff9ba24ca1092d4563f1ef62338eb5d0afa1 100644
--- a/src/OpenFOAM/db/dictionary/dictionary.C
+++ b/src/OpenFOAM/db/dictionary/dictionary.C
@@ -210,7 +210,7 @@ const Foam::entry& Foam::dictionary::lookupEntry
         (
             "dictionary::lookupEntry(const word& keyword) const",
             *this
-        )   << " keyword " << keyword << " is undefined in dictionary "
+        )   << "keyword " << keyword << " is undefined in dictionary "
             << name()
             << exit(FatalIOError);
     }
@@ -268,7 +268,7 @@ const Foam::dictionary& Foam::dictionary::subDict(const word& keyword) const
         (
             "dictionary::subDict(const word& keyword) const",
             *this
-        )   << " keyword " << keyword << " is undefined in dictionary "
+        )   << "keyword " << keyword << " is undefined in dictionary "
             << name()
             << exit(FatalIOError);
     }
@@ -285,7 +285,7 @@ Foam::dictionary& Foam::dictionary::subDict(const word& keyword)
         (
             "dictionary::subDict(const word& keyword)",
             *this
-        )   << " keyword " << keyword << " is undefined in dictionary "
+        )   << "keyword " << keyword << " is undefined in dictionary "
             << name()
             << exit(FatalIOError);
     }
@@ -479,7 +479,7 @@ bool Foam::dictionary::changeKeyword
         }
         else
         {
-            WarningIn("dictionary::changeKeyword(const word& old, const word& new)")
+            WarningIn("dictionary::changeKeyword(const word&, const word&)")
                 << "cannot rename keyword "<< oldKeyword
                 << " to existing keyword " << newKeyword
                 << " in dictionary " << name() << endl;
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C
index b2074123a94bc6afbeb464c3e3459d08dc6df042..2ce7ada7ea1ce5445da016c0e5f064d13322df43 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.C
@@ -28,8 +28,6 @@ License
 #include "Time.H"
 #include "IFstream.H"
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 template<class Type>
@@ -57,8 +55,7 @@ timeVaryingUniformFixedValuePointPatchField
 )
 :
     fixedValuePointPatchField<Type>(ptf, p, iF, mapper),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
+    timeSeries_(ptf.timeSeries_)
 {}
 
 
@@ -73,8 +70,7 @@ timeVaryingUniformFixedValuePointPatchField
 )
 :
     fixedValuePointPatchField<Type>(p, iF),
-    timeDataFile_(dict.lookup("timeDataFile")),
-    timeSeries_(word(dict.lookup("timeBounding")))
+    timeSeries_(this->db(), dict)
 {
     updateCoeffs();
 }
@@ -89,8 +85,7 @@ timeVaryingUniformFixedValuePointPatchField
 )
 :
     fixedValuePointPatchField<Type>(ptf),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
+    timeSeries_(ptf.timeSeries_)
 {}
 
 
@@ -104,67 +99,12 @@ timeVaryingUniformFixedValuePointPatchField
 )
 :
     fixedValuePointPatchField<Type>(ptf, iF),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
+    timeSeries_(ptf.timeSeries_)
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class Type>
-Type
-Foam::timeVaryingUniformFixedValuePointPatchField<Type>::
-currentValue()
-{
-    if (timeSeries_.size() == 0)
-    {
-        fileName fName(timeDataFile_);
-        fName.expand();
-
-        if (fName.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingUniformFixedValuePointPatchField"
-                "::currentValue()"
-            )   << "timeDataFile not specified for Patch "
-                << this->patch().name()
-                << exit(FatalError);
-        }
-        else
-        {
-            // relative path
-            if (fName[0] != '/')
-            {
-                fName = this->db().path()/fName;
-            }
-
-            // just in case we change the interface to timeSeries
-            word boundType = timeBounding();
-
-            IFstream(fName)() >> timeSeries_;
-            timeSeries_.bounding(boundType);
-
-            // be a bit paranoid and check that the list is okay
-            timeSeries_.check();
-        }
-
-        if (timeSeries_.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingUniformFixedValuePointPatchField"
-                "::currentValue()"
-            )   << "empty time series for Patch "
-                << this->patch().name()
-                << exit(FatalError);
-        }
-    }
-
-    return timeSeries_(this->db().time().timeOutputValue());
-}
-
-
 template<class Type>
 void Foam::timeVaryingUniformFixedValuePointPatchField<Type>::updateCoeffs()
 {
@@ -173,7 +113,7 @@ void Foam::timeVaryingUniformFixedValuePointPatchField<Type>::updateCoeffs()
         return;
     }
 
-    this->operator==(currentValue());
+    this->operator==(timeSeries_(this->db().time().timeOutputValue()));
     fixedValuePointPatchField<Type>::updateCoeffs();
 }
 
@@ -182,13 +122,8 @@ template<class Type>
 void Foam::timeVaryingUniformFixedValuePointPatchField<Type>::write(Ostream& os) const
 {
     fixedValuePointPatchField<Type>::write(os);
-    os.writeKeyword("timeDataFile")
-        << timeDataFile_ << token::END_STATEMENT << nl;
-    os.writeKeyword("timeBounding")
-        << timeBounding() << token::END_STATEMENT << nl;
+    timeSeries_.write(os);
 }
 
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 // ************************************************************************* //
diff --git a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.H b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.H
index eee6a444399932592fdf42e9008a065b5e4640a7..e13150034d2be93b6c38efff58bd52dd7b870fb6 100644
--- a/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.H
+++ b/src/OpenFOAM/fields/pointPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValuePointPatchField.H
@@ -40,7 +40,7 @@ SourceFiles
 #define timeVaryingUniformFixedValuePointPatchField_H
 
 #include "fixedValuePointPatchField.H"
-#include "timeSeries.H"
+#include "interpolationTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -58,14 +58,9 @@ class timeVaryingUniformFixedValuePointPatchField
 {
     // Private data
 
-        //- file containing time/uniformFixedValue
-        fileName timeDataFile_;
-
         //- the time series being used, including the bounding treatment
-        timeSeries<Type> timeSeries_;
+        interpolationTable<Type> timeSeries_;
 
-        //- interpolate the value at the current time
-        Type currentValue();
 
 public:
 
@@ -138,14 +133,8 @@ public:
 
         // Access
 
-            //- Return the out-of-bounds treatment as a word
-            word timeBounding() const
-            {
-                return timeSeries_.bounding();
-            }
-
             //- Return the time series used
-            const timeSeries<Type>& timeData() const
+            const interpolationTable<Type>& timeSeries() const
             {
                 return timeSeries_;
             }
diff --git a/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C
new file mode 100644
index 0000000000000000000000000000000000000000..e2f1f92e7775e837a9822f475258a001a9305332
--- /dev/null
+++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.C
@@ -0,0 +1,482 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "interpolationTable.H"
+#include "IFstream.H"
+#include "objectRegistry.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::interpolationTable<Type>::interpolationTable()
+:
+    List<Tuple2<scalar, Type> >(),
+    dict_(dictionary::null),
+    boundAction_(interpolationTable::WARN),
+    fileName_("undefined_fileName")
+{}
+
+
+template<class Type>
+Foam::interpolationTable<Type>::interpolationTable
+(
+    const objectRegistry& obr,
+    const dictionary& dict
+)
+:
+    List<Tuple2<scalar, Type> >(),
+    dict_(dict),
+    boundAction_(wordToBoundAction(dict.lookup("boundAction"))),
+    fileName_(dict.lookup("fileName"))
+{
+    fileName_.expand();
+
+    // Correct for relative path
+    if (fileName_[0] != '/')
+    {
+        fileName_ = obr.db().path()/fileName_;
+    }
+
+    // Read data from file
+    IFstream(fileName_)() >> *this;
+
+    // Check that the data is okay
+    check();
+
+    if (this->size() == 0)
+    {
+        FatalErrorIn
+        (
+            "Foam::interpolationTable<Type>::interpolationTable"
+            "(const dictionary& dict)"
+        )   << "table is empty" << nl
+            << exit(FatalError);
+    }
+}
+
+
+template<class Type>
+Foam::interpolationTable<Type>::interpolationTable
+(
+     const interpolationTable& interpTable
+)
+:
+    List<Tuple2<scalar, Type> >(interpTable),
+    dict_(interpTable.dict_),
+    boundAction_(interpTable.boundAction_),
+    fileName_(interpTable.fileName_)
+{}
+
+
+// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::interpolationTable<Type>::~interpolationTable()
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+template<class Type>
+Foam::word Foam::interpolationTable<Type>::boundActionToWord
+(
+     const boundActions& bound
+) const
+{
+    word enumName("warn");
+
+    switch (bound)
+    {
+        case interpolationTable::ERROR:
+        {
+            enumName = "error";
+            break;
+        }
+        case interpolationTable::WARN:
+        {
+            enumName = "warn";
+            break;
+        }
+        case interpolationTable::CLAMP:
+        {
+            enumName = "clamp";
+            break;
+        }
+        case interpolationTable::REPEAT:
+        {
+            enumName = "repeat";
+            break;
+        }
+    }
+
+    return enumName;
+}
+
+
+template<class Type>
+typename Foam::interpolationTable<Type>::boundActions
+Foam::interpolationTable<Type>::wordToBoundAction
+(
+    const word& bound
+) const
+{
+    if (bound == "error")
+    {
+        return interpolationTable::ERROR;
+    }
+    else if (bound == "warn")
+    {
+        return interpolationTable::WARN;
+    }
+    else if (bound == "clamp")
+    {
+        return interpolationTable::CLAMP;
+    }
+    else if (bound == "repeat")
+    {
+        return interpolationTable::REPEAT;
+    }
+    else
+    {
+        WarningIn
+        (
+            "Foam::interpolationTable<Type>::wordToBoundAction(const word&)"
+        )   << "bad bounding specifier " << bound << " using 'warn'" << endl;
+
+        return interpolationTable::WARN;
+    }
+}
+
+
+template<class Type>
+void Foam::interpolationTable<Type>::check() const
+{
+    label n = size();
+    scalar prevValue = List<Tuple2<scalar, Type> >::operator[](0).first();
+
+    for (label i=1; i<n; ++i)
+    {
+        const scalar currValue =
+            List<Tuple2<scalar, Type> >::operator[](i).first();
+
+        // avoid duplicate values (divide-by-zero error)
+        if (currValue <= prevValue)
+        {
+            FatalErrorIn
+            (
+                "Foam::interpolationTable<Type>::checkOrder() const"
+            )   << "out-of-order value: "
+                << currValue << " at index " << i << nl
+                << exit(FatalError);
+        }
+        prevValue = currValue;
+    }
+}
+
+
+template<class Type>
+typename Foam::interpolationTable<Type>::boundActions
+Foam::interpolationTable<Type>::boundAction
+(
+    const boundActions& bound
+)
+{
+    boundActions prev = boundAction_;
+    boundAction_ = bound;
+    return prev;
+}
+
+
+template<class Type>
+void Foam::interpolationTable<Type>::write(Ostream& os) const
+{
+    os.writeKeyword("fileName")
+        << fileName_ << token::END_STATEMENT << nl;
+    os.writeKeyword("boundAction")
+        << boundActionToWord(boundAction_) << token::END_STATEMENT << nl;
+}
+
+
+// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
+
+template<class Type>
+const Foam::Tuple2<Foam::scalar, Type>&
+Foam::interpolationTable<Type>::operator[](const label i) const
+{
+    label ii = i;
+    label n  = size();
+
+    if (n <= 1)
+    {
+        ii = 0;
+    }
+    else if (ii < 0)
+    {
+        switch (boundAction_)
+        {
+            case interpolationTable::ERROR:
+            {
+                FatalErrorIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const label) const"
+                )   << "index (" << ii << ") underflow" << nl
+                    << exit(FatalError);
+                break;
+            }
+            case interpolationTable::WARN:
+            {
+                WarningIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const label) const"
+                )   << "index (" << ii << ") underflow" << nl
+                    << "    Continuing with the first entry"
+                    << endl;
+                // fall-through to 'CLAMP'
+            }
+            case interpolationTable::CLAMP:
+            {
+                ii = 0;
+                break;
+            }
+            case interpolationTable::REPEAT:
+            {
+                while (ii < 0)
+                {
+                    ii += n;
+                }
+                break;
+            }
+        }
+    }
+    else if (ii >= n)
+    {
+        switch (boundAction_)
+        {
+            case interpolationTable::ERROR:
+            {
+                FatalErrorIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const label) const"
+                )   << "index (" << ii << ") overflow" << nl
+                    << exit(FatalError);
+                break;
+            }
+            case interpolationTable::WARN:
+            {
+                WarningIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const label) const"
+                )   << "index (" << ii << ") overflow" << nl
+                    << "    Continuing with the last entry"
+                    << endl;
+                // fall-through to 'CLAMP'
+            }
+            case interpolationTable::CLAMP:
+            {
+                ii = n - 1;
+                break;
+            }
+            case interpolationTable::REPEAT:
+            {
+                while (ii >= n)
+                {
+                    ii -= n;
+                }
+                break;
+            }
+        }
+    }
+
+    return List<Tuple2<scalar, Type> >::operator[](ii);
+}
+
+
+template<class Type>
+Type Foam::interpolationTable<Type>::operator()(const scalar value) const
+{
+    label n = size();
+
+    if (n <= 1)
+    {
+        return List<Tuple2<scalar, Type> >::operator[](0).second();
+    }
+
+    scalar minLimit = List<Tuple2<scalar, Type> >::operator[](0).first();
+    scalar maxLimit = List<Tuple2<scalar, Type> >::operator[](n-1).first();
+    scalar lookupValue = value;
+
+    if (lookupValue < minLimit)
+    {
+        switch (boundAction_)
+        {
+            case interpolationTable::ERROR:
+            {
+                FatalErrorIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const scalar) const"
+                )   << "value (" << lookupValue << ") underflow" << nl
+                    << exit(FatalError);
+                break;
+            }
+            case interpolationTable::WARN:
+            {
+                WarningIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const scalar) const"
+                )   << "value (" << lookupValue << ") underflow" << nl
+                    << "    Continuing with the first entry"
+                    << endl;
+                // fall-through to 'CLAMP'
+            }
+            case interpolationTable::CLAMP:
+            {
+                return List<Tuple2<scalar, Type> >::operator[](0).second();
+                break;
+            }
+            case interpolationTable::REPEAT:
+            {
+                // adjust lookupValue to >= 0
+                while (lookupValue < 0)
+                {
+                    lookupValue += maxLimit;
+                }
+                break;
+            }
+        }
+    }
+    else if (lookupValue >= maxLimit)
+    {
+        switch (boundAction_)
+        {
+            case interpolationTable::ERROR:
+            {
+                FatalErrorIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const label) const"
+                )   << "value (" << lookupValue << ") overflow" << nl
+                    << exit(FatalError);
+                break;
+            }
+            case interpolationTable::WARN:
+            {
+                WarningIn
+                (
+                    "Foam::interpolationTable<Type>::operator[]"
+                    "(const label) const"
+                )   << "value (" << lookupValue << ") overflow" << nl
+                    << "    Continuing with the last entry"
+                    << endl;
+                // fall-through to 'CLAMP'
+            }
+            case interpolationTable::CLAMP:
+            {
+                return List<Tuple2<scalar, Type> >::operator[](n-1).second();
+                break;
+            }
+            case interpolationTable::REPEAT:
+            {
+                // adjust lookupValue <= maxLimit
+                while (lookupValue > maxLimit)
+                {
+                    lookupValue -= maxLimit;
+                }
+                break;
+            }
+        }
+    }
+
+    label lo = 0;
+    label hi = 0;
+
+    // look for the correct range
+    for (label i = 0; i < n; ++i)
+    {
+        if (lookupValue >= List<Tuple2<scalar, Type> >::operator[](i).first())
+        {
+            lo = hi = i;
+        }
+        else
+        {
+            hi = i;
+            break;
+        }
+    }
+
+    if (lo == hi)
+    {
+        // we are at the end of the table - or there is only a single entry
+        return List<Tuple2<scalar, Type> >::operator[](hi).second();
+    }
+    else if (hi == 0)
+    {
+        // this treatment should should only occur under these conditions:
+        //  -> the 'REPEAT' treatment
+        //  -> (0 <= value <= minLimit)
+        //  -> minLimit > 0
+        // Use the value at maxLimit as the value for value=0
+        lo = n - 1;
+
+        return
+        (
+            List<Tuple2<scalar, Type> >::operator[](lo).second()
+          + (
+                List<Tuple2<scalar, Type> >::operator[](hi).second()
+              - List<Tuple2<scalar, Type> >::operator[](lo).second()
+            )
+           *(lookupValue / minLimit)
+        );
+    }
+    else
+    {
+        // normal interpolation
+        return
+        (
+            List<Tuple2<scalar, Type> >::operator[](lo).second()
+          + (
+                List<Tuple2<scalar, Type> >::operator[](hi).second()
+              - List<Tuple2<scalar, Type> >::operator[](lo).second()
+            )
+           *(
+                lookupValue
+              - List<Tuple2<scalar, Type> >::operator[](lo).first()
+            )
+           /(
+                List<Tuple2<scalar, Type> >::operator[](hi).first()
+              - List<Tuple2<scalar, Type> >::operator[](lo).first()
+            )
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/src/OpenFOAM/interpolations/timeSeries/timeSeries.H b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H
similarity index 57%
rename from src/OpenFOAM/interpolations/timeSeries/timeSeries.H
rename to src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H
index 09433e3ff996492995e3324e46522c501c609652..207e19f91cc34ac8abebadac796e36492069e2a2 100644
--- a/src/OpenFOAM/interpolations/timeSeries/timeSeries.H
+++ b/src/OpenFOAM/interpolations/interpolationTable/interpolationTable.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::timeSeries
+    Foam::interpolationTable
 
 Description
     A list of times and values.
@@ -40,12 +40,12 @@ Note
     - Accessing a list with a single element will always return the same value.
 
 SourceFiles
-    timeSeries.C
+    interpolationTable.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef timeSeries_H
-#define timeSeries_H
+#ifndef interpolationTable_H
+#define interpolationTable_H
 
 #include "List.H"
 #include "Tuple2.H"
@@ -55,21 +55,23 @@ SourceFiles
 namespace Foam
 {
 
+class objectRegistry;
+
 /*---------------------------------------------------------------------------*\
-                        Class timeSeries Declaration
+                      Class interpolationTable Declaration
 \*---------------------------------------------------------------------------*/
 
-template<class T>
-class timeSeries
+template<class Type>
+class interpolationTable
 :
-    public List<Tuple2<scalar, T> >
+    public List<Tuple2<scalar, Type> >
 {
 public:
 
     // Public data types
 
-        //- Enumeration for handling out-of-bound times
-        enum bounds
+        //- Enumeration for handling out-of-bound values
+        enum boundActions
         {
             ERROR,          /*!< Exit with a FatalError */
             WARN,           /*!< Issue warning and clamp value (default) */
@@ -77,86 +79,96 @@ public:
             REPEAT          /*!< Treat as a repeating list */
         };
 
+
 private:
 
     // Private data
 
-        //- Enumeration for handling out-of-bound times
-        bounds bounding_;
+        //- Parent dictionary
+        const dictionary& dict_;
+
+        //- Enumeration for handling out-of-bound values
+        boundActions boundAction_;
+
+        //- File name
+        fileName fileName_;
+
 
 public:
 
     // Constructors
 
-        //- Construct null, optionally with a given bounding
-        timeSeries(const bounds = timeSeries::WARN);
+        //- Construct null
+        interpolationTable();
 
-        //- Construct null with a given bounding
-        timeSeries(const word&);
+        //- Construct from objectRegistry and dictionary
+        interpolationTable(const objectRegistry& obr, const dictionary& dict);
 
-        //- Construct from Istream, optionally with a given bounding
-        timeSeries(Istream&, const bounds = timeSeries::WARN);
+        //- Construct copy
+        interpolationTable(const interpolationTable& interpTable);
 
-        //- Construct from Istream with a given bounding
-        timeSeries(Istream&, const word&);
 
-    // Destructor
+    //- Destructor
+    ~interpolationTable();
 
-        ~timeSeries();
 
     // Member Functions
 
-    // Access
+        // Access
 
-        //- Return the size
-        label size() const
-        {
-            return List<Tuple2<scalar, T> >::size();
-        }
+            //- Return the size
+            label size() const
+            {
+                return List<Tuple2<scalar, Type> >::size();
+            }
 
-        //- Return the out-of-bounds treatment as a word
-        word bounding() const;
+            //- Return the out-of-bounds treatment as a word
+            word boundActionToWord(const boundActions& bound) const;
 
-    // Check
+            //- Return the out-of-bounds treatment as an enumeration
+            boundActions wordToBoundAction(const word& bound) const;
 
-        //- Check that list is monotonically increasing
-        //  Exit with a FatalError if there is a problem
-        void check() const;
 
-    // Edit
+        // Check
+
+            //- Check that list is monotonically increasing
+            //  Exit with a FatalError if there is a problem
+            void check() const;
 
-        //- Set the out-of-bounds treatment from enum, return previous setting
-        bounds bounding(const bounds& bound)
-        {
-            bounds prev = bounding_;
-            bounding_ = bound;
-            return prev;
-        }
 
-        //- Set the out-of-bounds treatment from word
-        void bounding(const word& bound);
+        // Edit
 
-    // Member Operators
+            //- Set the out-of-bounds treatment from enum, return previous
+            //  setting
+            boundActions boundAction(const boundActions& bound);
 
-        //- Return an element of constant Tuple2<scalar, T>
-        const Tuple2<scalar, T>& operator[](const label) const;
 
-        //- Return an interpolated value
-        T operator()(const scalar) const;
+        // Member Operators
 
+            //- Return an element of constant Tuple2<scalar, Type>
+            const Tuple2<scalar, Type>& operator[](const label) const;
+
+            //- Return an interpolated value
+            Type operator()(const scalar) const;
+
+
+        // I-O
+
+            //- Write
+            void write(Ostream& os) const;
 };
 
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 } // End namespace Foam
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 #ifdef NoRepository
-#   include "timeSeries.C"
+#   include "interpolationTable.C"
 #endif
 
 #endif
+
 // ************************************************************************* //
diff --git a/src/OpenFOAM/interpolations/timeSeries/timeSeries.C b/src/OpenFOAM/interpolations/timeSeries/timeSeries.C
deleted file mode 100644
index a886251c677b9cb85b7d49182d818d792c24485e..0000000000000000000000000000000000000000
--- a/src/OpenFOAM/interpolations/timeSeries/timeSeries.C
+++ /dev/null
@@ -1,402 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "timeSeries.H"
-#include "Istream.H"
-
-// * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
-
-// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
-
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-template<typename T>
-Foam::timeSeries<T>::timeSeries(const bounds bound)
-:
-    List<Tuple2<scalar, T> >(),
-    bounding_(bound)
-{}
-
-
-template<typename T>
-Foam::timeSeries<T>::timeSeries(const word& bound)
-:
-    List<Tuple2<scalar, T> >(),
-    bounding_(timeSeries::WARN)
-{
-    bounding(bound);
-}
-
-
-template<typename T>
-Foam::timeSeries<T>::timeSeries(Istream& is, const bounds bound)
-:
-    List<Tuple2<scalar, T> >(is),
-    bounding_(bound)
-{}
-
-
-template<typename T>
-Foam::timeSeries<T>::timeSeries(Istream& is, const word& bound)
-:
-    List<Tuple2<scalar, T> >(is),
-    bounding_(timeSeries::WARN)
-{
-    bounding(bound);
-}
-
-
-// * * * * * * * * * * * * * * * * Selectors * * * * * * * * * * * * * * * * //
-
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-template<typename T>
-Foam::timeSeries<T>::~timeSeries()
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-template<typename T>
-Foam::word Foam::timeSeries<T>::bounding() const
-{
-    word enumName("warn");
-
-    switch (bounding_)
-    {
-        case timeSeries::ERROR:
-            enumName = "error";
-            break;
-
-        case timeSeries::WARN:
-            enumName = "warn";
-            break;
-
-        case timeSeries::CLAMP:
-            enumName = "clamp";
-            break;
-
-        case timeSeries::REPEAT:
-            enumName = "repeat";
-            break;
-    }
-
-    return enumName;
-}
-
-
-template<typename T>
-void Foam::timeSeries<T>::bounding(const word& bound)
-{
-    if (bound == "error")
-    {
-        bounding_ = timeSeries::ERROR;
-    }
-    else if (bound == "warn")
-    {
-        bounding_ = timeSeries::WARN;
-    }
-    else if (bound == "clamp")
-    {
-        bounding_ = timeSeries::CLAMP;
-    }
-    else if (bound == "repeat")
-    {
-        bounding_ = timeSeries::REPEAT;
-    }
-    else
-    {
-        WarningIn("Foam::timeSeries<T>::boundingEnum(const word&)")
-            << "bad bounding specifier " << bound << " using 'warn'" << endl;
-
-        bounding_ = timeSeries::WARN;
-    }
-}
-
-
-template<typename T>
-void Foam::timeSeries<T>::check() const
-{
-    label n = size();
-    scalar prevTime = List<Tuple2<scalar, T> >::operator[](0).first();
-
-    for (label i = 1; i < n; ++i)
-    {
-        const scalar currTime = List<Tuple2<scalar, T> >::operator[](i).first();
-
-        // avoid duplicate times (divide-by-zero error)
-        if (currTime <= prevTime)
-        {
-            FatalErrorIn
-            (
-                "Foam::timeSeries<T>::checkOrder() const"
-            )   << "out-of-order time: "
-                << currTime << " at index " << i << nl
-                << exit(FatalError);
-        }
-        prevTime = currTime;
-    }
-}
-
-
-// * * * * * * * * * * * * * * * Member Operators  * * * * * * * * * * * * * //
-
-
-template<typename T>
-const Foam::Tuple2<Foam::scalar, T>&
-Foam::timeSeries<T>::operator[](const label i) const
-{
-    label ii = i;
-    label n  = size();
-
-    if (n <= 1)
-    {
-        ii = 0;
-    }
-    else if (ii < 0)
-    {
-        switch (bounding_)
-        {
-            case timeSeries::ERROR:
-                FatalErrorIn
-                (
-                    "Foam::timeSeries<T>::operator[](const label) const"
-                )   << "index (" << ii << ") underflow" << nl
-                    << exit(FatalError);
-                break;
-
-            case timeSeries::WARN:
-                WarningIn
-                (
-                    "Foam::timeSeries<T>::operator[](const label) const"
-                )   << "index (" << ii << ") underflow" << nl
-                    << "    Continuing with the first entry"
-                    << endl;
-                // fall-through to 'CLAMP'
-
-            case timeSeries::CLAMP:
-                ii = 0;
-                break;
-
-            case timeSeries::REPEAT:
-                while (ii < 0)
-                {
-                    ii += n;
-                }
-                break;
-        }
-    }
-    else if (ii >= n)
-    {
-        switch (bounding_)
-        {
-            case timeSeries::ERROR:
-                FatalErrorIn
-                (
-                    "Foam::timeSeries<T>::operator[](const label) const"
-                )   << "index (" << ii << ") overflow" << nl
-                    << exit(FatalError);
-                break;
-
-            case timeSeries::WARN:
-                WarningIn
-                (
-                    "Foam::timeSeries<T>::operator[](const label) const"
-                )   << "index (" << ii << ") overflow" << nl
-                    << "    Continuing with the last entry"
-                    << endl;
-                // fall-through to 'CLAMP'
-
-            case timeSeries::CLAMP:
-                ii = n - 1;
-                break;
-
-            case timeSeries::REPEAT:
-                while (ii >= n)
-                {
-                    ii -= n;
-                }
-                break;
-        }
-    }
-
-    return List<Tuple2<scalar, T> >::operator[](ii);
-}
-
-
-template<typename T>
-T Foam::timeSeries<T>::operator()(const scalar timeValue) const
-{
-    label n = size();
-
-    if (n <= 1)
-    {
-        return List<Tuple2<scalar, T> >::operator[](0).second();
-    }
-
-    scalar minTime = List<Tuple2<scalar, T> >::operator[](0).first();
-    scalar maxTime = List<Tuple2<scalar, T> >::operator[](n-1).first();
-    scalar lookupTime = timeValue;
-
-    if (lookupTime < minTime)
-    {
-        switch (bounding_)
-        {
-            case timeSeries::ERROR:
-                FatalErrorIn
-                (
-                    "Foam::timeSeries<T>::operator[](const scalar) const"
-                )   << "time (" << lookupTime << ") underflow" << nl
-                    << exit(FatalError);
-                break;
-
-            case timeSeries::WARN:
-                WarningIn
-                (
-                    "Foam::timeSeries<T>::operator[](const scalar) const"
-                )   << "time (" << lookupTime << ") underflow" << nl
-                    << "    Continuing with the first entry"
-                    << endl;
-                // fall-through to 'CLAMP'
-
-            case timeSeries::CLAMP:
-                return List<Tuple2<scalar, T> >::operator[](0).second();
-                break;
-
-            case timeSeries::REPEAT:
-                // adjust lookupTime to >= 0
-                while (lookupTime < 0)
-                {
-                    lookupTime += maxTime;
-                }
-                break;
-        }
-    }
-    else if (lookupTime >= maxTime)
-    {
-        switch (bounding_)
-        {
-            case timeSeries::ERROR:
-                FatalErrorIn
-                (
-                    "Foam::timeSeries<T>::operator[](const label) const"
-                )   << "time (" << lookupTime << ") overflow" << nl
-                    << exit(FatalError);
-                break;
-
-            case timeSeries::WARN:
-                WarningIn
-                (
-                    "Foam::timeSeries<T>::operator[](const label) const"
-                )   << "time (" << lookupTime << ") overflow" << nl
-                    << "    Continuing with the last entry"
-                    << endl;
-                // fall-through to 'CLAMP'
-
-            case timeSeries::CLAMP:
-                return List<Tuple2<scalar, T> >::operator[](n-1).second();
-                break;
-
-            case timeSeries::REPEAT:
-                // adjust lookupTime <= maxTime
-                while (lookupTime > maxTime)
-                {
-                    lookupTime -= maxTime;
-                }
-                break;
-        }
-    }
-
-    label lo = 0;
-    label hi = 0;
-
-    // look for the correct range
-    for (label i = 0; i < n; ++i)
-    {
-        if (lookupTime >= List<Tuple2<scalar, T> >::operator[](i).first())
-        {
-            lo = hi = i;
-        }
-        else
-        {
-            hi = i;
-            break;
-        }
-    }
-
-    if (lo == hi)
-    {
-        // we are at the end of the table - or there is only a single entry
-        return List<Tuple2<scalar, T> >::operator[](hi).second();
-    }
-    else if (hi == 0)
-    {
-        // this treatment should should only occur under these condition:
-        //  -> the 'REPEAT' treatment
-        //  -> (0 <= time <= minTime)
-        //  -> minTime > 0
-        // Use the value at maxTime as the value for time=0
-        lo = n - 1;
-
-        return
-        (
-            List<Tuple2<scalar, T> >::operator[](lo).second()
-          +
-            (
-                List<Tuple2<scalar, T> >::operator[](hi).second()
-              - List<Tuple2<scalar, T> >::operator[](lo).second()
-            )
-          * (lookupTime / minTime)
-        );
-    }
-    else
-    {
-        // normal interpolation
-        return
-        (
-            List<Tuple2<scalar, T> >::operator[](lo).second()
-          +
-            (
-                List<Tuple2<scalar, T> >::operator[](hi).second()
-              - List<Tuple2<scalar, T> >::operator[](lo).second()
-            )
-          *
-            (
-                lookupTime
-              - List<Tuple2<scalar, T> >::operator[](lo).first()
-            )
-          /
-            (
-                List<Tuple2<scalar, T> >::operator[](hi).first()
-              - List<Tuple2<scalar, T> >::operator[](lo).first()
-            )
-        );
-    }
-}
-
-
-// ************************************************************************* //
diff --git a/src/OpenFOAM/primitives/label/label.H b/src/OpenFOAM/primitives/label/label.H
index de4a67fc14f5d7198eaab6b4535e2da1b89231bf..ee18f569ade2a5e52a29e1bdcfe1f95826cdb06e 100644
--- a/src/OpenFOAM/primitives/label/label.H
+++ b/src/OpenFOAM/primitives/label/label.H
@@ -119,6 +119,7 @@ namespace Foam
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 #include "pTraits.H"
+#include "direction.H"
 
 namespace Foam
 {
@@ -202,6 +203,16 @@ MAXMIN(long, int, long)
 MAXMIN(long long, int, long long)
 MAXMIN(long long, long long, int)
 
+inline label& setComponent(label& l, const direction)
+{
+    return l;
+}
+
+inline label component(const label l, const direction)
+{
+    return l;
+}
+
 inline label mag(const label l)
 {
     return ::abs(l);
diff --git a/src/conversion/Allwmake b/src/conversion/Allwmake
new file mode 100755
index 0000000000000000000000000000000000000000..72e9c2b141c710000251e401749d7e614ff76963
--- /dev/null
+++ b/src/conversion/Allwmake
@@ -0,0 +1,4 @@
+#!/bin/sh
+set -x
+
+wmake libso
diff --git a/src/conversion/Make/files b/src/conversion/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..435c341cd3c800a2db6c43d24d560631c58afb43
--- /dev/null
+++ b/src/conversion/Make/files
@@ -0,0 +1,3 @@
+polyDualMesh/polyDualMesh.C
+
+LIB = $(FOAM_LIBBIN)/libconversion
diff --git a/src/conversion/Make/options b/src/conversion/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..4b2f0a059fbac055ee17d31b510b95445907d34c
--- /dev/null
+++ b/src/conversion/Make/options
@@ -0,0 +1,5 @@
+EXE_INC = \
+    -I$(LIB_SRC)/meshTools/lnInclude
+
+LIB_LIBS = \
+    -lmeshTools
diff --git a/applications/utilities/mesh/conversion/polyDualMesh/polyDualMesh.C b/src/conversion/polyDualMesh/polyDualMesh.C
similarity index 100%
rename from applications/utilities/mesh/conversion/polyDualMesh/polyDualMesh.C
rename to src/conversion/polyDualMesh/polyDualMesh.C
diff --git a/applications/utilities/mesh/conversion/polyDualMesh/polyDualMesh.H b/src/conversion/polyDualMesh/polyDualMesh.H
similarity index 100%
rename from applications/utilities/mesh/conversion/polyDualMesh/polyDualMesh.H
rename to src/conversion/polyDualMesh/polyDualMesh.H
diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C
index 6a6eb7f57b0d26b074eb89d97f639210bebd9138..d99e56209dcb23db76a5654c4c0b7c1130f041c5 100644
--- a/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C
+++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/hexRef8.C
@@ -50,15 +50,15 @@ namespace Foam
 {
     defineTypeNameAndDebug(hexRef8, 0);
 
-    // Reduction class. If x and y are not equal assign value.
+    //- Reduction class. If x and y are not equal assign value.
     template< int value >
     class ifEqEqOp
     {
         public:
         void operator()( label& x, const label& y ) const
         {
-            x = (x==y) ? x:value; 
-        }   
+            x = (x==y) ? x:value;
+        }
     };
 }
 
diff --git a/src/finiteVolume/Make/files b/src/finiteVolume/Make/files
index d0e560c73b995f7119c7741ef86f4c906ff0c1a9..d4a3e0ff78e55c5fa2cdfdeccfdd6682511565eb 100644
--- a/src/finiteVolume/Make/files
+++ b/src/finiteVolume/Make/files
@@ -78,7 +78,7 @@ $(derivedFvPatchFields)/freestream/freestreamFvPatchFields.C
 $(derivedFvPatchFields)/freestreamPressure/freestreamPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/inletOutlet/inletOutletFvPatchFields.C
 $(derivedFvPatchFields)/inletOutletTotalTemperature/inletOutletTotalTemperatureFvPatchScalarField.C
-$(derivedFvPatchFields)/massFlowRateInletVelocity/massFlowRateInletVelocityFvPatchVectorField.C
+$(derivedFvPatchFields)/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C
 $(derivedFvPatchFields)/movingWallVelocity/movingWallVelocityFvPatchVectorField.C
 $(derivedFvPatchFields)/oscillatingFixedValue/oscillatingFixedValueFvPatchFields.C
 $(derivedFvPatchFields)/outletInlet/outletInletFvPatchFields.C
@@ -96,7 +96,7 @@ $(derivedFvPatchFields)/surfaceNormalFixedValue/surfaceNormalFixedValueFvPatchVe
 $(derivedFvPatchFields)/syringePressure/syringePressureFvPatchScalarField.C
 $(derivedFvPatchFields)/timeVaryingMappedFixedValue/AverageIOFields.C
 $(derivedFvPatchFields)/timeVaryingMappedFixedValue/timeVaryingMappedFixedValueFvPatchFields.C
-$(derivedFvPatchFields)/timeVaryingMassFlowRateInletVelocity/timeVaryingMassFlowRateInletVelocityFvPatchVectorField.C
+$(derivedFvPatchFields)/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C
 $(derivedFvPatchFields)/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchFields.C
 $(derivedFvPatchFields)/totalPressure/totalPressureFvPatchScalarField.C
 $(derivedFvPatchFields)/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/massFlowRateInletVelocity/massFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C
similarity index 75%
rename from src/finiteVolume/fields/fvPatchFields/derived/massFlowRateInletVelocity/massFlowRateInletVelocityFvPatchVectorField.C
rename to src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C
index 393cac55d0b994fe33c4e4a25e0112dffe79159d..c3427b4bded0a4c28ae931f79021ee374d885ddd 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/massFlowRateInletVelocity/massFlowRateInletVelocityFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.C
@@ -24,7 +24,7 @@ License
 
 \*---------------------------------------------------------------------------*/
 
-#include "massFlowRateInletVelocityFvPatchVectorField.H"
+#include "flowRateInletVelocityFvPatchVectorField.H"
 #include "volFields.H"
 #include "addToRunTimeSelectionTable.H"
 #include "fvPatchFieldMapper.H"
@@ -33,38 +33,40 @@ License
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::
-massFlowRateInletVelocityFvPatchVectorField::
-massFlowRateInletVelocityFvPatchVectorField
+flowRateInletVelocityFvPatchVectorField::
+flowRateInletVelocityFvPatchVectorField
 (
     const fvPatch& p,
     const DimensionedField<vector, volMesh>& iF
 )
 :
     fixedValueFvPatchField<vector>(p, iF),
-    massFlowRate_(0),
+    flowRate_(0),
     phiName_("phi"),
     rhoName_("rho")
 {}
 
+
 Foam::
-massFlowRateInletVelocityFvPatchVectorField::
-massFlowRateInletVelocityFvPatchVectorField
+flowRateInletVelocityFvPatchVectorField::
+flowRateInletVelocityFvPatchVectorField
 (
-    const massFlowRateInletVelocityFvPatchVectorField& ptf,
+    const flowRateInletVelocityFvPatchVectorField& ptf,
     const fvPatch& p,
     const DimensionedField<vector, volMesh>& iF,
     const fvPatchFieldMapper& mapper
 )
 :
     fixedValueFvPatchField<vector>(ptf, p, iF, mapper),
-    massFlowRate_(ptf.massFlowRate_),
+    flowRate_(ptf.flowRate_),
     phiName_(ptf.phiName_),
     rhoName_(ptf.rhoName_)
 {}
 
+
 Foam::
-massFlowRateInletVelocityFvPatchVectorField::
-massFlowRateInletVelocityFvPatchVectorField
+flowRateInletVelocityFvPatchVectorField::
+flowRateInletVelocityFvPatchVectorField
 (
     const fvPatch& p,
     const DimensionedField<vector, volMesh>& iF,
@@ -72,7 +74,7 @@ massFlowRateInletVelocityFvPatchVectorField
 )
 :
     fixedValueFvPatchField<vector>(p, iF, dict),
-    massFlowRate_(readScalar(dict.lookup("massFlowRate"))),
+    flowRate_(readScalar(dict.lookup("flowRate"))),
     phiName_("phi"),
     rhoName_("rho")
 {
@@ -87,29 +89,31 @@ massFlowRateInletVelocityFvPatchVectorField
     }
 }
 
+
 Foam::
-massFlowRateInletVelocityFvPatchVectorField::
-massFlowRateInletVelocityFvPatchVectorField
+flowRateInletVelocityFvPatchVectorField::
+flowRateInletVelocityFvPatchVectorField
 (
-    const massFlowRateInletVelocityFvPatchVectorField& ptf
+    const flowRateInletVelocityFvPatchVectorField& ptf
 )
 :
     fixedValueFvPatchField<vector>(ptf),
-    massFlowRate_(ptf.massFlowRate_),
+    flowRate_(ptf.flowRate_),
     phiName_(ptf.phiName_),
     rhoName_(ptf.rhoName_)
 {}
 
+
 Foam::
-massFlowRateInletVelocityFvPatchVectorField::
-massFlowRateInletVelocityFvPatchVectorField
+flowRateInletVelocityFvPatchVectorField::
+flowRateInletVelocityFvPatchVectorField
 (
-    const massFlowRateInletVelocityFvPatchVectorField& ptf,
+    const flowRateInletVelocityFvPatchVectorField& ptf,
     const DimensionedField<vector, volMesh>& iF
 )
 :
     fixedValueFvPatchField<vector>(ptf, iF),
-    massFlowRate_(ptf.massFlowRate_),
+    flowRate_(ptf.flowRate_),
     phiName_(ptf.phiName_),
     rhoName_(ptf.rhoName_)
 {}
@@ -117,7 +121,7 @@ massFlowRateInletVelocityFvPatchVectorField
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-void Foam::massFlowRateInletVelocityFvPatchVectorField::updateCoeffs()
+void Foam::flowRateInletVelocityFvPatchVectorField::updateCoeffs()
 {
     if (updated())
     {
@@ -125,7 +129,7 @@ void Foam::massFlowRateInletVelocityFvPatchVectorField::updateCoeffs()
     }
 
     // a simpler way of doing this would be nice
-    scalar avgU = -massFlowRate_/gSum(patch().magSf());
+    scalar avgU = -flowRate_/gSum(patch().magSf());
 
     vectorField n = patch().nf();
 
@@ -151,23 +155,23 @@ void Foam::massFlowRateInletVelocityFvPatchVectorField::updateCoeffs()
     {
         FatalErrorIn
         (
-            "massFlowRateInletVelocityFvPatchVectorField::updateCoeffs()"
+            "flowRateInletVelocityFvPatchVectorField::updateCoeffs()"
         )   << "dimensions of phi are incorrect"
             << "\n    on patch " << this->patch().name()
             << " of field " << this->dimensionedInternalField().name()
             << " in file " << this->dimensionedInternalField().objectPath()
-            << exit(FatalError);
+            << nl << exit(FatalError);
     }
 
     fixedValueFvPatchField<vector>::updateCoeffs();
 }
 
 
-void Foam::massFlowRateInletVelocityFvPatchVectorField::write(Ostream& os) const
+void Foam::flowRateInletVelocityFvPatchVectorField::write(Ostream& os) const
 {
     fvPatchField<vector>::write(os);
 
-    os.writeKeyword("massFlowRate") << massFlowRate_
+    os.writeKeyword("flowRate") << flowRate_
         << token::END_STATEMENT << nl;
 
     if (phiName_ != "phi")
@@ -191,7 +195,7 @@ namespace Foam
    makePatchTypeField
    (
        fvPatchVectorField,
-       massFlowRateInletVelocityFvPatchVectorField
+       flowRateInletVelocityFvPatchVectorField
    );
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/massFlowRateInletVelocity/massFlowRateInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.H
similarity index 70%
rename from src/finiteVolume/fields/fvPatchFields/derived/massFlowRateInletVelocity/massFlowRateInletVelocityFvPatchVectorField.H
rename to src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.H
index 8171e24db6a204f4e3c65dd717066f9f0ad9b507..b0c8de9b2f018be80b6060eb2d87eba3214d2060 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/massFlowRateInletVelocity/massFlowRateInletVelocityFvPatchVectorField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/flowRateInletVelocity/flowRateInletVelocityFvPatchVectorField.H
@@ -23,19 +23,22 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::massFlowRateInletVelocityFvPatchVectorField
+    Foam::flowRateInletVelocityFvPatchVectorField
 
 Description
-    Describes an massflow normal vector boundary condition by its magnitude
-    as an integral over its area.
-    The current density is used to correct the velocity.
+    Describes an volumetric/mass flow normal vector boundary condition by its
+    magnitude as an integral over its area.
+    The basis of the patch (volumetric or mass) is determined by the
+    dimensions of the flux, phi.
+    The current density is used to correct the velocity when applying the mass
+    basis.
 
     Example of the boundary condition specification:
     @verbatim
     inlet
     {
-        type            massFlowRateInletVelocity;
-        massFlowRate    0.2;             // Mass flow rate [kg/s]
+        type            flowRateInletVelocity;
+        flowRate        0.2;        // Volumetric/mass flow rate [m3/s or kg/s]
         value           uniform (0 0 0); // placeholder
     }
     @endverbatim
@@ -46,12 +49,12 @@ Note
     - Strange behaviour with potentialFoam since the U equation is not solved
 
 SourceFiles
-    massFlowRateInletVelocityFvPatchVectorField.C
+    flowRateInletVelocityFvPatchVectorField.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef massFlowRateInletVelocityFvPatchVectorField_H
-#define massFlowRateInletVelocityFvPatchVectorField_H
+#ifndef flowRateInletVelocityFvPatchVectorField_H
+#define flowRateInletVelocityFvPatchVectorField_H
 
 #include "fixedValueFvPatchFields.H"
 
@@ -60,17 +63,17 @@ SourceFiles
 namespace Foam
 {
 /*---------------------------------------------------------------------------*\
-               Class massFlowRateInletVelocityFvPatch Declaration
+               Class flowRateInletVelocityFvPatch Declaration
 \*---------------------------------------------------------------------------*/
 
-class massFlowRateInletVelocityFvPatchVectorField
+class flowRateInletVelocityFvPatchVectorField
 :
     public fixedValueFvPatchVectorField
 {
     // Private data
 
-        //- Inlet integral mass flow rate
-        scalar massFlowRate_;
+        //- Inlet integral flow rate
+        scalar flowRate_;
 
         //- Name of the flux transporting the field
         word phiName_;
@@ -82,20 +85,20 @@ class massFlowRateInletVelocityFvPatchVectorField
 public:
 
    //- Runtime type information
-   TypeName("massFlowRateInletVelocity");
+   TypeName("flowRateInletVelocity");
 
 
    // Constructors
 
         //- Construct from patch and internal field
-        massFlowRateInletVelocityFvPatchVectorField
+        flowRateInletVelocityFvPatchVectorField
         (
             const fvPatch&,
             const DimensionedField<vector, volMesh>&
         );
 
         //- Construct from patch, internal field and dictionary
-        massFlowRateInletVelocityFvPatchVectorField
+        flowRateInletVelocityFvPatchVectorField
         (
             const fvPatch&,
             const DimensionedField<vector, volMesh>&,
@@ -103,20 +106,20 @@ public:
         );
 
         //- Construct by mapping given
-        //  massFlowRateInletVelocityFvPatchVectorField
+        //  flowRateInletVelocityFvPatchVectorField
         //  onto a new patch
-        massFlowRateInletVelocityFvPatchVectorField
+        flowRateInletVelocityFvPatchVectorField
         (
-            const massFlowRateInletVelocityFvPatchVectorField&,
+            const flowRateInletVelocityFvPatchVectorField&,
             const fvPatch&,
             const DimensionedField<vector, volMesh>&,
             const fvPatchFieldMapper&
         );
 
         //- Construct as copy
-        massFlowRateInletVelocityFvPatchVectorField
+        flowRateInletVelocityFvPatchVectorField
         (
-            const massFlowRateInletVelocityFvPatchVectorField&
+            const flowRateInletVelocityFvPatchVectorField&
         );
 
         //- Construct and return a clone
@@ -124,14 +127,14 @@ public:
         {
             return tmp<fvPatchVectorField>
             (
-                new massFlowRateInletVelocityFvPatchVectorField(*this)
+                new flowRateInletVelocityFvPatchVectorField(*this)
             );
         }
 
         //- Construct as copy setting internal field reference
-        massFlowRateInletVelocityFvPatchVectorField
+        flowRateInletVelocityFvPatchVectorField
         (
-            const massFlowRateInletVelocityFvPatchVectorField&,
+            const flowRateInletVelocityFvPatchVectorField&,
             const DimensionedField<vector, volMesh>&
         );
 
@@ -143,7 +146,7 @@ public:
         {
             return tmp<fvPatchVectorField>
             (
-                new massFlowRateInletVelocityFvPatchVectorField(*this, iF)
+                new flowRateInletVelocityFvPatchVectorField(*this, iF)
             );
         }
 
@@ -152,16 +155,16 @@ public:
 
         // Access
 
-            //- Return the mass flux
-            scalar massFlowRate() const
+            //- Return the flux
+            scalar flowRate() const
             {
-                return massFlowRate_;
+                return flowRate_;
             }
 
-            //- Return reference to the mass flux to allow adjustment
-            scalar& massFlowRate()
+            //- Return reference to the flux to allow adjustment
+            scalar& flowRate()
             {
-                return massFlowRate_;
+                return flowRate_;
             }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C
new file mode 100644
index 0000000000000000000000000000000000000000..f492d86c7769ee68c63572ab43e2de15b62d7ec7
--- /dev/null
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.C
@@ -0,0 +1,141 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2006-2008 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+\*---------------------------------------------------------------------------*/
+
+#include "timeVaryingFlowRateInletVelocityFvPatchVectorField.H"
+#include "volFields.H"
+#include "addToRunTimeSelectionTable.H"
+#include "fvPatchFieldMapper.H"
+#include "surfaceFields.H"
+#include "Time.H"
+#include "IFstream.H"
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::
+timeVaryingFlowRateInletVelocityFvPatchVectorField::
+timeVaryingFlowRateInletVelocityFvPatchVectorField
+(
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF
+)
+:
+    flowRateInletVelocityFvPatchVectorField(p, iF),
+    timeSeries_()
+{}
+
+
+Foam::
+timeVaryingFlowRateInletVelocityFvPatchVectorField::
+timeVaryingFlowRateInletVelocityFvPatchVectorField
+(
+    const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf,
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF,
+    const fvPatchFieldMapper& mapper
+)
+:
+    flowRateInletVelocityFvPatchVectorField(ptf, p, iF, mapper),
+    timeSeries_(ptf.timeSeries_)
+{}
+
+
+Foam::
+timeVaryingFlowRateInletVelocityFvPatchVectorField::
+timeVaryingFlowRateInletVelocityFvPatchVectorField
+(
+    const fvPatch& p,
+    const DimensionedField<vector, volMesh>& iF,
+    const dictionary& dict
+)
+:
+    flowRateInletVelocityFvPatchVectorField(p, iF, dict),
+    timeSeries_(this->db(), dict)
+{}
+
+
+Foam::
+timeVaryingFlowRateInletVelocityFvPatchVectorField::
+timeVaryingFlowRateInletVelocityFvPatchVectorField
+(
+    const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf
+)
+:
+    flowRateInletVelocityFvPatchVectorField(ptf),
+    timeSeries_(ptf.timeSeries_)
+{}
+
+
+Foam::
+timeVaryingFlowRateInletVelocityFvPatchVectorField::
+timeVaryingFlowRateInletVelocityFvPatchVectorField
+(
+    const timeVaryingFlowRateInletVelocityFvPatchVectorField& ptf,
+    const DimensionedField<vector, volMesh>& iF
+)
+:
+    flowRateInletVelocityFvPatchVectorField(ptf, iF),
+    timeSeries_(ptf.timeSeries_)
+{}
+
+
+// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
+
+void Foam::
+timeVaryingFlowRateInletVelocityFvPatchVectorField::
+updateCoeffs()
+{
+    if (updated())
+    {
+        return;
+    }
+
+    flowRate() = timeSeries_(this->db().time().timeOutputValue());
+    flowRateInletVelocityFvPatchVectorField::updateCoeffs();
+}
+
+
+void Foam::
+timeVaryingFlowRateInletVelocityFvPatchVectorField::
+write(Ostream& os) const
+{
+    flowRateInletVelocityFvPatchVectorField::write(os);
+    timeSeries_.write(os);
+}
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+namespace Foam
+{
+   makePatchTypeField
+   (
+       fvPatchVectorField,
+       timeVaryingFlowRateInletVelocityFvPatchVectorField
+   );
+}
+
+
+// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMassFlowRateInletVelocity/timeVaryingMassFlowRateInletVelocityFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.H
similarity index 65%
rename from src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMassFlowRateInletVelocity/timeVaryingMassFlowRateInletVelocityFvPatchVectorField.H
rename to src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.H
index f400c9ce4a33e888384c0d68598c9f8581083c13..cbacacb4c545b205afe14eeffc82412729b7ad38 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMassFlowRateInletVelocity/timeVaryingMassFlowRateInletVelocityFvPatchVectorField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingFlowRateInletVelocity/timeVaryingFlowRateInletVelocityFvPatchVectorField.H
@@ -23,20 +23,20 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::timeVaryingMassFlowRateInletVelocityFvPatchVectorField
+    Foam::timeVaryingFlowRateInletVelocityFvPatchVectorField
 
 Description
-    A time-varying form of a massflow normal vector boundary condition.
+    A time-varying form of a flow normal vector boundary condition.
 
     Example of the boundary condition specification:
     @verbatim
     inlet
     {
-        type            timeVaryingMassFlowRateInletVelocity;
-        massFlowRate    0.2;              // Massflow rate [kg/s]
+        type            timeVaryingFlowRateInletVelocity;
+        flowRate        0.2;         // Volumetric/mass flow rate [m3/s or kg/s]
         value           uniform (0 0 0);  // placeholder
-        timeDataFile   "time-series";
-        timeBounding    repeat;           // (error|warn|clamp|repeat)
+        fileName        "time-series";
+        boundAction     repeat;           // (error|warn|clamp|repeat)
     }
     @endverbatim
 
@@ -46,58 +46,54 @@ Note
     - strange behaviour with potentialFoam since the U equation is not solved
 
 See Also
-    Foam::timeSeries and Foam::massFlowRateInletVelocityFvPatchVectorField
+    Foam::timeSeries and Foam::flowRateInletVelocityFvPatchVectorField
 
 SourceFiles
-    timeVaryingMassFlowRateInletVelocityFvPatchVectorField.C
+    timeVaryingFlowRateInletVelocityFvPatchVectorField.C
 
 \*---------------------------------------------------------------------------*/
 
-#ifndef timeVaryingMassFlowRateInletVelocityFvPatchVectorField_H
-#define timeVaryingMassFlowRateInletVelocityFvPatchVectorField_H
+#ifndef timeVaryingFlowRateInletVelocityFvPatchVectorField_H
+#define timeVaryingFlowRateInletVelocityFvPatchVectorField_H
+
+#include "flowRateInletVelocityFvPatchVectorField.H"
+#include "interpolationTable.H"
 
-#include "massFlowRateInletVelocityFvPatchVectorField.H"
-#include "timeSeries.H"
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 /*---------------------------------------------------------------------------*\
-        Class timeVaryingMassFlowRateInletVelocityFvPatch Declaration
+        Class timeVaryingFlowRateInletVelocityFvPatch Declaration
 \*---------------------------------------------------------------------------*/
 
-class timeVaryingMassFlowRateInletVelocityFvPatchVectorField
+class timeVaryingFlowRateInletVelocityFvPatchVectorField
 :
-    public massFlowRateInletVelocityFvPatchVectorField
+    public flowRateInletVelocityFvPatchVectorField
 {
     // Private data
 
-        //- file containing time/massFlowRate
-        fileName timeDataFile_;
-
         //- the time series being used, including the bounding treatment
-        timeSeries<scalar> timeSeries_;
+        interpolationTable<scalar> timeSeries_;
 
-        //- interpolate the value at the current time
-        scalar currentValue();
 
 public:
 
     //- Runtime type information
-    TypeName("timeVaryingMassFlowRateInletVelocity");
+    TypeName("timeVaryingFlowRateInletVelocity");
 
 
     // Constructors
 
         //- Construct from patch and internal field
-        timeVaryingMassFlowRateInletVelocityFvPatchVectorField
+        timeVaryingFlowRateInletVelocityFvPatchVectorField
         (
             const fvPatch&,
             const DimensionedField<vector, volMesh>&
         );
 
         //- Construct from patch, internal field and dictionary
-        timeVaryingMassFlowRateInletVelocityFvPatchVectorField
+        timeVaryingFlowRateInletVelocityFvPatchVectorField
         (
             const fvPatch&,
             const DimensionedField<vector, volMesh>&,
@@ -105,18 +101,18 @@ public:
         );
 
         //- Construct by mapping given patch field onto a new patch
-        timeVaryingMassFlowRateInletVelocityFvPatchVectorField
+        timeVaryingFlowRateInletVelocityFvPatchVectorField
         (
-            const timeVaryingMassFlowRateInletVelocityFvPatchVectorField&,
+            const timeVaryingFlowRateInletVelocityFvPatchVectorField&,
             const fvPatch&,
             const DimensionedField<vector, volMesh>&,
             const fvPatchFieldMapper&
         );
 
         //- Construct as copy
-        timeVaryingMassFlowRateInletVelocityFvPatchVectorField
+        timeVaryingFlowRateInletVelocityFvPatchVectorField
         (
-            const timeVaryingMassFlowRateInletVelocityFvPatchVectorField&
+            const timeVaryingFlowRateInletVelocityFvPatchVectorField&
         );
 
         //- Construct and return a clone
@@ -124,14 +120,14 @@ public:
         {
             return tmp<fvPatchVectorField>
             (
-                new timeVaryingMassFlowRateInletVelocityFvPatchVectorField(*this)
+                new timeVaryingFlowRateInletVelocityFvPatchVectorField(*this)
             );
         }
 
         //- Construct as copy setting internal field reference
-        timeVaryingMassFlowRateInletVelocityFvPatchVectorField
+        timeVaryingFlowRateInletVelocityFvPatchVectorField
         (
-            const timeVaryingMassFlowRateInletVelocityFvPatchVectorField&,
+            const timeVaryingFlowRateInletVelocityFvPatchVectorField&,
             const DimensionedField<vector, volMesh>&
         );
 
@@ -143,34 +139,34 @@ public:
         {
             return tmp<fvPatchVectorField>
             (
-                new timeVaryingMassFlowRateInletVelocityFvPatchVectorField(*this, iF)
+                new timeVaryingFlowRateInletVelocityFvPatchVectorField
+                (
+                    *this,
+                    iF
+                )
             );
         }
 
+
     // Member functions
 
         // Access
 
-            //- Return the out-of-bounds treatment as a word
-            word timeBounding() const
-            {
-                return timeSeries_.bounding();
-            }
-
             //- Return the time series used
-            const timeSeries<scalar>& timeData() const
+            const interpolationTable<scalar>& timeSeries() const
             {
                 return timeSeries_;
             }
 
+
         // Evaluation functions
 
             //- Update the coefficients associated with the patch field
             virtual void updateCoeffs();
 
+
         //- Write
         virtual void write(Ostream&) const;
-
 };
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMassFlowRateInletVelocity/timeVaryingMassFlowRateInletVelocityFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMassFlowRateInletVelocity/timeVaryingMassFlowRateInletVelocityFvPatchVectorField.C
deleted file mode 100644
index 9526998a5710126e905f8b47fc8e0bd3618ddc6a..0000000000000000000000000000000000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingMassFlowRateInletVelocity/timeVaryingMassFlowRateInletVelocityFvPatchVectorField.C
+++ /dev/null
@@ -1,200 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | Copyright (C) 2006-2008 OpenCFD Ltd.
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-License
-    This file is part of OpenFOAM.
-
-    OpenFOAM is free software; you can redistribute it and/or modify it
-    under the terms of the GNU General Public License as published by the
-    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
-    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
-
-\*---------------------------------------------------------------------------*/
-
-#include "timeVaryingMassFlowRateInletVelocityFvPatchVectorField.H"
-#include "volFields.H"
-#include "addToRunTimeSelectionTable.H"
-#include "fvPatchFieldMapper.H"
-#include "surfaceFields.H"
-#include "Time.H"
-#include "IFstream.H"
-
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
-
-Foam::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField
-(
-    const fvPatch& p,
-    const DimensionedField<vector, volMesh>& iF
-)
-:
-    massFlowRateInletVelocityFvPatchVectorField(p, iF)
-{}
-
-
-Foam::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField
-(
-    const timeVaryingMassFlowRateInletVelocityFvPatchVectorField& ptf,
-    const fvPatch& p,
-    const DimensionedField<vector, volMesh>& iF,
-    const fvPatchFieldMapper& mapper
-)
-:
-    massFlowRateInletVelocityFvPatchVectorField(ptf, p, iF, mapper),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
-{}
-
-
-Foam::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField
-(
-    const fvPatch& p,
-    const DimensionedField<vector, volMesh>& iF,
-    const dictionary& dict
-)
-:
-    massFlowRateInletVelocityFvPatchVectorField(p, iF, dict),
-    timeDataFile_(dict.lookup("timeDataFile")),
-    timeSeries_(word(dict.lookup("timeBounding")))
-{}
-
-
-Foam::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField
-(
-    const timeVaryingMassFlowRateInletVelocityFvPatchVectorField& ptf
-)
-:
-    massFlowRateInletVelocityFvPatchVectorField(ptf),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
-{}
-
-
-Foam::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField
-(
-    const timeVaryingMassFlowRateInletVelocityFvPatchVectorField& ptf,
-    const DimensionedField<vector, volMesh>& iF
-)
-:
-    massFlowRateInletVelocityFvPatchVectorField(ptf, iF),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
-{}
-
-
-// * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
-
-Foam::scalar
-Foam::timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-currentValue()
-{
-    if (timeSeries_.size() == 0)
-    {
-        fileName fName(timeDataFile_);
-        fName.expand();
-
-        if (fName.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingMassFlowRateInletVelocity"
-                "::currentValue()"
-            )   << "timeDataFile not specified for Patch "
-                << this->patch().name()
-                << exit(FatalError);
-        }
-        else
-        {
-            // relative path
-            if (fName[0] != '/')
-            {
-                fName = this->db().path()/fName;
-            }
-
-            // just in case we change the interface to timeSeries
-            word boundType = timeBounding();
-
-            IFstream(fName)() >> timeSeries_;
-            timeSeries_.bounding(boundType);
-
-            // be a bit paranoid and check that the list is okay
-            timeSeries_.check();
-        }
-
-        if (timeSeries_.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingMassFlowRateInletVelocity"
-                "::currentValue()"
-            )   << "empty time series for Patch "
-                << this->patch().name()
-                << exit(FatalError);
-        }
-    }
-
-    return timeSeries_(this->db().time().timeOutputValue());
-}
-
-
-void Foam::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-updateCoeffs()
-{
-    if (updated())
-    {
-        return;
-    }
-
-    massFlowRate() = currentValue();
-    massFlowRateInletVelocityFvPatchVectorField::updateCoeffs();
-}
-
-
-void Foam::
-timeVaryingMassFlowRateInletVelocityFvPatchVectorField::
-write(Ostream& os) const
-{
-    massFlowRateInletVelocityFvPatchVectorField::write(os);
-    os.writeKeyword("timeDataFile")
-        << timeDataFile_ << token::END_STATEMENT << nl;
-    os.writeKeyword("timeBounding")
-        << timeBounding() << token::END_STATEMENT << nl;
-}
-
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-namespace Foam
-{
-   makePatchTypeField
-   (
-       fvPatchVectorField,
-       timeVaryingMassFlowRateInletVelocityFvPatchVectorField
-   );
-}
-
-
-// ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C
index 646ee136d54b8993d81e1b133c11d317225c4469..dc09d678b2257f5b5151228a9614e62833ffbe2a 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.C
@@ -38,7 +38,8 @@ timeVaryingUniformFixedValueFvPatchField
     const DimensionedField<Type, volMesh>& iF
 )
 :
-    fixedValueFvPatchField<Type>(p, iF)
+    fixedValueFvPatchField<Type>(p, iF),
+    timeSeries_()
 {}
 
 
@@ -52,8 +53,7 @@ timeVaryingUniformFixedValueFvPatchField
 )
 :
     fixedValueFvPatchField<Type>(p, iF),
-    timeDataFile_(dict.lookup("timeDataFile")),
-    timeSeries_(word(dict.lookup("timeBounding")))
+    timeSeries_(this->db(), dict)
 {
    if (dict.found("value"))
    {
@@ -77,8 +77,7 @@ timeVaryingUniformFixedValueFvPatchField
 )
 :
     fixedValueFvPatchField<Type>(ptf, p, iF, mapper),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
+    timeSeries_(ptf.timeSeries_)
 {}
 
 
@@ -90,8 +89,7 @@ timeVaryingUniformFixedValueFvPatchField
 )
 :
     fixedValueFvPatchField<Type>(ptf),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
+    timeSeries_(ptf.timeSeries_)
 {}
 
 
@@ -104,66 +102,12 @@ timeVaryingUniformFixedValueFvPatchField
 )
 :
     fixedValueFvPatchField<Type>(ptf, iF),
-    timeDataFile_(ptf.timeDataFile_),
-    timeSeries_(ptf.timeBounding())
+    timeSeries_(ptf.timeSeries_)
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-template<class Type>
-Type Foam::timeVaryingUniformFixedValueFvPatchField<Type>::
-currentValue()
-{
-    if (timeSeries_.size() == 0)
-    {
-        fileName fName(timeDataFile_);
-        fName.expand();
-
-        if (fName.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingUniformFixedValueFvPatchField"
-                "::currentValue()"
-            )   << "timeDataFile not specified for Patch "
-                << this->patch().name()
-                << exit(FatalError);
-        }
-        else
-        {
-            // relative path
-            if (fName[0] != '/')
-            {
-                fName = this->db().path()/fName;
-            }
-
-            // just in case we change the interface to timeSeries
-            word boundType = timeBounding();
-
-            IFstream(fName)() >> timeSeries_;
-            timeSeries_.bounding(boundType);
-
-            // be a bit paranoid and check that the list is okay
-            timeSeries_.check();
-        }
-
-        if (timeSeries_.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingUniformFixedValueFvPatchField"
-                "::currentValue()"
-            )   << "empty time series for Patch "
-                << this->patch().name()
-                << exit(FatalError);
-        }
-    }
-
-    return timeSeries_(this->db().time().timeOutputValue());
-}
-
-
 template<class Type>
 void Foam::timeVaryingUniformFixedValueFvPatchField<Type>::updateCoeffs()
 {
@@ -172,7 +116,10 @@ void Foam::timeVaryingUniformFixedValueFvPatchField<Type>::updateCoeffs()
         return;
     }
 
-    fvPatchField<Type>::operator==(currentValue());
+    fvPatchField<Type>::operator==
+    (
+        timeSeries_(this->db().time().timeOutputValue())
+    );
     fixedValueFvPatchField<Type>::updateCoeffs();
 }
 
@@ -184,10 +131,7 @@ void Foam::timeVaryingUniformFixedValueFvPatchField<Type>::write
 ) const
 {
     fvPatchField<Type>::write(os);
-    os.writeKeyword("timeDataFile")
-        << timeDataFile_ << token::END_STATEMENT << nl;
-    os.writeKeyword("timeBounding")
-        << timeBounding() << token::END_STATEMENT << nl;
+    timeSeries_.write(os);
     this->writeEntry("value", os);
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.H b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.H
index 36f4b02e48c62f648ca80dd58ada622a62765866..bd073c24b1ce638b8c4d8307f4ccba9609bb3a07 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformFixedValue/timeVaryingUniformFixedValueFvPatchField.H
@@ -33,8 +33,8 @@ Description
     inlet
     {
         type            timeVaryingUniformFixedValue;
-        timeDataFile   "time-series";
-        timeBounding    clamp;           // (error|warn|clamp|repeat)
+        fileName        "time-series";
+        boundAction      clamp;           // (error|warn|clamp|repeat)
     }
     @endverbatim
 
@@ -54,7 +54,7 @@ SourceFiles
 #define timeVaryingUniformFixedValueFvPatchField_H
 
 #include "fixedValueFvPatchField.H"
-#include "timeSeries.H"
+#include "interpolationTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -72,14 +72,8 @@ class timeVaryingUniformFixedValueFvPatchField
 {
     // Private data
 
-        //- File containing time/uniformFixedValue
-        fileName timeDataFile_;
-
         //- The time series being used, including the bounding treatment
-        timeSeries<Type> timeSeries_;
-
-        //- Interpolate the value at the current time
-        Type currentValue();
+        interpolationTable<Type> timeSeries_;
 
 
 public:
@@ -153,14 +147,8 @@ public:
 
         // Access
 
-            //- Return the out-of-bounds treatment as a word
-            word timeBounding() const
-            {
-                return timeSeries_.bounding();
-            }
-
             //- Return the time series used
-            const timeSeries<Type>& timeData() const
+            const interpolationTable<Type>& timeSeries() const
             {
                 return timeSeries_;
             }
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C
index c7407adf982252a4539352bd1ea83ec0965ab8ad..711fccdbc629b4ccdfa26f552bbd938e6e571286 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.C
@@ -46,8 +46,8 @@ timeVaryingUniformTotalPressureFvPatchScalarField
     rhoName_("undefined"),
     psiName_("undefined"),
     gamma_(0.0),
-    p0_(0.0)
-
+    p0_(0.0),
+    totalPressureTimeSeries_()
 {}
 
 
@@ -66,8 +66,7 @@ timeVaryingUniformTotalPressureFvPatchScalarField
     psiName_(dict.lookup("psi")),
     gamma_(readScalar(dict.lookup("gamma"))),
     p0_(readScalar(dict.lookup("p0"))),
-    totalPressureDataFileName_(dict.lookup("totalPressureDataFileName")),
-    totalPressureTimeSeries_(word(dict.lookup("timeBounding")))
+    totalPressureTimeSeries_(this->db(), dict)
 {
     if (dict.found("value"))
     {
@@ -99,8 +98,7 @@ timeVaryingUniformTotalPressureFvPatchScalarField
     psiName_(ptf.psiName_),
     gamma_(ptf.gamma_),
     p0_(ptf.p0_),
-    totalPressureDataFileName_(ptf.totalPressureDataFileName_),
-    totalPressureTimeSeries_(ptf.timeBounding())
+    totalPressureTimeSeries_(ptf.totalPressureTimeSeries_)
 {}
 
 
@@ -117,8 +115,7 @@ timeVaryingUniformTotalPressureFvPatchScalarField
     psiName_(tppsf.psiName_),
     gamma_(tppsf.gamma_),
     p0_(tppsf.p0_),
-    totalPressureDataFileName_(tppsf.totalPressureDataFileName_),
-    totalPressureTimeSeries_(tppsf.timeBounding())
+    totalPressureTimeSeries_(tppsf.totalPressureTimeSeries_)
 {}
 
 
@@ -136,64 +133,12 @@ timeVaryingUniformTotalPressureFvPatchScalarField
     psiName_(tppsf.psiName_),
     gamma_(tppsf.gamma_),
     p0_(tppsf.p0_),
-    totalPressureDataFileName_(tppsf.totalPressureDataFileName_),
-    totalPressureTimeSeries_(tppsf.timeBounding())
+    totalPressureTimeSeries_(tppsf.totalPressureTimeSeries_)
 {}
 
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-Foam::scalar Foam::timeVaryingUniformTotalPressureFvPatchScalarField::
-currentValue()
-{
-    if (totalPressureTimeSeries_.size() == 0)
-    {
-        fileName fName(totalPressureDataFileName_);
-        fName.expand();
-
-        if (fName.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingUniformFixedValueFvPatchField::currentValue()"
-            )   << "timeDataFile not specified for Patch "
-                << patch().name()
-                << exit(FatalError);
-        }
-        else
-        {
-            // relative path
-            if (fName[0] != '/')
-            {
-                fName = db().path()/fName;
-            }
-
-            // just in case we change the interface to timeSeries
-            word boundType = timeBounding();
-
-            IFstream(fName)() >> totalPressureTimeSeries_;
-            totalPressureTimeSeries_.bounding(boundType);
-
-            // be a bit paranoid and check that the list is okay
-            totalPressureTimeSeries_.check();
-        }
-
-        if (totalPressureTimeSeries_.size() == 0)
-        {
-            FatalErrorIn
-            (
-                "timeVaryingUniformFixedValueFvPatchField"
-                "::currentValue()"
-            )   << "empty time series for Patch "
-                << this->patch().name()
-                << exit(FatalError);
-        }
-    }
-
-    return totalPressureTimeSeries_(this->db().time().timeOutputValue());
-}
-
-
 void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::updateCoeffs
 (
     const vectorField& Up
@@ -204,7 +149,7 @@ void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::updateCoeffs
         return;
     }
 
-    p0_ = currentValue();
+    p0_ = totalPressureTimeSeries_(this->db().time().timeOutputValue());
 
     const fvsPatchField<scalar>& phip =
         patch().lookupPatchField<surfaceScalarField, scalar>(phiName_);
@@ -279,10 +224,7 @@ void Foam::timeVaryingUniformTotalPressureFvPatchScalarField::write(Ostream& os)
     os.writeKeyword("psi") << psiName_ << token::END_STATEMENT << nl;
     os.writeKeyword("gamma") << gamma_ << token::END_STATEMENT << nl;
     os.writeKeyword("p0") << p0_ << token::END_STATEMENT << endl;
-    os.writeKeyword("totalPressureDataFileName")
-        << totalPressureDataFileName_ << token::END_STATEMENT << nl;
-    os.writeKeyword("timeBounding")
-        << timeBounding() << token::END_STATEMENT << nl;
+    totalPressureTimeSeries_.write(os);
     writeEntry("value", os);
 }
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.H b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.H
index 48d4b9996126f67ba44008c9ea4222fa6cca5260..4bfead28d1cbd105ca4cbf6753f8a463e8147be7 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/timeVaryingUniformTotalPressure/timeVaryingUniformTotalPressureFvPatchScalarField.H
@@ -38,7 +38,7 @@ SourceFiles
 #define timeVaryingUniformTotalPressureFvPatchScalarField_H
 
 #include "fixedValueFvPatchFields.H"
-#include "timeSeries.H"
+#include "interpolationTable.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -74,11 +74,8 @@ class timeVaryingUniformTotalPressureFvPatchScalarField
         //- Total pressure
         scalar p0_;
 
-        fileName totalPressureDataFileName_;
-        timeSeries<scalar> totalPressureTimeSeries_;
-
-        //- Interpolate the value at the current time
-        scalar currentValue();
+        //- Table of time vs total pressure
+        interpolationTable<scalar> totalPressureTimeSeries_;
 
 
 public:
@@ -189,14 +186,8 @@ public:
                 return p0_;
             }
 
-            //- Return the out-of-bounds treatment as a word
-            word timeBounding() const
-            {
-                return totalPressureTimeSeries_.bounding();
-            }
-
             //- Return the time series used
-            const timeSeries<scalar>& totalPressureTimeSeries() const
+            const interpolationTable<scalar>& totalPressureTimeSeries() const
             {
                 return totalPressureTimeSeries_;
             }
diff --git a/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C b/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C
index 97dfc106f62e4e85711626cf3f692566e3b5a1c5..54e7985d0d8e65d7f2496a425f36efbc6f92fd61 100644
--- a/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C
+++ b/src/finiteVolume/finiteVolume/gradSchemes/leastSquaresGrad/leastSquaresVectors.C
@@ -134,7 +134,7 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
         const unallocLabelList& faceCells = p.patch().faceCells();
 
         // Build the d-vectors
-        vectorField pd = 
+        vectorField pd =
             mesh.Sf().boundaryField()[patchi]
            /(
                mesh.magSf().boundaryField()[patchi]
@@ -198,7 +198,7 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
         const unallocLabelList& faceCells = p.faceCells();
 
         // Build the d-vectors
-        vectorField pd = 
+        vectorField pd =
             mesh.Sf().boundaryField()[patchi]
            /(
                mesh.magSf().boundaryField()[patchi]
@@ -239,6 +239,7 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
 
     // For 3D meshes check the determinant of the dd tensor and switch to
     // Gauss if it is less than 3
+    /* Currently the det(dd[celli]) criterion is incorrect: dd is weighted by Sf
     if (mesh.nGeometricD() == 3)
     {
         label nBadCells = 0;
@@ -279,7 +280,7 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
 
                         if (mesh.boundary()[patchi].size())
                         {
-                            label patchFacei = 
+                            label patchFacei =
                                 facei - mesh.boundaryMesh()[patchi].start();
 
                             if (mesh.boundary()[patchi].coupled())
@@ -294,14 +295,14 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
                                     0.2
                                 );
 
-                                lsP.boundaryField()[patchi][patchFacei] = 
+                                lsP.boundaryField()[patchi][patchFacei] =
                                     (1 - wf)
                                    *Sf.boundaryField()[patchi][patchFacei]
                                    /V[celli];
                             }
                             else
                             {
-                                lsP.boundaryField()[patchi][patchFacei] = 
+                                lsP.boundaryField()[patchi][patchFacei] =
                                     Sf.boundaryField()[patchi][patchFacei]
                                    /V[celli];
                             }
@@ -318,7 +319,7 @@ void Foam::leastSquaresVectors::makeLeastSquaresVectors() const
                 << endl;
         }
     }
-
+    */
 
     if (debug)
     {
diff --git a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
index 5055e5502fd41ab9e5601c37e3e095b12b1fe4a6..dff0859c538020a96e52ccdc488f875fdd98deb2 100644
--- a/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
+++ b/src/lagrangian/intermediate/clouds/Templates/KinematicCloud/KinematicCloud.H
@@ -27,6 +27,7 @@ Class
 
 Description
     Templated base class for kinematic cloud
+
     - Kinematic only
       - Dispersion model
       - Drag model
diff --git a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
index e25318d9c1b399752239e4d808288f38af7dd18f..2063f9e673a436b9fdfa41416bc1d7e8d12e195d 100644
--- a/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
+++ b/src/lagrangian/intermediate/parcels/Templates/KinematicParcel/KinematicParcel.H
@@ -27,7 +27,9 @@ Class
 
 Description
     Kinematic parcel class with one/two-way coupling with the continuous
-    phase. Sub-models include:
+    phase.
+
+    Sub-models include:
     - drag
     - break-up
     - wall interactions
diff --git a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H
index be42e0c0dd26b05516ffd5bc144aab8d81687403..98c017adcd05446aa31c24ab0a0988da7f2b3440 100644
--- a/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H
+++ b/src/lagrangian/intermediate/submodels/Kinematic/InjectionModel/ConeInjection/ConeInjection.H
@@ -27,6 +27,7 @@ Class
 
 Description
     Cone injection
+
     - User specifies
       - time of start of injection
       - injector position
diff --git a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C
index 88b6a8813bb284416ef282f0b4197c90e7a8a446..ea7d52771c2e08b511e7474b1ab43abaf4e38ae8 100644
--- a/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C
+++ b/src/lagrangian/molecularDynamics/molecule/molecule/molecule.C
@@ -54,7 +54,7 @@ bool molecule::move(molecule::trackData& td)
                 U_ += 0.5*deltaT*A_;
             }
 
-            while (td.keepParticle && !td.switchProcessor && tEnd > (SMALL*SMALL))
+            while (td.keepParticle && !td.switchProcessor && tEnd > ROOTVSMALL)
             {
                 // set the lagrangian time-step
                 scalar dt = min(dtMax, tEnd);
diff --git a/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H b/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H
index 09e1030cdb5f45843c79a2ebfec07b34a1864707..445e19da0b69c1370f19c3866a553fffd330a3fa 100644
--- a/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H
+++ b/src/meshTools/edgeFaceCirculator/edgeFaceCirculator.H
@@ -26,15 +26,15 @@ Class
     Foam::edgeFaceCirculator
 
 Description
-    Walks from starting face around edge. Implicit
-    description of edge:
+    Walks from starting face around edge.
+
+    Implicit description of edge:
     - face
     - index in face. edge is always between f[index] and f[index+1]
     - direction (cell to walk into)
 
-    Use as:
-
-        1) in-place:
+    -# Use in-place: \n
+        @code
             edgeFaceCirculator circ(..);
             // Optionally rotate to beginning: circ.setCanonical();
 
@@ -45,9 +45,10 @@ Description
                 ++circ;
             }
             while (circ != circ.end());
+        @endcode
 
-        2) like STL iterator:
-
+    -# Use like STL iterator: \n
+        @code
             edgeFaceCirculator circ(..);
             for
             (
@@ -58,6 +59,7 @@ Description
             {
                 Info<< "face:" << iter.face() << endl;
             }
+        @endcode
 
 
 SourceFiles
diff --git a/src/turbulenceModels/LES/compressible/LESModel/LESModel.H b/src/turbulenceModels/LES/compressible/LESModel/LESModel.H
index 905b7df7e3f67dc4aa9f179dbf1e1425f164031e..ecef2d8f7716a9e6ea5baf43f5b6c5f591240329 100644
--- a/src/turbulenceModels/LES/compressible/LESModel/LESModel.H
+++ b/src/turbulenceModels/LES/compressible/LESModel/LESModel.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Namespace
-    Foam::compressible
+    Foam::compressible::LESModels
 
 Description
     Namespace for compressible LES models.
diff --git a/src/turbulenceModels/LES/incompressible/DeardorffDiffStress/DeardorffDiffStress.H b/src/turbulenceModels/LES/incompressible/DeardorffDiffStress/DeardorffDiffStress.H
index 2a1d5e480141357007bc730c8f5701d152ae7ad0..57576bf5e57e280af8f8023a3f6112417f301098 100644
--- a/src/turbulenceModels/LES/incompressible/DeardorffDiffStress/DeardorffDiffStress.H
+++ b/src/turbulenceModels/LES/incompressible/DeardorffDiffStress/DeardorffDiffStress.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::DeardorffDiffStress
+    Foam::incompressible::LESModels::DeardorffDiffStress
 
 Description
     Differential SGS Stress Equation Model for incompressible flows
diff --git a/src/turbulenceModels/LES/incompressible/GenEddyVisc/GenEddyVisc.H b/src/turbulenceModels/LES/incompressible/GenEddyVisc/GenEddyVisc.H
index f465c2d413fa1b0096a00948ac9ea8f5a4388dc2..388606f284a8f0dc068ff9801ad95597b79ff1f3 100644
--- a/src/turbulenceModels/LES/incompressible/GenEddyVisc/GenEddyVisc.H
+++ b/src/turbulenceModels/LES/incompressible/GenEddyVisc/GenEddyVisc.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::GenEddyVisc
+    Foam::incompressible::LESModels::GenEddyVisc
 
 Description
     General base class for all incompressible models that can be implemented
diff --git a/src/turbulenceModels/LES/incompressible/GenSGSStress/GenSGSStress.H b/src/turbulenceModels/LES/incompressible/GenSGSStress/GenSGSStress.H
index 93305ea411228173f50e28101ce9f27ae99f7785..eb6cc7e9065b0ab437d580637568838d4cb50269 100644
--- a/src/turbulenceModels/LES/incompressible/GenSGSStress/GenSGSStress.H
+++ b/src/turbulenceModels/LES/incompressible/GenSGSStress/GenSGSStress.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::GenSGSStress
+    Foam::incompressible::LESModels::GenSGSStress
 
 Description
     General base class for all incompressible models that directly
diff --git a/src/turbulenceModels/LES/incompressible/LESModel/LESModel.H b/src/turbulenceModels/LES/incompressible/LESModel/LESModel.H
index 302efc5cf169d7d3a2205a28b0a8dd6c26ce7a2b..e1374ed2864557fb5bb89cd29fd107d3e471c1d9 100644
--- a/src/turbulenceModels/LES/incompressible/LESModel/LESModel.H
+++ b/src/turbulenceModels/LES/incompressible/LESModel/LESModel.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Namespace
-    Foam::incompressible
+    Foam::incompressible::LESModels
 
 Description
     Namespace for incompressible LES models.
diff --git a/src/turbulenceModels/LES/incompressible/LRRDiffStress/LRRDiffStress.H b/src/turbulenceModels/LES/incompressible/LRRDiffStress/LRRDiffStress.H
index 4d10fd99f6d10696da21c16f95f4cff158bd8b8b..f58b6e224be01a91cedeb5dd6167bee296168ced 100644
--- a/src/turbulenceModels/LES/incompressible/LRRDiffStress/LRRDiffStress.H
+++ b/src/turbulenceModels/LES/incompressible/LRRDiffStress/LRRDiffStress.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::LRRDiffStress
+    Foam::incompressible::LESModels::LRRDiffStress
 
 Description
     Differential SGS Stress Equation Model for incompressible flows.
diff --git a/src/turbulenceModels/LES/incompressible/Smagorinsky/Smagorinsky.H b/src/turbulenceModels/LES/incompressible/Smagorinsky/Smagorinsky.H
index 3a5f09eeaaf1d37222730ff091dbf4131eec624e..f86578934e7a7fda63efe644062c51229c29676d 100644
--- a/src/turbulenceModels/LES/incompressible/Smagorinsky/Smagorinsky.H
+++ b/src/turbulenceModels/LES/incompressible/Smagorinsky/Smagorinsky.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::Smagorinsky
+    Foam::incompressible::LESModels::Smagorinsky
 
 Description
     The Isochoric Smagorinsky Model for incompressible flows.
diff --git a/src/turbulenceModels/LES/incompressible/Smagorinsky2/Smagorinsky2.H b/src/turbulenceModels/LES/incompressible/Smagorinsky2/Smagorinsky2.H
index 886a5be4cdbafc091e7d859d05deed3dd2e62aab..7c780da1e1a1fda398e7f0c084fda71666368100 100644
--- a/src/turbulenceModels/LES/incompressible/Smagorinsky2/Smagorinsky2.H
+++ b/src/turbulenceModels/LES/incompressible/Smagorinsky2/Smagorinsky2.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::Smagorinsky2
+    Foam::incompressible::LESModels::Smagorinsky2
 
 Description
     The Isochoric Smagorinsky Model for incompressible flows
diff --git a/src/turbulenceModels/LES/incompressible/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/LES/incompressible/SpalartAllmaras/SpalartAllmaras.H
index a6a9d12ca631765795e315a6d92a551d93e8e381..523da4611c665213e53fb11d44d8781f07919055 100644
--- a/src/turbulenceModels/LES/incompressible/SpalartAllmaras/SpalartAllmaras.H
+++ b/src/turbulenceModels/LES/incompressible/SpalartAllmaras/SpalartAllmaras.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::SpalartAllmaras
+    Foam::incompressible::LESModels::SpalartAllmaras
 
 Description
     SpalartAllmaras for incompressible flows
diff --git a/src/turbulenceModels/LES/incompressible/dynMixedSmagorinsky/dynMixedSmagorinsky.H b/src/turbulenceModels/LES/incompressible/dynMixedSmagorinsky/dynMixedSmagorinsky.H
index ced250056fe8214bfeb2b01b729180857cc920f6..223487b7d0239a9b541f0e8c251ee6e4a9f9f502 100644
--- a/src/turbulenceModels/LES/incompressible/dynMixedSmagorinsky/dynMixedSmagorinsky.H
+++ b/src/turbulenceModels/LES/incompressible/dynMixedSmagorinsky/dynMixedSmagorinsky.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::dynMixedSmagorinsky
+    Foam::incompressible::LESModels::dynMixedSmagorinsky
 
 Description
     The Mixed Isochoric Smagorinsky Model for incompressible flows.
diff --git a/src/turbulenceModels/LES/incompressible/dynOneEqEddy/dynOneEqEddy.H b/src/turbulenceModels/LES/incompressible/dynOneEqEddy/dynOneEqEddy.H
index 24484a23c5ebfa852120330b279a9fdb42b40499..b680174e69f6a14d4e0e6d345caf338761deb716 100644
--- a/src/turbulenceModels/LES/incompressible/dynOneEqEddy/dynOneEqEddy.H
+++ b/src/turbulenceModels/LES/incompressible/dynOneEqEddy/dynOneEqEddy.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::dynOneEqEddy
+    Foam::incompressible::LESModels::dynOneEqEddy
 
 Description
     One Equation Eddy Viscosity Model for incompressible flows.
diff --git a/src/turbulenceModels/LES/incompressible/dynSmagorinsky/dynSmagorinsky.H b/src/turbulenceModels/LES/incompressible/dynSmagorinsky/dynSmagorinsky.H
index 601381e80d40c8bf2cef546977aa5d82770f3dba..d155d45a581455c74f225654c99688e848f0a02b 100644
--- a/src/turbulenceModels/LES/incompressible/dynSmagorinsky/dynSmagorinsky.H
+++ b/src/turbulenceModels/LES/incompressible/dynSmagorinsky/dynSmagorinsky.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::dynSmagorinsky
+    Foam::incompressible::LESModels::dynSmagorinsky
 
 Description
     The Isochoric dynamic Smagorinsky Model for incompressible flows.
@@ -56,7 +56,7 @@ Description
         m = delta^2*(4*||F(D)||^2 - F(||D||^2))
         L = dev(F(U*U) - F(U)*F(U))
         M = delta^2*(F(||D||*dev(D)) - 4*||F(D)||*F(dev(D)))
-    @verbatim
+    @endverbatim
 
 SourceFiles
     dynSmagorinsky.C
diff --git a/src/turbulenceModels/LES/incompressible/laminar/laminar.H b/src/turbulenceModels/LES/incompressible/laminar/laminar.H
index 86c2ba342a1dd256bcd0a7660f0af3358d4cfca6..648e0b8229185547eca155dd742ef310e40ce100 100644
--- a/src/turbulenceModels/LES/incompressible/laminar/laminar.H
+++ b/src/turbulenceModels/LES/incompressible/laminar/laminar.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::laminar
+    Foam::incompressible::LESModels::laminar
 
 Description
     LES model for laminar incompressible flow.
diff --git a/src/turbulenceModels/LES/incompressible/locDynOneEqEddy/locDynOneEqEddy.H b/src/turbulenceModels/LES/incompressible/locDynOneEqEddy/locDynOneEqEddy.H
index f698747d16030a348ee74e24ba5b4d4ae3a1a9c8..960b6f185e4019d64f08766d88525351ee2fc7eb 100644
--- a/src/turbulenceModels/LES/incompressible/locDynOneEqEddy/locDynOneEqEddy.H
+++ b/src/turbulenceModels/LES/incompressible/locDynOneEqEddy/locDynOneEqEddy.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::locDynOneEqEddy
+    Foam::incompressible::LESModels::locDynOneEqEddy
 
 Description
     Localised Dynamic One Equation Eddy Viscosity Model for incompressible
diff --git a/src/turbulenceModels/LES/incompressible/mixedSmagorinsky/mixedSmagorinsky.H b/src/turbulenceModels/LES/incompressible/mixedSmagorinsky/mixedSmagorinsky.H
index 9a18dcb00a39380c33d7c2eabd145ea658ac0c88..7fa3f0c9ecc81d585959fb89807c9fd7443bd66b 100644
--- a/src/turbulenceModels/LES/incompressible/mixedSmagorinsky/mixedSmagorinsky.H
+++ b/src/turbulenceModels/LES/incompressible/mixedSmagorinsky/mixedSmagorinsky.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::mixedSmagorinsky
+    Foam::incompressible::LESModels::mixedSmagorinsky
 
 Description
     The mixed Isochoric Smagorinsky Model for incompressible flows.
diff --git a/src/turbulenceModels/LES/incompressible/oneEqEddy/oneEqEddy.H b/src/turbulenceModels/LES/incompressible/oneEqEddy/oneEqEddy.H
index 1e3802b72388ae98eebad7e95109582c56f1fd7d..632530b2056d632729aba907bbfb51a68f4d69f2 100644
--- a/src/turbulenceModels/LES/incompressible/oneEqEddy/oneEqEddy.H
+++ b/src/turbulenceModels/LES/incompressible/oneEqEddy/oneEqEddy.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::oneEqEddy
+    Foam::incompressible::LESModels::oneEqEddy
 
 Description
     One Equation Eddy Viscosity Model for incompressible flows
diff --git a/src/turbulenceModels/LES/incompressible/scaleSimilarity/scaleSimilarity.H b/src/turbulenceModels/LES/incompressible/scaleSimilarity/scaleSimilarity.H
index 6e8b151872ca8355c103143532257870c5a7132c..079d38a4a2fdd327f39d4046ef144fd0c30a7cd5 100644
--- a/src/turbulenceModels/LES/incompressible/scaleSimilarity/scaleSimilarity.H
+++ b/src/turbulenceModels/LES/incompressible/scaleSimilarity/scaleSimilarity.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::scaleSimilarity
+    Foam::incompressible::LESModels::scaleSimilarity
 
 Description
     General base class for all scale similarity models
diff --git a/src/turbulenceModels/LES/incompressible/spectEddyVisc/spectEddyVisc.H b/src/turbulenceModels/LES/incompressible/spectEddyVisc/spectEddyVisc.H
index 1053cb272c3f7d5664d1bd1089b8c8eb6591418b..dd6b4e68b02c246168c4edbd20c765b5dbb2acf8 100644
--- a/src/turbulenceModels/LES/incompressible/spectEddyVisc/spectEddyVisc.H
+++ b/src/turbulenceModels/LES/incompressible/spectEddyVisc/spectEddyVisc.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::spectEddyVisc
+    Foam::incompressible::LESModels::spectEddyVisc
 
 Description
     The Isochoric spectral Eddy Viscosity Model for incompressible flows.
diff --git a/src/turbulenceModels/LES/incompressible/vanDriestDelta/vanDriestDelta.H b/src/turbulenceModels/LES/incompressible/vanDriestDelta/vanDriestDelta.H
index f488b823fb4118a0e7498cf0c1a88bbf9ef5d628..6903765f6b367fca1a4d346330875057e8df7e98 100644
--- a/src/turbulenceModels/LES/incompressible/vanDriestDelta/vanDriestDelta.H
+++ b/src/turbulenceModels/LES/incompressible/vanDriestDelta/vanDriestDelta.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::vanDriestDelta
+    Foam::incompressible::LESModels::vanDriestDelta
 
 Description
     Simple cube-root of cell volume delta used in incompressible LES models.
diff --git a/src/turbulenceModels/LES/incompressible/wallFunc/nuSgsWallFunction/nuSgsWallFunctionFvPatchScalarField.H b/src/turbulenceModels/LES/incompressible/wallFunc/nuSgsWallFunction/nuSgsWallFunctionFvPatchScalarField.H
index 2008b7bfc17aed22beb27290cf6a877f0d01d2c3..687e30a6a6f36781eab3ae033ec1f7925aa3be76 100644
--- a/src/turbulenceModels/LES/incompressible/wallFunc/nuSgsWallFunction/nuSgsWallFunctionFvPatchScalarField.H
+++ b/src/turbulenceModels/LES/incompressible/wallFunc/nuSgsWallFunction/nuSgsWallFunctionFvPatchScalarField.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::LES::nuSgsWallFunctionFvPatchScalarField
+    Foam::incompressible::LESModels::nuSgsWallFunctionFvPatchScalarField
 
 Description
     wall function boundary condition for incompressible flows
diff --git a/src/turbulenceModels/RAS/compressible/LRR/LRR.H b/src/turbulenceModels/RAS/compressible/LRR/LRR.H
index b479b7ee3c02ae08f30ff5d25de954864bace06a..553b11be96e5b338f4b42fe59aabc03e40f4c5ca 100644
--- a/src/turbulenceModels/RAS/compressible/LRR/LRR.H
+++ b/src/turbulenceModels/RAS/compressible/LRR/LRR.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::LRR
+    Foam::compressible::RASModels::LRR
 
 Description
     Launder, Reece and Rodi Reynolds-stress turbulence model for
diff --git a/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H b/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H
index dbe974a1d1b7979ba3a851c5dc5839e4ec27b269..2be69e96b5be6497406a8f07d8d1ed1a3964f327 100644
--- a/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H
+++ b/src/turbulenceModels/RAS/compressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::LaunderGibsonRSTM
+    Foam::compressible::RASModels::LaunderGibsonRSTM
 
 Description
     Launder-Gibson Reynolds stress turbulence model for compressible flows.
diff --git a/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H b/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H
index 7c7372e07d36dd66c270eccab4ea71f35a0a58c2..731e0cdb02a3fc2c658c7ee1a29db9e56de98b69 100644
--- a/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H
+++ b/src/turbulenceModels/RAS/compressible/LaunderSharmaKE/LaunderSharmaKE.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::LaunderSharmaKE
+    Foam::compressible::RASModels::LaunderSharmaKE
 
 Description
     Launder and Sharma low-Reynolds k-epsilon turbulence model for
diff --git a/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H b/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H
index 2e98a4359e87f5c9f4c599818afac2c9ffacac5d..47feaebe18b19c66781f0bdace398c40386be4ad 100644
--- a/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H
+++ b/src/turbulenceModels/RAS/compressible/RASModel/RASModel.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Namespace
-    Foam::compressible::RAS
+    Foam::compressible::RASModels
 
 Description
     Namespace for compressible RAS turbulence models.
diff --git a/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H b/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H
index a1d2148dd7f63a8928e6dbf3d88b0ac4bb3bc29e..5063615ccbe5a19fe87b52f8dda97713d8fc03be 100644
--- a/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H
+++ b/src/turbulenceModels/RAS/compressible/RNGkEpsilon/RNGkEpsilon.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::RNGkEpsilon
+    Foam::compressible::RASModels::RNGkEpsilon
 
 Description
     Renormalisation group k-epsilon turbulence model for compressible flows.
diff --git a/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H
index 9b6880eff13c5ad76a0f6d2e597faae179cecb5c..da3aa6fc2e51115bc9621aca8049299cddd26f5d 100644
--- a/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H
+++ b/src/turbulenceModels/RAS/compressible/SpalartAllmaras/SpalartAllmaras.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::SpalartAllmaras
+    Foam::compressible::RASModels::SpalartAllmaras
 
 Description
     Spalart-Allmaras one-eqn mixing-length model for compressible
diff --git a/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H b/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H
index b6b2b1dab7b5ac82f78ee28128cb9711a1e3968d..d42bc73a6666767d0bb9ebc67765b7fe8cd21315 100644
--- a/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H
+++ b/src/turbulenceModels/RAS/compressible/kEpsilon/kEpsilon.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::kEpsilon
+    Foam::compressible::RASModels::kEpsilon
 
 Description
     Standard k-epsilon turbulence model for compressible flows
diff --git a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H
index fe65b3fad265566f4bce47a41f659e602a61b13a..4836d02611c1fc0853d1bf3a086803ecf227a0b8 100644
--- a/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H
+++ b/src/turbulenceModels/RAS/compressible/kOmegaSST/kOmegaSST.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::kOmegaSST
+    Foam::compressible::RASModels::kOmegaSST
 
 Description
     Implementation of the k-omega-SST turbulence model for compressible flows.
diff --git a/src/turbulenceModels/RAS/compressible/laminar/laminar.H b/src/turbulenceModels/RAS/compressible/laminar/laminar.H
index dd965be3d8efd7ccfedcb6170368088119adf7f0..dda7f731179ae1603b68f89da8ca5225558f36fb 100644
--- a/src/turbulenceModels/RAS/compressible/laminar/laminar.H
+++ b/src/turbulenceModels/RAS/compressible/laminar/laminar.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::laminar
+    Foam::compressible::RASModels::laminar
 
 Description
     Dummy turbulence model for laminar compressible flow.
diff --git a/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H b/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H
index 676c7becc2e58e689467c7cbff94272b173d08ad..0eb770f0832b6ca8462551cab38f0d69a901aedc 100644
--- a/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H
+++ b/src/turbulenceModels/RAS/compressible/realizableKE/realizableKE.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::realizableKE
+    Foam::compressible::RASModels::realizableKE
 
 Description
     Realizable k-epsilon turbulence model for compressible flows.
diff --git a/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.H
index 759bd5c4fd6ef3d04ce31ac85a506c59bbbc8344..7c8e5617934d4bc886069c5cf4fa7a6425fe3ecb 100644
--- a/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.H
+++ b/src/turbulenceModels/RAS/compressible/wallFunctions/mutWallFunctions/mutStandardRoughWallFunction/mutStandardRoughWallFunctionFvPatchScalarField.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::compressible::RAS::mutStandardRoughWallFunctionFvPatchScalarField
+    Foam::compressible::RASModels::mutStandardRoughWallFunctionFvPatchScalarField
 
 Description
     Wall function boundary condition for rough walls
diff --git a/src/turbulenceModels/RAS/incompressible/LRR/LRR.H b/src/turbulenceModels/RAS/incompressible/LRR/LRR.H
index 28a032bdc0fcd016b41e68aac57a82ae2289306a..45b3df83e86952b448edea7110e171c086f5e5f7 100644
--- a/src/turbulenceModels/RAS/incompressible/LRR/LRR.H
+++ b/src/turbulenceModels/RAS/incompressible/LRR/LRR.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::LRR
+    Foam::incompressible::RASModels::LRR
 
 Description
     Launder, Reece and Rodi Reynolds-stress turbulence model for
diff --git a/src/turbulenceModels/RAS/incompressible/LamBremhorstKE/LamBremhorstKE.H b/src/turbulenceModels/RAS/incompressible/LamBremhorstKE/LamBremhorstKE.H
index 8a9fe369e69c18b7e516fc85a8dc95fdb5f1eefe..f0e8a0ba591eb69444cf1ae356104e586bcff0a8 100644
--- a/src/turbulenceModels/RAS/incompressible/LamBremhorstKE/LamBremhorstKE.H
+++ b/src/turbulenceModels/RAS/incompressible/LamBremhorstKE/LamBremhorstKE.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::LamBremhorstKE
+    Foam::incompressible::RASModels::LamBremhorstKE
 
 Description
     Lam and Bremhorst low-Reynolds number k-epsilon turbulence model
diff --git a/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H b/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H
index 96a2daec835d52f234381b3c99ae56609f5ee1be..73169b389ffec861cf6f35234e69a877d539b11c 100644
--- a/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H
+++ b/src/turbulenceModels/RAS/incompressible/LaunderGibsonRSTM/LaunderGibsonRSTM.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::LaunderGibsonRSTM
+    Foam::incompressible::RASModels::LaunderGibsonRSTM
 
 Description
     Launder-Gibson Reynolds stress turbulence model for incompressible flows.
diff --git a/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H b/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H
index 14412157690ee05e5e3a0aad1c2de0bee27f05c2..a16a1d8f3a2e561a3c56f9a311b9b15fa2fee079 100644
--- a/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H
+++ b/src/turbulenceModels/RAS/incompressible/LaunderSharmaKE/LaunderSharmaKE.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::LaunderSharmaKE
+    Foam::incompressible::RASModels::LaunderSharmaKE
 
 Description
     Launder and Sharma low-Reynolds k-epsilon turbulence model for
diff --git a/src/turbulenceModels/RAS/incompressible/LienCubicKE/LienCubicKE.H b/src/turbulenceModels/RAS/incompressible/LienCubicKE/LienCubicKE.H
index 1a9bbde798f42b910914d42603639f1329952b33..005c8257751e255d007557c6210cd3b5abf3ee8f 100644
--- a/src/turbulenceModels/RAS/incompressible/LienCubicKE/LienCubicKE.H
+++ b/src/turbulenceModels/RAS/incompressible/LienCubicKE/LienCubicKE.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::LienCubicKE
+    Foam::incompressible::RASModels::LienCubicKE
 
 Description
     Lien cubic non-linear k-epsilon turbulence model for incompressible flows.
diff --git a/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowRe.H b/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowRe.H
index e86e555ece19ba25ed9f85133f1dfce4b781b342..3fac316cdf1b1af73498f59c5b5166436c6328e8 100644
--- a/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowRe.H
+++ b/src/turbulenceModels/RAS/incompressible/LienCubicKELowRe/LienCubicKELowRe.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::LienCubicKELowRe
+    Foam::incompressible::RASModels::LienCubicKELowRe
 
 Description
     Lien cubic non-linear low-Reynolds k-epsilon turbulence models for
diff --git a/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowRe.H b/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowRe.H
index c7bbf5e51a336791c986595ce1391ec27f783183..59efb82c9820719d99d153b86034d7362f30982a 100644
--- a/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowRe.H
+++ b/src/turbulenceModels/RAS/incompressible/LienLeschzinerLowRe/LienLeschzinerLowRe.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::LienLeschzinerLowRe
+    Foam::incompressible::RASModels::LienLeschzinerLowRe
 
 Description
     Lien and Leschziner low-Reynolds k-epsilon turbulence model for
diff --git a/src/turbulenceModels/RAS/incompressible/NonlinearKEShih/NonlinearKEShih.H b/src/turbulenceModels/RAS/incompressible/NonlinearKEShih/NonlinearKEShih.H
index 7f25e712efb96663a58b741efdf456a0336b867b..7f8f6ebc8ff50819d1c04ac86bb742853690c907 100644
--- a/src/turbulenceModels/RAS/incompressible/NonlinearKEShih/NonlinearKEShih.H
+++ b/src/turbulenceModels/RAS/incompressible/NonlinearKEShih/NonlinearKEShih.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::NonlinearKEShih
+    Foam::incompressible::RASModels::NonlinearKEShih
 
 Description
     Shih's quadratic non-linear k-epsilon turbulence model for
diff --git a/src/turbulenceModels/RAS/incompressible/QZeta/QZeta.H b/src/turbulenceModels/RAS/incompressible/QZeta/QZeta.H
index dcfd584c61a081daff1888ab8bd4dea0be13c10d..8c675a8fc1fae2182be7eae4bfb2a8e80a85a911 100644
--- a/src/turbulenceModels/RAS/incompressible/QZeta/QZeta.H
+++ b/src/turbulenceModels/RAS/incompressible/QZeta/QZeta.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::QZeta
+    Foam::incompressible::RASModels::QZeta
 
 Description
     Gibson and Dafa'Alla's q-zeta two-equation low-Re turbulence model
diff --git a/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H b/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H
index 8ba1fedcbc706d812ba04e6dda4baa53a0b7bb25..345565fbab458a5437791e18680d3f17f8f32685 100644
--- a/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H
+++ b/src/turbulenceModels/RAS/incompressible/RASModel/RASModel.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Namespace
-    Foam::incompressible
+    Foam::incompressible::RASModels
 
 Description
     Namespace for incompressible RAS turbulence models.
diff --git a/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H b/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H
index f028ea8041ec61be5bdcb2712606bdcc40f789c4..960d0a344d740f510cfb03f00f6f9428e34f4b81 100644
--- a/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H
+++ b/src/turbulenceModels/RAS/incompressible/RNGkEpsilon/RNGkEpsilon.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::RNGkEpsilon
+    Foam::incompressible::RASModels::RNGkEpsilon
 
 Description
     Renormalisation group k-epsilon turbulence model for incompressible flows.
diff --git a/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H b/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H
index 5266de28eb0f5279525c04a54607c26b832184b8..39cb3977e0c0dcd2d2db539c1d9293c067675b6e 100644
--- a/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H
+++ b/src/turbulenceModels/RAS/incompressible/SpalartAllmaras/SpalartAllmaras.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::SpalartAllmaras
+    Foam::incompressible::RASModels::SpalartAllmaras
 
 Description
     Spalart-Allmaras 1-eqn mixing-length model for incompressible external
diff --git a/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H b/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H
index 4fe07f367951c48726d87353951663139807f734..5ac0d5a4614f037a02c374aa93fca67e41492c08 100644
--- a/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H
+++ b/src/turbulenceModels/RAS/incompressible/kEpsilon/kEpsilon.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::kEpsilon
+    Foam::incompressible::RASModels::kEpsilon
 
 Description
     Standard k-epsilon turbulence model for incompressible flows.
diff --git a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H
index f106b028005949618bc73c68d4dd2597c93539a5..ef44b6a9ac0812cc1198bb4d4200389c5e4ad8aa 100644
--- a/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H
+++ b/src/turbulenceModels/RAS/incompressible/kOmegaSST/kOmegaSST.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::kOmegaSST
+    Foam::incompressible::RASModels::kOmegaSST
 
 Description
     Implementation of the k-omega-SST turbulence model for incompressible
diff --git a/src/turbulenceModels/RAS/incompressible/laminar/laminar.H b/src/turbulenceModels/RAS/incompressible/laminar/laminar.H
index eaa183746baf3ddc71b27d9501db2662d09a681d..7f07045aa3e5a0443cb391a2bbe4dc289986d020 100644
--- a/src/turbulenceModels/RAS/incompressible/laminar/laminar.H
+++ b/src/turbulenceModels/RAS/incompressible/laminar/laminar.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::laminar
+    Foam::incompressible::RASModels::laminar
 
 Description
     Dummy turbulence model for laminar incompressible flow.
diff --git a/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H b/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H
index 43ca0b5894a9290c0797273a57a00a2fc8349ef1..d3587b2f51b04c80eeb64214f55b48b24a5002ea 100644
--- a/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H
+++ b/src/turbulenceModels/RAS/incompressible/realizableKE/realizableKE.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::realizableKE
+    Foam::incompressible::RASModels::realizableKE
 
 Description
     Realizable k-epsilon turbulence model for incompressible flows.
diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.H b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.H
index f82d7aeb0fb62474667235ca0644ceb3fc31ebfb..df3007b10f14a6d4fe7932c755b82861cae7687f 100644
--- a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.H
+++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardRoughWallFunction/nutStandardRoughWallFunctionFvPatchScalarField.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::nutStandardRoughWallFunctionFvPatchScalarField
+    Foam::incompressible::RASModels::nutStandardRoughWallFunctionFvPatchScalarField
 
 Description
     Wall function boundary condition for rough walls
diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.H b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.H
index 5180a3ec451dfa14b180f943105db1642c811ede..f4042e7f5f03a02de54d1184ae940a47c4065a18 100644
--- a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.H
+++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutStandardWallFunction/nutStandardWallFunctionFvPatchScalarField.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::nutStandardWallFunctionFvPatchScalarField
+    Foam::incompressible::RASModels::nutStandardWallFunctionFvPatchScalarField
 
 Description
     Wall function boundary condition for walls
diff --git a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H
index 4e7f108dd1c2f415ae070a66df8739ee895de2a9..218599b59c0ea2fb757b182bde2df7aa75ee03e1 100644
--- a/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H
+++ b/src/turbulenceModels/RAS/incompressible/wallFunctions/nutWallFunctions/nutWallFunction/nutWallFunctionFvPatchScalarField.H
@@ -23,7 +23,7 @@ License
     Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
 
 Class
-    Foam::incompressible::RAS::nutWallFunctionFvPatchScalarField
+    Foam::incompressible::RASModels::nutWallFunctionFvPatchScalarField
 
 Description
     Wall function boundary condition for walls
diff --git a/tutorials/compressibleLesInterFoam/depthCharge2D/0/U b/tutorials/compressibleLesInterFoam/depthCharge2D/0/U
index d4e55f293fd71683f978850f5bae9ecfeef00987..367007d0c0ac04629d7b7b24464e19c55ce25d22 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge2D/0/U
+++ b/tutorials/compressibleLesInterFoam/depthCharge2D/0/U
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volVectorField;
-    location    "0";
     object      U;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -32,5 +31,4 @@ boundaryField
     }
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge2D/constant/LESProperties b/tutorials/compressibleLesInterFoam/depthCharge2D/constant/LESProperties
index 976ee308c25dc16f84f694ca13eb7314411347fd..130d0947d9c4402eba4cf9ee019bdd81b319ad1b 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge2D/constant/LESProperties
+++ b/tutorials/compressibleLesInterFoam/depthCharge2D/constant/LESProperties
@@ -1,25 +1,17 @@
-/*---------------------------------------------------------------------------*\
+/*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.0                                   |
-|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
 FoamFile
 {
-    version         2.0;
-    format          ascii;
-
-    root            "";
-    case            "";
-    instance        "";
-    local           "";
-
-    class           dictionary;
-    object          LESProperties;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      LESProperties;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 LESModel        laminar;
@@ -178,5 +170,4 @@ wallFunctionCoeffs
     E                9;
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge2D/constant/environmentalProperties b/tutorials/compressibleLesInterFoam/depthCharge2D/constant/environmentalProperties
index a5d1b7134ede4d0cd40f0bc4c5056b331a50d133..c65ebf7f14b660d9bd5a86dbe868a819b4cf9fc7 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge2D/constant/environmentalProperties
+++ b/tutorials/compressibleLesInterFoam/depthCharge2D/constant/environmentalProperties
@@ -1,25 +1,17 @@
-/*---------------------------------------------------------------------------*\
+/*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.0                                   |
-|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
 FoamFile
 {
-    version         2.0;
-    format          ascii;
-
-    root            "";
-    case            "";
-    instance        "";
-    local           "";
-
-    class           dictionary;
-    object          environmentalProperties;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      environmentalProperties;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 g               g [0 1 -2 0 0 0 0] (0 -9.81 0);
diff --git a/tutorials/compressibleLesInterFoam/depthCharge2D/constant/polyMesh/boundary b/tutorials/compressibleLesInterFoam/depthCharge2D/constant/polyMesh/boundary
index 90bbf5d79b50ae43747203dd39262cb56d491186..e1e2119e32dbd8fc336ad4c3ce9de73c190ff41f 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge2D/constant/polyMesh/boundary
+++ b/tutorials/compressibleLesInterFoam/depthCharge2D/constant/polyMesh/boundary
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
-    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge3D/0/U b/tutorials/compressibleLesInterFoam/depthCharge3D/0/U
index bb8f8101224aee8c1f2d323e6bb393f920085c96..6840d0129ffba7002bf7ffcee4028d548ac2d02f 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge3D/0/U
+++ b/tutorials/compressibleLesInterFoam/depthCharge3D/0/U
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volVectorField;
-    location    "0";
     object      U;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -28,5 +27,4 @@ boundaryField
     }
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge3D/0/alpha1.org b/tutorials/compressibleLesInterFoam/depthCharge3D/0/alpha1.org
index 15554e525d262524476d6e110c2269e27fac3ee2..cf3931804ff3b104621bada30b87c449748808b2 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge3D/0/alpha1.org
+++ b/tutorials/compressibleLesInterFoam/depthCharge3D/0/alpha1.org
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    location    "0";
     object      alpha1.org;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -27,5 +26,4 @@ boundaryField
     }
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge3D/0/pd.org b/tutorials/compressibleLesInterFoam/depthCharge3D/0/pd.org
index e41468f9c765712c0df3e1e9c345a9f9c1a2d7bc..57bee34347bb93e83fc679b2360f4bc9aa216195 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge3D/0/pd.org
+++ b/tutorials/compressibleLesInterFoam/depthCharge3D/0/pd.org
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    location    "0";
     object      pd.org;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -27,5 +26,4 @@ boundaryField
     }
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge3D/constant/LESProperties b/tutorials/compressibleLesInterFoam/depthCharge3D/constant/LESProperties
index 976ee308c25dc16f84f694ca13eb7314411347fd..130d0947d9c4402eba4cf9ee019bdd81b319ad1b 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge3D/constant/LESProperties
+++ b/tutorials/compressibleLesInterFoam/depthCharge3D/constant/LESProperties
@@ -1,25 +1,17 @@
-/*---------------------------------------------------------------------------*\
+/*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.0                                   |
-|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
 FoamFile
 {
-    version         2.0;
-    format          ascii;
-
-    root            "";
-    case            "";
-    instance        "";
-    local           "";
-
-    class           dictionary;
-    object          LESProperties;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      LESProperties;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 LESModel        laminar;
@@ -178,5 +170,4 @@ wallFunctionCoeffs
     E                9;
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge3D/constant/environmentalProperties b/tutorials/compressibleLesInterFoam/depthCharge3D/constant/environmentalProperties
index a5d1b7134ede4d0cd40f0bc4c5056b331a50d133..c65ebf7f14b660d9bd5a86dbe868a819b4cf9fc7 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge3D/constant/environmentalProperties
+++ b/tutorials/compressibleLesInterFoam/depthCharge3D/constant/environmentalProperties
@@ -1,25 +1,17 @@
-/*---------------------------------------------------------------------------*\
+/*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.0                                   |
-|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
 FoamFile
 {
-    version         2.0;
-    format          ascii;
-
-    root            "";
-    case            "";
-    instance        "";
-    local           "";
-
-    class           dictionary;
-    object          environmentalProperties;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      environmentalProperties;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 g               g [0 1 -2 0 0 0 0] (0 -9.81 0);
diff --git a/tutorials/compressibleLesInterFoam/depthCharge3D/constant/polyMesh/boundary b/tutorials/compressibleLesInterFoam/depthCharge3D/constant/polyMesh/boundary
index 8856b4ac446f79c18828d24dc3ac4848c92d0631..178b2ace003c711381d84ede00541b384556c3bd 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge3D/constant/polyMesh/boundary
+++ b/tutorials/compressibleLesInterFoam/depthCharge3D/constant/polyMesh/boundary
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
-    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/compressibleLesInterFoam/depthCharge3D/system/decomposeParDict b/tutorials/compressibleLesInterFoam/depthCharge3D/system/decomposeParDict
index f8801b351d3ef5d59e8d72fa38862051921c5794..fd4a88324169c196c7a5ff8e48a0a1fd3893b6d3 100644
--- a/tutorials/compressibleLesInterFoam/depthCharge3D/system/decomposeParDict
+++ b/tutorials/compressibleLesInterFoam/depthCharge3D/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/gnemdFoam/Allclean b/tutorials/gnemdFoam/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..827eacb6ae57fce6c071229216ccde65b3bd8f04
--- /dev/null
+++ b/tutorials/gnemdFoam/Allclean
@@ -0,0 +1,19 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cd constrictedChannel
+    rm -rf 0 > /dev/null 2>&1
+    rm Ar-Ar Ar-Ne Ne-Ne > /dev/null 2>&1
+    rm constant/idList
+
+    cleanCase
+cd ..
+
+cd nanoNozzle
+    rm -rf processor[0-9] > /dev/null 2>&1
+
+    cleanCase
+cd ..
+
diff --git a/tutorials/gnemdFoam/Allrun b/tutorials/gnemdFoam/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..640ecd9bdc14899a37fe41bf908956b6623fa5f3
--- /dev/null
+++ b/tutorials/gnemdFoam/Allrun
@@ -0,0 +1,25 @@
+#!/bin/sh
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="gnemdFoam"
+
+cd constrictedChannel
+   runApplication blockMesh
+   runApplication molConfig
+   runApplication $application
+cd ..
+
+cd nanoNozzle
+    runApplication blockMesh
+
+    runApplication decomposePar
+    hostname > system/machines
+
+    runParallel molConfig 4 system/machines
+    runParallel $application 4 system/machines
+
+    runApplication reconstructPar
+cd ..
+
diff --git a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/boundary b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/boundary
index e06cb6a7bc62252cc7fb936af8d5907962cad1e0..eaeb38f09e82e1b87d50473c0f179baa840d4791 100644
--- a/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/boundary
+++ b/tutorials/gnemdFoam/constrictedChannel/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -10,6 +10,7 @@ FoamFile
     version     2.0;
     format      ascii;
     class       polyBoundaryMesh;
+    location    "constant/polyMesh";
     object      boundary;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/gnemdFoam/constrictedChannel/system/potentialDict b/tutorials/gnemdFoam/constrictedChannel/system/potentialDict
index ce9f24b88a781107f66ffd7bf9ac29ecb08f544b..7f9346077fcf8b79c7f7fd36f1be33ff4037ae2e 100644
--- a/tutorials/gnemdFoam/constrictedChannel/system/potentialDict
+++ b/tutorials/gnemdFoam/constrictedChannel/system/potentialDict
@@ -27,7 +27,7 @@ FoamFile
 // automatically less valuable than any on the list.  For molecules of the
 // same type there is no control over which is removed.
 
-removalOrder        1 (Ar);
+removalOrder        2 (Ne Ar);
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 // Pair potentials
@@ -111,19 +111,10 @@ tether
         tetherPotential restrainedHarmonicSpring;
         restrainedHarmonicSpringCoeffs
         {
-            springConstant  0.0277;
+            springConstant  0.1;
             rR              1.2e-9;
         }
     }
-
-    Ne
-    {
-        tetherPotential harmonicSpring;
-        harmonicSpringCoeffs
-        {
-            springConstant  0.0277;
-        }
-    }
 }
 
 // ************************************************************************* //
diff --git a/tutorials/gnemdFoam/nanoNozzle/constant/polyMesh/boundary b/tutorials/gnemdFoam/nanoNozzle/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..b94dd10f195233028313de6f35c87882b3d03f0b
--- /dev/null
+++ b/tutorials/gnemdFoam/nanoNozzle/constant/polyMesh/boundary
@@ -0,0 +1,58 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+6
+(
+    sectionAEnd
+    {
+        type            patch;
+        nFaces          225;
+        startFace       48150;
+    }
+    sectionCEnd
+    {
+        type            patch;
+        nFaces          225;
+        startFace       48375;
+    }
+    front
+    {
+        type            wall;
+        nFaces          1125;
+        startFace       48600;
+    }
+    back
+    {
+        type            wall;
+        nFaces          1125;
+        startFace       49725;
+    }
+    top
+    {
+        type            wall;
+        nFaces          1125;
+        startFace       50850;
+    }
+    bottom
+    {
+        type            wall;
+        nFaces          1125;
+        startFace       51975;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/Allrun b/tutorials/interDyMFoam/Allrun
deleted file mode 100755
index efeef33893ff8ca3de3362aad388ceb94ec689fb..0000000000000000000000000000000000000000
--- a/tutorials/interDyMFoam/Allrun
+++ /dev/null
@@ -1,12 +0,0 @@
-#!/bin/sh
-# Source tutorial run functions
-. $WM_PROJECT_DIR/bin/tools/RunFunctions
-
-# Get application name from directory
-application=`basename $PWD`
-
-(cd damBreakWithObstacle && runApplication blockMesh)
-(cd damBreakWithObstacle && runApplication setSet -batch createObstacle.setSet)
-(cd damBreakWithObstacle && runApplication subsetMesh c0 -patch walls)
-(cd damBreakWithObstacle && runApplication setFields -latestTime)
-(cd damBreakWithObstacle && runApplication $application)
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/U b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/U
index f37e2e0d0f33e4884077c84e9cca1affac24fa4f..be74aea5a1aaf718ea75cf5a20eb54ccd26c383d 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/U
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma
index 2e2bf16c3cca0a5c052a99e0876c414064f647f0..e7dd5fba7368da3b79bb3cbb827b2dd005130122 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma.org b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma.org
index 2e2bf16c3cca0a5c052a99e0876c414064f647f0..e7dd5fba7368da3b79bb3cbb827b2dd005130122 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma.org
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/gamma.org
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/pd b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/pd
index f5801776cf3a904337fb7591c1581bbfa72c7a6d..bf55dd55f315cf27b92d411d5096a5a4aec43242 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/pd
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0-orig/pd
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0/U b/tutorials/interDyMFoam/damBreakWithObstacle/0/U
index e791ef363f6ab10c6e1062b8c37499062dbf8b92..92dbcc46724d7ba2b763f571d9ca3dfb0fd93ead 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0/U
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0/U
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma b/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma
index 7602a0953b91a29e678b54f16b84d237ae5dbae6..f933566bb4830a8d9a3feb50b92a98c0840a81a0 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma.org b/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma.org
index 2e2bf16c3cca0a5c052a99e0876c414064f647f0..e7dd5fba7368da3b79bb3cbb827b2dd005130122 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma.org
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0/gamma.org
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/0/pd b/tutorials/interDyMFoam/damBreakWithObstacle/0/pd
index f5801776cf3a904337fb7591c1581bbfa72c7a6d..bf55dd55f315cf27b92d411d5096a5a4aec43242 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/0/pd
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/0/pd
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/Allrun b/tutorials/interDyMFoam/damBreakWithObstacle/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..ce475808debf880fa195495d9b7d6f5fc1ff8c63
--- /dev/null
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+runApplication blockMesh
+runApplication setSet -batch createObstacle.setSet
+runApplication subsetMesh c0 -patch walls
+runApplication setFields
+runApplication interDyMFoam
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/constant/RASProperties b/tutorials/interDyMFoam/damBreakWithObstacle/constant/RASProperties
index 4955328ed8b13052769ad536057a55ba28bfa8bc..919d435ff3602345a8e7191d795a24a89434bfcc 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/constant/RASProperties
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/constant/RASProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/constant/dynamicMeshDict b/tutorials/interDyMFoam/damBreakWithObstacle/constant/dynamicMeshDict
index b7a078806a45675187086f961aec52ce92243595..56b10abaf93c5fe737903f5f97a810dd11e0f240 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/constant/dynamicMeshDict
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/constant/dynamicMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/constant/environmentalProperties b/tutorials/interDyMFoam/damBreakWithObstacle/constant/environmentalProperties
index 9c35d375b1e2e74505828be2cbf1eb51a74ea1be..40232c0c406c02d21a4ae29a31f702bbf84c6214 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/constant/environmentalProperties
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/constant/environmentalProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/blockMeshDict b/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/blockMeshDict
index b31c66979716d07e62e665e402c29a9f64111e35..09be8b82ff78d294ba284bb86ff83c3a10e33f1b 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/blockMeshDict
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/blockMeshDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/boundary b/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/boundary
index 924d99d9373a00ca40e7b97192e8911704e94737..1300f15c762cb0db7971c1aca556785ce057f860 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/boundary
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/constant/polyMesh/boundary
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/constant/transportProperties b/tutorials/interDyMFoam/damBreakWithObstacle/constant/transportProperties
index 117a1c916919c1ed2f9036e1b0ea66d5b64f804a..3460aba08f9209a1c2842221d35d8b00c3a8f2dc 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/constant/transportProperties
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/constant/transportProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/system/controlDict b/tutorials/interDyMFoam/damBreakWithObstacle/system/controlDict
index 8c9606a9099ea5ac9a56ca208a47dc1cce5fa58a..0ad41244b48a160c0e09c86d51f34ac436034100 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/system/controlDict
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/system/controlDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/system/decomposeParDict b/tutorials/interDyMFoam/damBreakWithObstacle/system/decomposeParDict
index 5e0c8ef33ce508cd648f685003cd19e7d6dbc954..b7f14f71546ee6876e32c3b8e21d538dce935530 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/system/decomposeParDict
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSchemes b/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSchemes
index 1c38514090a429a2e0338c814693e4917b601438..a03b85207dd4384e28573b1487fef828812a300f 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSchemes
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSchemes
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSolution b/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSolution
index 24625a2ad4307f773b0e3215fe26afbf2b4d743c..ecb3469be2182e87d2759857b9af6d184bc53784 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSolution
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/system/fvSolution
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/damBreakWithObstacle/system/setFieldsDict b/tutorials/interDyMFoam/damBreakWithObstacle/system/setFieldsDict
index 5702452d414d0973c9678a6ecbd60b7c640b713e..708c1cacd697d76dc1290bd72a30614d92ada9ef 100644
--- a/tutorials/interDyMFoam/damBreakWithObstacle/system/setFieldsDict
+++ b/tutorials/interDyMFoam/damBreakWithObstacle/system/setFieldsDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
diff --git a/tutorials/interDyMFoam/sloshingTank2D/0/U b/tutorials/interDyMFoam/sloshingTank2D/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..ae062bdf0d1fa6458df95c93f8ffeb9d7df188be
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/0/U
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+    walls
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/0/gamma.org b/tutorials/interDyMFoam/sloshingTank2D/0/gamma.org
new file mode 100644
index 0000000000000000000000000000000000000000..2711563003114c5f54dc987dbeca328598f590e8
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/0/gamma.org
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      gamma;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/0/pd b/tutorials/interDyMFoam/sloshingTank2D/0/pd
new file mode 100644
index 0000000000000000000000000000000000000000..cefcbb7d442aad8e22f25fbaedbfbb0e68eed4b7
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/0/pd
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      pd;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/Allclean b/tutorials/interDyMFoam/sloshingTank2D/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..2ffbd01addc2d4c2c5326f0f401c575945c12b7d
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/Allclean
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+foamCleanTutorials cases
+rm -rf 0/gamma.gz probes wallPressure pRefProbe
diff --git a/tutorials/interDyMFoam/sloshingTank2D/Allrun b/tutorials/interDyMFoam/sloshingTank2D/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..748dcf65ba56b28289c079d37d4abde3e95f3257
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
+runApplication blockMesh
+cp 0/gamma.org 0/gamma
+runApplication setFields
+runApplication interDyMFoam
diff --git a/tutorials/interDyMFoam/sloshingTank2D/constant/RASProperties b/tutorials/interDyMFoam/sloshingTank2D/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..ac1efb34c5d460ae6483a045c147312455969903
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/constant/RASProperties
@@ -0,0 +1,173 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// RASModel kEpsilon;
+RASModel laminar;
+
+turbulence      off;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+NonlinearKEShihCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76932;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+LienCubicKECoeffs
+{
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+QZetaCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaZeta        0.76923;
+    anisotropic     no;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LamBremhorstKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LienCubicKELowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LienLeschzinerLowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+    alphaR           1.22;
+}
+
+SpalartAllmarasCoeffs
+{
+    alphaNut         1.5;
+    Cb1              0.1355;
+    Cb2              0.622;
+    Cw2              0.3;
+    Cw3              2;
+    Cv1              7.1;
+    Cv2              5.0;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/constant/dynamicMeshDict b/tutorials/interDyMFoam/sloshingTank2D/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..e7a0ec06d662ae2718dffc093a0605bbf62f732f
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/constant/dynamicMeshDict
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      motionProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh solidBodyMotionFvMesh;
+
+solidBodyMotionFvMeshCoeffs
+{
+    solidBodyMotionFunction SDA;
+
+    SDACoeffs
+    {
+        // Centre of gravity
+        CofG        (0 0 0);
+
+        // Model scale ratio
+        lamda       50;
+
+        // Max roll amplitude [rad]
+        rollAmax    0.22654;
+
+        // Min roll amplitude [rad]
+        rollAmin    0.10472;
+
+        // Heave amplitude [m]
+        heaveA      3.79;
+
+        // Sway amplitude [m]
+        swayA       2.34;
+
+        // Damping Coefficient [-]
+        Q           2.00;
+    
+        // Time Period for liquid [sec]
+        Tp          13.93;
+
+        // Natural Period of Ship [sec]
+        Tpn         11.93;
+
+        // Reference time step [sec]
+        dTi         0.059;
+
+        // Incr. in Tp/unit 'dTi'[-]
+        dTp         -0.001;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/icoFoam/cavity/FoamFile b/tutorials/interDyMFoam/sloshingTank2D/constant/environmentalProperties
similarity index 61%
rename from tutorials/icoFoam/cavity/FoamFile
rename to tutorials/interDyMFoam/sloshingTank2D/constant/environmentalProperties
index b74a10e4c6eb9704b58817e1a3769d8e8c71b446..40232c0c406c02d21a4ae29a31f702bbf84c6214 100644
--- a/tutorials/icoFoam/cavity/FoamFile
+++ b/tutorials/interDyMFoam/sloshingTank2D/constant/environmentalProperties
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  1.5                                   |
+|  \\    /   O peration     | Version:  dev                                   |
 |   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -9,6 +9,11 @@ FoamFile
 {
     version     2.0;
     format      ascii;
-    class       volScalarField;
-    object      p;
+    class       dictionary;
+    object      environmentalProperties;
 }
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [0 1 -2 0 0 0 0] (0 0 -9.81);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..3c52247aa29f0cb0eeb549c39a24a6e11a8f3391
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict
@@ -0,0 +1,145 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+      // Length of tank (x-direction)
+       // Breadth of tank (y-direction)
+       // Depth of tank (z-direction)
+
+      // Depth to the top (height) of lower chamfer
+     // Height of upper chamfer
+
+ // Angle of lower chamfer to the horizontal
+ // Angle of upper chamfer to the horizontal
+
+  // Centre of gravity in y-direction
+         // Centre of gravity in z-direction
+
+       // Number of cells in the length (1 for 2D)
+      // Number of cells in the breadth
+     // Number of cells in the height of the lower champfer
+      // Number of cells in the height between the chamfers
+    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+ // Breadth to the top (height) of lower chamfer
+ // Breadth of upper chamfer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (-0.5 -15 -10.0) // Vertex bllcb = 0 
+    (-0.5 -20 -5)  // Vertex bllc = 1 
+    (-0.5 -20 10)  // Vertex bluc = 2 
+    (-0.5 -10 20) // Vertex bluct = 3 
+    (-0.5 15 -10.0) // Vertex brlcb = 4 
+    (-0.5 20 -5)  // Vertex brlc = 5 
+    (-0.5 20 10)  // Vertex bruc = 6 
+    (-0.5 10 20) // Vertex bruct = 7 
+
+    (0.5 -15 -10.0) // Vertex fllcb = 8 
+    (0.5 -20 -5)  // Vertex fllc = 9 
+    (0.5 -20 10)  // Vertex fluc = 10 
+    (0.5 -10 20) // Vertex fluct = 11 
+    (0.5 15 -10.0) // Vertex frlcb = 12 
+    (0.5 20 -5)  // Vertex frlc = 13 
+    (0.5 20 10)  // Vertex fruc = 14 
+    (0.5 10 20) // Vertex fruct = 15 
+);
+
+blocks
+(
+    // block0
+    hex (0 4 5 1 8 12 13 9)
+    (40 6 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (1 5 6 2 9 13 14 10)
+    (40 16 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (2 6 7 3 10 14 15 11)
+    (40 12 1)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        (0 4 12 8)
+        (4 5 13 12)
+        (5 6 14 13)
+        (6 7 15 14)
+        (7 3 11 15)
+        (3 2 10 11)
+        (2 1 9 10)
+        (1 0 8 9)
+    )
+
+    empty front
+    (
+        (8 12 13 9)
+        (9 13 14 10)
+        (10 14 15 11)
+    )
+
+    empty back
+    (
+        (0 1 5 4)
+        (1 2 6 5)
+        (2 3 7 6)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..ced5dc533e3e9b795683e33517d450678eeab2be
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/blockMeshDict.m4
@@ -0,0 +1,145 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; printf ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+
+define(hex2D, hex (b$1 b$2 b$3 b$4 f$1 f$2 f$3 f$4))
+define(quad2D, (b$1 b$2 f$2 f$1))
+define(frontQuad, (f$1 f$2 f$3 f$4))
+define(backQuad, (b$1 b$4 b$3 b$2))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+define(l, 1.0)      // Length of tank (x-direction)
+define(b, 40)       // Breadth of tank (y-direction)
+define(h, 30)       // Depth of tank (z-direction)
+
+define(hlc, 5)      // Depth to the top (height) of lower chamfer
+define(huc, 10)     // Height of upper chamfer
+
+define(thetalc, 45) // Angle of lower chamfer to the horizontal
+define(thetauc, 45) // Angle of upper chamfer to the horizontal
+
+define(CofGy, calc(b/2.0))  // Centre of gravity in y-direction
+define(CofGz, 10.0)         // Centre of gravity in z-direction
+
+define(Nl, 1)       // Number of cells in the length (1 for 2D)
+define(Nb, 40)      // Number of cells in the breadth
+define(Nhlc, 6)     // Number of cells in the height of the lower champfer
+define(Nh, 16)      // Number of cells in the height between the chamfers
+define(Nhuc, 12)    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+define(blc, calc(hlc/tan(deg2rad(thetalc)))) // Breadth to the top (height) of lower chamfer
+define(buc, calc(huc/tan(deg2rad(thetauc)))) // Breadth of upper chamfer
+
+define(Yl, -CofGy)
+define(Yllc, calc(Yl + blc))
+define(Yluc, calc(Yl + buc))
+
+define(Yr, calc(Yl + b))
+define(Yrlc, calc(Yr - blc))
+define(Yruc, calc(Yr - buc))
+
+define(Zb, -CofGz)
+define(Zlc, calc(Zb + hlc))
+define(Zt, calc(Zb + h))
+define(Zuc, calc(Zt - huc))
+
+define(Xf, calc(l/2.0))
+define(Xb, calc(Xf - l))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (Xb Yllc Zb) vlabel(bllcb)
+    (Xb Yl Zlc)  vlabel(bllc)
+    (Xb Yl Zuc)  vlabel(bluc)
+    (Xb Yluc Zt) vlabel(bluct)
+    (Xb Yrlc Zb) vlabel(brlcb)
+    (Xb Yr Zlc)  vlabel(brlc)
+    (Xb Yr Zuc)  vlabel(bruc)
+    (Xb Yruc Zt) vlabel(bruct)
+
+    (Xf Yllc Zb) vlabel(fllcb)
+    (Xf Yl Zlc)  vlabel(fllc)
+    (Xf Yl Zuc)  vlabel(fluc)
+    (Xf Yluc Zt) vlabel(fluct)
+    (Xf Yrlc Zb) vlabel(frlcb)
+    (Xf Yr Zlc)  vlabel(frlc)
+    (Xf Yr Zuc)  vlabel(fruc)
+    (Xf Yruc Zt) vlabel(fruct)
+);
+
+blocks
+(
+    // block0
+    hex2D(llcb, rlcb, rlc, llc)
+    (Nb Nhlc Nl)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(llc, rlc, ruc, luc)
+    (Nb Nh Nl)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(luc, ruc, ruct, luct)
+    (Nb Nhuc Nl)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        quad2D(llcb, rlcb)
+        quad2D(rlcb, rlc)
+        quad2D(rlc, ruc)
+        quad2D(ruc, ruct)
+        quad2D(ruct, luct)
+        quad2D(luct, luc)
+        quad2D(luc, llc)
+        quad2D(llc, llcb)
+    )
+
+    empty front
+    (
+        frontQuad(llcb, rlcb, rlc, llc)
+        frontQuad(llc, rlc, ruc, luc)
+        frontQuad(luc, ruc, ruct, luct)
+    )
+
+    empty back
+    (
+        backQuad(llcb, rlcb, rlc, llc)
+        backQuad(llc, rlc, ruc, luc)
+        backQuad(luc, ruc, ruct, luct)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/boundary b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..57267e87f7e42310c06882be5d8864dc3c77adc2
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/constant/polyMesh/boundary
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    walls
+    {
+        type            patch;
+        nFaces          148;
+        startFace       2646;
+    }
+    front
+    {
+        type            empty;
+        nFaces          1360;
+        startFace       2794;
+    }
+    back
+    {
+        type            empty;
+        nFaces          1360;
+        startFace       4154;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/constant/transportProperties b/tutorials/interDyMFoam/sloshingTank2D/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c20854a9031a956ad8bc154b0a4ae87375add730
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/constant/transportProperties
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phase1
+{
+    transportModel  Newtonian;
+    nu              nu  [0 2 -1 0 0 0 0] 1e-6;
+    rho             rho [1 -3 0 0 0 0 0] 998.2;
+}
+
+phase2
+{
+    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.0;
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/system/controlDict b/tutorials/interDyMFoam/sloshingTank2D/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..8d7fb44aa4528c4ac117926edad2016b31258934
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/system/controlDict
@@ -0,0 +1,107 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     sloshingFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         40;
+
+deltaT          0.01;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.05;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression compressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+(
+    probes
+    {
+        // Type of functionObject
+        type probes;
+
+        // Name of the directory for the probe data
+        name probes;
+
+        // Locations to be probed. runTime modifiable!
+        probeLocations
+        (
+            (0 9.95 19.77)
+            (0 -9.95 19.77)
+        );
+
+        // Fields to be probed. runTime modifiable!
+        fields
+        (
+            p
+        );
+    }
+
+    wallPressure
+    {
+        // Type of functionObject
+        type surfaces;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libsampling.so");
+
+		// Output every 10th time step
+        interval 10;
+
+        surfaceFormat raw;
+
+        fields
+        (
+            p
+        );
+
+        surfaces
+        (
+            walls
+            {
+                type            patch;
+                patchName       walls;
+                triangulate     false;
+            }
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/system/decomposeParDict b/tutorials/interDyMFoam/sloshingTank2D/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..d4594e09475d920c6ca71413fa457c4ec15810ac
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/system/decomposeParDict
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 16;
+
+method          hierarchical;
+
+simpleCoeffs
+{
+    n               (2 2 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (4 2 2);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights 
+    (
+        1
+        1
+        1
+        1
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/system/fvSchemes b/tutorials/interDyMFoam/sloshingTank2D/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..f089e4e5e6a14300b65f1deeeda14777be255c0c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/system/fvSchemes
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(U)         Gauss linear;
+    grad(gamma)     Gauss linear;
+}
+
+divSchemes
+{
+    div(rho*phi,U)  Gauss vanLeerV;
+    div(phi,gamma)  Gauss vanLeer;
+    div(phirb,gamma) Gauss vanLeer;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    pd;
+    pcorr;
+    gamma;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/system/fvSolution b/tutorials/interDyMFoam/sloshingTank2D/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..3aaca52375805f2de0bb55235af2d945db86e22c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/system/fvSolution
@@ -0,0 +1,123 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    pcorr PCG
+    {
+        preconditioner   GAMG
+        {
+            tolerance        1e-5;
+            relTol           0;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       0;
+            nPostSweeps      2;
+            nBottomSweeps    2;
+
+            cacheAgglomeration false;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        1e-5;
+        relTol           0;
+        maxIter          100;
+    };
+
+    pd GAMG
+    {
+        tolerance        1e-8;
+        relTol           0.01;
+
+        smoother         DIC;
+        nPreSweeps       0;
+        nPostSweeps      2;
+        nFinestSweeps    2;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+
+    pdFinal PCG
+    {
+        preconditioner GAMG
+        {
+            tolerance        2e-9;
+            relTol           0;
+
+            nVcycles         2;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       2;
+            nPostSweeps      2;
+            nFinestSweeps    2;
+
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        2e-9;
+        relTol           0;
+        maxIter          20;
+    };
+
+    U smoothSolver
+    {
+        smoother         GaussSeidel;
+        tolerance        1e-6;
+        relTol           0;
+        nSweeps          1;
+    };
+}
+
+PISO
+{
+    momentumPredictor no;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    nGammaCorr      1;
+    nGammaSubCycles 3;
+    cGamma          1.5;
+    correctPhi      no;
+
+    pRefProbe
+    {
+        fields
+        (
+            p
+        );
+
+        probeLocations
+        (
+            (0 0 0.15)
+        );
+    }
+
+    pRefValue      1e5;
+}
+
+relaxationFactors
+{
+    U  1.0;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D/system/setFieldsDict b/tutorials/interDyMFoam/sloshingTank2D/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..2c881a7ba48d03bc05de5c2d82ab02c90c1928ef
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D/system/setFieldsDict
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue gamma 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (-100 -100 -100) (100 100 0);
+
+        fieldValues
+        (
+            volScalarFieldValue gamma 1
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/0/U b/tutorials/interDyMFoam/sloshingTank2D3DoF/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..ae062bdf0d1fa6458df95c93f8ffeb9d7df188be
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/0/U
@@ -0,0 +1,38 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+    walls
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/0/gamma.org b/tutorials/interDyMFoam/sloshingTank2D3DoF/0/gamma.org
new file mode 100644
index 0000000000000000000000000000000000000000..2711563003114c5f54dc987dbeca328598f590e8
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/0/gamma.org
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      gamma;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/0/pd b/tutorials/interDyMFoam/sloshingTank2D3DoF/0/pd
new file mode 100644
index 0000000000000000000000000000000000000000..cefcbb7d442aad8e22f25fbaedbfbb0e68eed4b7
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/0/pd
@@ -0,0 +1,37 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      pd;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    front
+    {
+        type            empty;
+    }
+    back
+    {
+        type            empty;
+    }
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/Allclean b/tutorials/interDyMFoam/sloshingTank2D3DoF/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..2ffbd01addc2d4c2c5326f0f401c575945c12b7d
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/Allclean
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+foamCleanTutorials cases
+rm -rf 0/gamma.gz probes wallPressure pRefProbe
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/Allrun b/tutorials/interDyMFoam/sloshingTank2D3DoF/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..748dcf65ba56b28289c079d37d4abde3e95f3257
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
+runApplication blockMesh
+cp 0/gamma.org 0/gamma
+runApplication setFields
+runApplication interDyMFoam
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/RASProperties b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..ac1efb34c5d460ae6483a045c147312455969903
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/RASProperties
@@ -0,0 +1,173 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// RASModel kEpsilon;
+RASModel laminar;
+
+turbulence      off;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+NonlinearKEShihCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76932;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+LienCubicKECoeffs
+{
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+QZetaCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaZeta        0.76923;
+    anisotropic     no;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LamBremhorstKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LienCubicKELowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LienLeschzinerLowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+    alphaR           1.22;
+}
+
+SpalartAllmarasCoeffs
+{
+    alphaNut         1.5;
+    Cb1              0.1355;
+    Cb2              0.622;
+    Cw2              0.3;
+    Cw3              2;
+    Cv1              7.1;
+    Cv2              5.0;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/dynamicMeshDict b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..2b9f0bed1195391eeea3f4c700c909217a838025
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/dynamicMeshDict
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      motionProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh solidBodyMotionFvMesh;
+
+solidBodyMotionFvMeshCoeffs
+{
+    solidBodyMotionFunction SDA;
+
+    SDACoeffs
+    {
+        // Centre of gravity
+        CofG        (0 0 0);
+
+        // Model scale ratio
+        lamda       50;
+
+        // Max roll amplitude [rad]
+        rollAmax    0.2;
+
+        // Min roll amplitude [rad]
+        rollAmin    0.1;
+
+        // Heave amplitude [m]
+        heaveA      4;
+
+        // Sway amplitude [m]
+        swayA       2.4;
+
+        // Damping Coefficient [-]
+        Q           2;
+
+        // Time Period for liquid [sec]
+        Tp          14;
+
+        // Natural Period of Ship [sec]
+        Tpn         12;
+
+        // Reference time step [sec]
+        dTi         0.06;
+
+        // Incr. in Tp/unit 'dTi'[-]
+        dTp         -0.001;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/environmentalProperties b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..40232c0c406c02d21a4ae29a31f702bbf84c6214
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/environmentalProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [0 1 -2 0 0 0 0] (0 0 -9.81);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..3c52247aa29f0cb0eeb549c39a24a6e11a8f3391
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict
@@ -0,0 +1,145 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+      // Length of tank (x-direction)
+       // Breadth of tank (y-direction)
+       // Depth of tank (z-direction)
+
+      // Depth to the top (height) of lower chamfer
+     // Height of upper chamfer
+
+ // Angle of lower chamfer to the horizontal
+ // Angle of upper chamfer to the horizontal
+
+  // Centre of gravity in y-direction
+         // Centre of gravity in z-direction
+
+       // Number of cells in the length (1 for 2D)
+      // Number of cells in the breadth
+     // Number of cells in the height of the lower champfer
+      // Number of cells in the height between the chamfers
+    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+ // Breadth to the top (height) of lower chamfer
+ // Breadth of upper chamfer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (-0.5 -15 -10.0) // Vertex bllcb = 0 
+    (-0.5 -20 -5)  // Vertex bllc = 1 
+    (-0.5 -20 10)  // Vertex bluc = 2 
+    (-0.5 -10 20) // Vertex bluct = 3 
+    (-0.5 15 -10.0) // Vertex brlcb = 4 
+    (-0.5 20 -5)  // Vertex brlc = 5 
+    (-0.5 20 10)  // Vertex bruc = 6 
+    (-0.5 10 20) // Vertex bruct = 7 
+
+    (0.5 -15 -10.0) // Vertex fllcb = 8 
+    (0.5 -20 -5)  // Vertex fllc = 9 
+    (0.5 -20 10)  // Vertex fluc = 10 
+    (0.5 -10 20) // Vertex fluct = 11 
+    (0.5 15 -10.0) // Vertex frlcb = 12 
+    (0.5 20 -5)  // Vertex frlc = 13 
+    (0.5 20 10)  // Vertex fruc = 14 
+    (0.5 10 20) // Vertex fruct = 15 
+);
+
+blocks
+(
+    // block0
+    hex (0 4 5 1 8 12 13 9)
+    (40 6 1)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (1 5 6 2 9 13 14 10)
+    (40 16 1)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (2 6 7 3 10 14 15 11)
+    (40 12 1)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        (0 4 12 8)
+        (4 5 13 12)
+        (5 6 14 13)
+        (6 7 15 14)
+        (7 3 11 15)
+        (3 2 10 11)
+        (2 1 9 10)
+        (1 0 8 9)
+    )
+
+    empty front
+    (
+        (8 12 13 9)
+        (9 13 14 10)
+        (10 14 15 11)
+    )
+
+    empty back
+    (
+        (0 1 5 4)
+        (1 2 6 5)
+        (2 3 7 6)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..ced5dc533e3e9b795683e33517d450678eeab2be
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/blockMeshDict.m4
@@ -0,0 +1,145 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; printf ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+
+define(hex2D, hex (b$1 b$2 b$3 b$4 f$1 f$2 f$3 f$4))
+define(quad2D, (b$1 b$2 f$2 f$1))
+define(frontQuad, (f$1 f$2 f$3 f$4))
+define(backQuad, (b$1 b$4 b$3 b$2))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+define(l, 1.0)      // Length of tank (x-direction)
+define(b, 40)       // Breadth of tank (y-direction)
+define(h, 30)       // Depth of tank (z-direction)
+
+define(hlc, 5)      // Depth to the top (height) of lower chamfer
+define(huc, 10)     // Height of upper chamfer
+
+define(thetalc, 45) // Angle of lower chamfer to the horizontal
+define(thetauc, 45) // Angle of upper chamfer to the horizontal
+
+define(CofGy, calc(b/2.0))  // Centre of gravity in y-direction
+define(CofGz, 10.0)         // Centre of gravity in z-direction
+
+define(Nl, 1)       // Number of cells in the length (1 for 2D)
+define(Nb, 40)      // Number of cells in the breadth
+define(Nhlc, 6)     // Number of cells in the height of the lower champfer
+define(Nh, 16)      // Number of cells in the height between the chamfers
+define(Nhuc, 12)    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+define(blc, calc(hlc/tan(deg2rad(thetalc)))) // Breadth to the top (height) of lower chamfer
+define(buc, calc(huc/tan(deg2rad(thetauc)))) // Breadth of upper chamfer
+
+define(Yl, -CofGy)
+define(Yllc, calc(Yl + blc))
+define(Yluc, calc(Yl + buc))
+
+define(Yr, calc(Yl + b))
+define(Yrlc, calc(Yr - blc))
+define(Yruc, calc(Yr - buc))
+
+define(Zb, -CofGz)
+define(Zlc, calc(Zb + hlc))
+define(Zt, calc(Zb + h))
+define(Zuc, calc(Zt - huc))
+
+define(Xf, calc(l/2.0))
+define(Xb, calc(Xf - l))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (Xb Yllc Zb) vlabel(bllcb)
+    (Xb Yl Zlc)  vlabel(bllc)
+    (Xb Yl Zuc)  vlabel(bluc)
+    (Xb Yluc Zt) vlabel(bluct)
+    (Xb Yrlc Zb) vlabel(brlcb)
+    (Xb Yr Zlc)  vlabel(brlc)
+    (Xb Yr Zuc)  vlabel(bruc)
+    (Xb Yruc Zt) vlabel(bruct)
+
+    (Xf Yllc Zb) vlabel(fllcb)
+    (Xf Yl Zlc)  vlabel(fllc)
+    (Xf Yl Zuc)  vlabel(fluc)
+    (Xf Yluc Zt) vlabel(fluct)
+    (Xf Yrlc Zb) vlabel(frlcb)
+    (Xf Yr Zlc)  vlabel(frlc)
+    (Xf Yr Zuc)  vlabel(fruc)
+    (Xf Yruc Zt) vlabel(fruct)
+);
+
+blocks
+(
+    // block0
+    hex2D(llcb, rlcb, rlc, llc)
+    (Nb Nhlc Nl)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(llc, rlc, ruc, luc)
+    (Nb Nh Nl)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(luc, ruc, ruct, luct)
+    (Nb Nhuc Nl)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        quad2D(llcb, rlcb)
+        quad2D(rlcb, rlc)
+        quad2D(rlc, ruc)
+        quad2D(ruc, ruct)
+        quad2D(ruct, luct)
+        quad2D(luct, luc)
+        quad2D(luc, llc)
+        quad2D(llc, llcb)
+    )
+
+    empty front
+    (
+        frontQuad(llcb, rlcb, rlc, llc)
+        frontQuad(llc, rlc, ruc, luc)
+        frontQuad(luc, ruc, ruct, luct)
+    )
+
+    empty back
+    (
+        backQuad(llcb, rlcb, rlc, llc)
+        backQuad(llc, rlc, ruc, luc)
+        backQuad(luc, ruc, ruct, luct)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/boundary b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..57267e87f7e42310c06882be5d8864dc3c77adc2
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/polyMesh/boundary
@@ -0,0 +1,40 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    walls
+    {
+        type            patch;
+        nFaces          148;
+        startFace       2646;
+    }
+    front
+    {
+        type            empty;
+        nFaces          1360;
+        startFace       2794;
+    }
+    back
+    {
+        type            empty;
+        nFaces          1360;
+        startFace       4154;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/transportProperties b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c20854a9031a956ad8bc154b0a4ae87375add730
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/constant/transportProperties
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phase1
+{
+    transportModel  Newtonian;
+    nu              nu  [0 2 -1 0 0 0 0] 1e-6;
+    rho             rho [1 -3 0 0 0 0 0] 998.2;
+}
+
+phase2
+{
+    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.0;
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/system/controlDict b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..8d7fb44aa4528c4ac117926edad2016b31258934
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/controlDict
@@ -0,0 +1,107 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     sloshingFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         40;
+
+deltaT          0.01;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.05;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression compressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+(
+    probes
+    {
+        // Type of functionObject
+        type probes;
+
+        // Name of the directory for the probe data
+        name probes;
+
+        // Locations to be probed. runTime modifiable!
+        probeLocations
+        (
+            (0 9.95 19.77)
+            (0 -9.95 19.77)
+        );
+
+        // Fields to be probed. runTime modifiable!
+        fields
+        (
+            p
+        );
+    }
+
+    wallPressure
+    {
+        // Type of functionObject
+        type surfaces;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libsampling.so");
+
+		// Output every 10th time step
+        interval 10;
+
+        surfaceFormat raw;
+
+        fields
+        (
+            p
+        );
+
+        surfaces
+        (
+            walls
+            {
+                type            patch;
+                patchName       walls;
+                triangulate     false;
+            }
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/system/decomposeParDict b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..d4594e09475d920c6ca71413fa457c4ec15810ac
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/decomposeParDict
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 16;
+
+method          hierarchical;
+
+simpleCoeffs
+{
+    n               (2 2 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (4 2 2);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights 
+    (
+        1
+        1
+        1
+        1
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/system/fvSchemes b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..f089e4e5e6a14300b65f1deeeda14777be255c0c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/fvSchemes
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(U)         Gauss linear;
+    grad(gamma)     Gauss linear;
+}
+
+divSchemes
+{
+    div(rho*phi,U)  Gauss vanLeerV;
+    div(phi,gamma)  Gauss vanLeer;
+    div(phirb,gamma) Gauss vanLeer;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    pd;
+    pcorr;
+    gamma;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/system/fvSolution b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..3aaca52375805f2de0bb55235af2d945db86e22c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/fvSolution
@@ -0,0 +1,123 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    pcorr PCG
+    {
+        preconditioner   GAMG
+        {
+            tolerance        1e-5;
+            relTol           0;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       0;
+            nPostSweeps      2;
+            nBottomSweeps    2;
+
+            cacheAgglomeration false;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        1e-5;
+        relTol           0;
+        maxIter          100;
+    };
+
+    pd GAMG
+    {
+        tolerance        1e-8;
+        relTol           0.01;
+
+        smoother         DIC;
+        nPreSweeps       0;
+        nPostSweeps      2;
+        nFinestSweeps    2;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+
+    pdFinal PCG
+    {
+        preconditioner GAMG
+        {
+            tolerance        2e-9;
+            relTol           0;
+
+            nVcycles         2;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       2;
+            nPostSweeps      2;
+            nFinestSweeps    2;
+
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        2e-9;
+        relTol           0;
+        maxIter          20;
+    };
+
+    U smoothSolver
+    {
+        smoother         GaussSeidel;
+        tolerance        1e-6;
+        relTol           0;
+        nSweeps          1;
+    };
+}
+
+PISO
+{
+    momentumPredictor no;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    nGammaCorr      1;
+    nGammaSubCycles 3;
+    cGamma          1.5;
+    correctPhi      no;
+
+    pRefProbe
+    {
+        fields
+        (
+            p
+        );
+
+        probeLocations
+        (
+            (0 0 0.15)
+        );
+    }
+
+    pRefValue      1e5;
+}
+
+relaxationFactors
+{
+    U  1.0;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank2D3DoF/system/setFieldsDict b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..2c881a7ba48d03bc05de5c2d82ab02c90c1928ef
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank2D3DoF/system/setFieldsDict
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue gamma 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (-100 -100 -100) (100 100 0);
+
+        fieldValues
+        (
+            volScalarFieldValue gamma 1
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/0/U b/tutorials/interDyMFoam/sloshingTank3D/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..df1f4c5a6cac4fec14e0fe27b4ce52192bbb8588
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/0/U
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    walls
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/0/gamma.org b/tutorials/interDyMFoam/sloshingTank3D/0/gamma.org
new file mode 100644
index 0000000000000000000000000000000000000000..85902dcba56932d63c672f60079995cbf927b363
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/0/gamma.org
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      gamma;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/0/pd b/tutorials/interDyMFoam/sloshingTank3D/0/pd
new file mode 100644
index 0000000000000000000000000000000000000000..25379b239c07f497fa0d81af72650ff736e464f2
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/0/pd
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      pd;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/Allclean b/tutorials/interDyMFoam/sloshingTank3D/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..2ffbd01addc2d4c2c5326f0f401c575945c12b7d
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/Allclean
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+foamCleanTutorials cases
+rm -rf 0/gamma.gz probes wallPressure pRefProbe
diff --git a/tutorials/interDyMFoam/sloshingTank3D/Allrun b/tutorials/interDyMFoam/sloshingTank3D/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..748dcf65ba56b28289c079d37d4abde3e95f3257
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
+runApplication blockMesh
+cp 0/gamma.org 0/gamma
+runApplication setFields
+runApplication interDyMFoam
diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/RASProperties b/tutorials/interDyMFoam/sloshingTank3D/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..ac1efb34c5d460ae6483a045c147312455969903
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/constant/RASProperties
@@ -0,0 +1,173 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// RASModel kEpsilon;
+RASModel laminar;
+
+turbulence      off;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+NonlinearKEShihCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76932;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+LienCubicKECoeffs
+{
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+QZetaCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaZeta        0.76923;
+    anisotropic     no;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LamBremhorstKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LienCubicKELowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LienLeschzinerLowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+    alphaR           1.22;
+}
+
+SpalartAllmarasCoeffs
+{
+    alphaNut         1.5;
+    Cb1              0.1355;
+    Cb2              0.622;
+    Cw2              0.3;
+    Cw3              2;
+    Cv1              7.1;
+    Cv2              5.0;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/dynamicMeshDict b/tutorials/interDyMFoam/sloshingTank3D/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..e7a0ec06d662ae2718dffc093a0605bbf62f732f
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/constant/dynamicMeshDict
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      motionProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh solidBodyMotionFvMesh;
+
+solidBodyMotionFvMeshCoeffs
+{
+    solidBodyMotionFunction SDA;
+
+    SDACoeffs
+    {
+        // Centre of gravity
+        CofG        (0 0 0);
+
+        // Model scale ratio
+        lamda       50;
+
+        // Max roll amplitude [rad]
+        rollAmax    0.22654;
+
+        // Min roll amplitude [rad]
+        rollAmin    0.10472;
+
+        // Heave amplitude [m]
+        heaveA      3.79;
+
+        // Sway amplitude [m]
+        swayA       2.34;
+
+        // Damping Coefficient [-]
+        Q           2.00;
+    
+        // Time Period for liquid [sec]
+        Tp          13.93;
+
+        // Natural Period of Ship [sec]
+        Tpn         11.93;
+
+        // Reference time step [sec]
+        dTi         0.059;
+
+        // Incr. in Tp/unit 'dTi'[-]
+        dTp         -0.001;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/environmentalProperties b/tutorials/interDyMFoam/sloshingTank3D/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..40232c0c406c02d21a4ae29a31f702bbf84c6214
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/constant/environmentalProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [0 1 -2 0 0 0 0] (0 0 -9.81);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..0d21d111481f4479c9f59f540e7962d4a65e3e4c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict
@@ -0,0 +1,137 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+       // Length of tank (x-direction)
+       // Breadth of tank (y-direction)
+       // Depth of tank (z-direction)
+
+      // Depth to the top (height) of lower chamfer
+     // Height of upper chamfer
+
+ // Angle of lower chamfer to the horizontal
+ // Angle of upper chamfer to the horizontal
+
+  // Centre of gravity in y-direction
+         // Centre of gravity in z-direction
+
+      // Number of cells in the length (1 for 2D)
+      // Number of cells in the breadth
+     // Number of cells in the height of the lower champfer
+      // Number of cells in the height between the chamfers
+    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+ // Breadth to the top (height) of lower chamfer
+ // Breadth of upper chamfer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (-10 -15 -10.0) // Vertex bllcb = 0 
+    (-10 -20 -5)  // Vertex bllc = 1 
+    (-10 -20 10)  // Vertex bluc = 2 
+    (-10 -10 20) // Vertex bluct = 3 
+    (-10 15 -10.0) // Vertex brlcb = 4 
+    (-10 20 -5)  // Vertex brlc = 5 
+    (-10 20 10)  // Vertex bruc = 6 
+    (-10 10 20) // Vertex bruct = 7 
+
+    (10 -15 -10.0) // Vertex fllcb = 8 
+    (10 -20 -5)  // Vertex fllc = 9 
+    (10 -20 10)  // Vertex fluc = 10 
+    (10 -10 20) // Vertex fluct = 11 
+    (10 15 -10.0) // Vertex frlcb = 12 
+    (10 20 -5)  // Vertex frlc = 13 
+    (10 20 10)  // Vertex fruc = 14 
+    (10 10 20) // Vertex fruct = 15 
+);
+
+blocks
+(
+    // block0
+    hex (0 4 5 1 8 12 13 9)
+    (40 6 19)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (1 5 6 2 9 13 14 10)
+    (40 16 19)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (2 6 7 3 10 14 15 11)
+    (40 12 19)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        (0 4 12 8)
+        (4 5 13 12)
+        (5 6 14 13)
+        (6 7 15 14)
+        (7 3 11 15)
+        (3 2 10 11)
+        (2 1 9 10)
+        (1 0 8 9)
+        (8 12 13 9)
+        (9 13 14 10)
+        (10 14 15 11)
+        (0 1 5 4)
+        (1 2 6 5)
+        (2 3 7 6)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..5e355fd7025a748a668cd3d55bfe9bd984c78869
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/blockMeshDict.m4
@@ -0,0 +1,137 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; printf ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+
+define(hex2D, hex (b$1 b$2 b$3 b$4 f$1 f$2 f$3 f$4))
+define(quad2D, (b$1 b$2 f$2 f$1))
+define(frontQuad, (f$1 f$2 f$3 f$4))
+define(backQuad, (b$1 b$4 b$3 b$2))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+define(l, 20)       // Length of tank (x-direction)
+define(b, 40)       // Breadth of tank (y-direction)
+define(h, 30)       // Depth of tank (z-direction)
+
+define(hlc, 5)      // Depth to the top (height) of lower chamfer
+define(huc, 10)     // Height of upper chamfer
+
+define(thetalc, 45) // Angle of lower chamfer to the horizontal
+define(thetauc, 45) // Angle of upper chamfer to the horizontal
+
+define(CofGy, calc(b/2.0))  // Centre of gravity in y-direction
+define(CofGz, 10.0)         // Centre of gravity in z-direction
+
+define(Nl, 19)      // Number of cells in the length (1 for 2D)
+define(Nb, 40)      // Number of cells in the breadth
+define(Nhlc, 6)     // Number of cells in the height of the lower champfer
+define(Nh, 16)      // Number of cells in the height between the chamfers
+define(Nhuc, 12)    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+define(blc, calc(hlc/tan(deg2rad(thetalc)))) // Breadth to the top (height) of lower chamfer
+define(buc, calc(huc/tan(deg2rad(thetauc)))) // Breadth of upper chamfer
+
+define(Yl, -CofGy)
+define(Yllc, calc(Yl + blc))
+define(Yluc, calc(Yl + buc))
+
+define(Yr, calc(Yl + b))
+define(Yrlc, calc(Yr - blc))
+define(Yruc, calc(Yr - buc))
+
+define(Zb, -CofGz)
+define(Zlc, calc(Zb + hlc))
+define(Zt, calc(Zb + h))
+define(Zuc, calc(Zt - huc))
+
+define(Xf, calc(l/2.0))
+define(Xb, calc(Xf - l))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (Xb Yllc Zb) vlabel(bllcb)
+    (Xb Yl Zlc)  vlabel(bllc)
+    (Xb Yl Zuc)  vlabel(bluc)
+    (Xb Yluc Zt) vlabel(bluct)
+    (Xb Yrlc Zb) vlabel(brlcb)
+    (Xb Yr Zlc)  vlabel(brlc)
+    (Xb Yr Zuc)  vlabel(bruc)
+    (Xb Yruc Zt) vlabel(bruct)
+
+    (Xf Yllc Zb) vlabel(fllcb)
+    (Xf Yl Zlc)  vlabel(fllc)
+    (Xf Yl Zuc)  vlabel(fluc)
+    (Xf Yluc Zt) vlabel(fluct)
+    (Xf Yrlc Zb) vlabel(frlcb)
+    (Xf Yr Zlc)  vlabel(frlc)
+    (Xf Yr Zuc)  vlabel(fruc)
+    (Xf Yruc Zt) vlabel(fruct)
+);
+
+blocks
+(
+    // block0
+    hex2D(llcb, rlcb, rlc, llc)
+    (Nb Nhlc Nl)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(llc, rlc, ruc, luc)
+    (Nb Nh Nl)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(luc, ruc, ruct, luct)
+    (Nb Nhuc Nl)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        quad2D(llcb, rlcb)
+        quad2D(rlcb, rlc)
+        quad2D(rlc, ruc)
+        quad2D(ruc, ruct)
+        quad2D(ruct, luct)
+        quad2D(luct, luc)
+        quad2D(luc, llc)
+        quad2D(llc, llcb)
+        frontQuad(llcb, rlcb, rlc, llc)
+        frontQuad(llc, rlc, ruc, luc)
+        frontQuad(luc, ruc, ruct, luct)
+        backQuad(llcb, rlcb, rlc, llc)
+        backQuad(llc, rlc, ruc, luc)
+        backQuad(luc, ruc, ruct, luct)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/boundary b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..28068f37d475c1adafedec2ee7c20e8de8d7df32
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/constant/polyMesh/boundary
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+1
+(
+    walls
+    {
+        type            patch;
+        nFaces          5532;
+        startFace       74754;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/constant/transportProperties b/tutorials/interDyMFoam/sloshingTank3D/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c20854a9031a956ad8bc154b0a4ae87375add730
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/constant/transportProperties
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phase1
+{
+    transportModel  Newtonian;
+    nu              nu  [0 2 -1 0 0 0 0] 1e-6;
+    rho             rho [1 -3 0 0 0 0 0] 998.2;
+}
+
+phase2
+{
+    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.0;
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/system/controlDict b/tutorials/interDyMFoam/sloshingTank3D/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..b721c9c05888ff377853556eee6154363bc8e05f
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/system/controlDict
@@ -0,0 +1,109 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     sloshingFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         40;
+
+deltaT          0.01;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.05;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression compressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+(
+    probes
+    {
+        // Type of functionObject
+        type probes;
+
+        // Name of the directory for the probe data
+        name probes;
+
+        // Locations to be probed. runTime modifiable!
+        probeLocations
+        (
+            (0 9.95 19.77)
+            (0 -9.95 19.77)
+        );
+
+        // Fields to be probed. runTime modifiable!
+        fields
+        (
+            p
+        );
+    }
+
+    /*
+    wallPressure
+    {
+        // Type of functionObject
+        type surfaces;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libsampling.so");
+
+		// Output every 10th time step
+        interval 10;
+
+        surfaceFormat raw;
+
+        fields
+        (
+            p
+        );
+
+        surfaces
+        (
+            walls
+            {
+                type            patch;
+                patchName       walls;
+                triangulate     false;
+            }
+        );
+    }
+    */
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/system/decomposeParDict b/tutorials/interDyMFoam/sloshingTank3D/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..d4594e09475d920c6ca71413fa457c4ec15810ac
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/system/decomposeParDict
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 16;
+
+method          hierarchical;
+
+simpleCoeffs
+{
+    n               (2 2 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (4 2 2);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights 
+    (
+        1
+        1
+        1
+        1
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/system/fvSchemes b/tutorials/interDyMFoam/sloshingTank3D/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..f089e4e5e6a14300b65f1deeeda14777be255c0c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/system/fvSchemes
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(U)         Gauss linear;
+    grad(gamma)     Gauss linear;
+}
+
+divSchemes
+{
+    div(rho*phi,U)  Gauss vanLeerV;
+    div(phi,gamma)  Gauss vanLeer;
+    div(phirb,gamma) Gauss vanLeer;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    pd;
+    pcorr;
+    gamma;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/system/fvSolution b/tutorials/interDyMFoam/sloshingTank3D/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..3aaca52375805f2de0bb55235af2d945db86e22c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/system/fvSolution
@@ -0,0 +1,123 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    pcorr PCG
+    {
+        preconditioner   GAMG
+        {
+            tolerance        1e-5;
+            relTol           0;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       0;
+            nPostSweeps      2;
+            nBottomSweeps    2;
+
+            cacheAgglomeration false;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        1e-5;
+        relTol           0;
+        maxIter          100;
+    };
+
+    pd GAMG
+    {
+        tolerance        1e-8;
+        relTol           0.01;
+
+        smoother         DIC;
+        nPreSweeps       0;
+        nPostSweeps      2;
+        nFinestSweeps    2;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+
+    pdFinal PCG
+    {
+        preconditioner GAMG
+        {
+            tolerance        2e-9;
+            relTol           0;
+
+            nVcycles         2;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       2;
+            nPostSweeps      2;
+            nFinestSweeps    2;
+
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        2e-9;
+        relTol           0;
+        maxIter          20;
+    };
+
+    U smoothSolver
+    {
+        smoother         GaussSeidel;
+        tolerance        1e-6;
+        relTol           0;
+        nSweeps          1;
+    };
+}
+
+PISO
+{
+    momentumPredictor no;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    nGammaCorr      1;
+    nGammaSubCycles 3;
+    cGamma          1.5;
+    correctPhi      no;
+
+    pRefProbe
+    {
+        fields
+        (
+            p
+        );
+
+        probeLocations
+        (
+            (0 0 0.15)
+        );
+    }
+
+    pRefValue      1e5;
+}
+
+relaxationFactors
+{
+    U  1.0;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D/system/setFieldsDict b/tutorials/interDyMFoam/sloshingTank3D/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..2c881a7ba48d03bc05de5c2d82ab02c90c1928ef
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D/system/setFieldsDict
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue gamma 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (-100 -100 -100) (100 100 0);
+
+        fieldValues
+        (
+            volScalarFieldValue gamma 1
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/0/U b/tutorials/interDyMFoam/sloshingTank3D3DoF/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..df1f4c5a6cac4fec14e0fe27b4ce52192bbb8588
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/0/U
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    walls
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/0/gamma.org b/tutorials/interDyMFoam/sloshingTank3D3DoF/0/gamma.org
new file mode 100644
index 0000000000000000000000000000000000000000..85902dcba56932d63c672f60079995cbf927b363
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/0/gamma.org
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      gamma;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/0/pd b/tutorials/interDyMFoam/sloshingTank3D3DoF/0/pd
new file mode 100644
index 0000000000000000000000000000000000000000..25379b239c07f497fa0d81af72650ff736e464f2
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/0/pd
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      pd;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/Allclean b/tutorials/interDyMFoam/sloshingTank3D3DoF/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..2ffbd01addc2d4c2c5326f0f401c575945c12b7d
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/Allclean
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+foamCleanTutorials cases
+rm -rf 0/gamma.gz probes wallPressure pRefProbe
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/Allrun b/tutorials/interDyMFoam/sloshingTank3D3DoF/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..748dcf65ba56b28289c079d37d4abde3e95f3257
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
+runApplication blockMesh
+cp 0/gamma.org 0/gamma
+runApplication setFields
+runApplication interDyMFoam
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/RASProperties b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..ac1efb34c5d460ae6483a045c147312455969903
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/RASProperties
@@ -0,0 +1,173 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// RASModel kEpsilon;
+RASModel laminar;
+
+turbulence      off;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+NonlinearKEShihCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76932;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+LienCubicKECoeffs
+{
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+QZetaCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaZeta        0.76923;
+    anisotropic     no;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LamBremhorstKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LienCubicKELowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LienLeschzinerLowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+    alphaR           1.22;
+}
+
+SpalartAllmarasCoeffs
+{
+    alphaNut         1.5;
+    Cb1              0.1355;
+    Cb2              0.622;
+    Cw2              0.3;
+    Cw3              2;
+    Cv1              7.1;
+    Cv2              5.0;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/dynamicMeshDict b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..2b9f0bed1195391eeea3f4c700c909217a838025
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/dynamicMeshDict
@@ -0,0 +1,60 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      motionProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh solidBodyMotionFvMesh;
+
+solidBodyMotionFvMeshCoeffs
+{
+    solidBodyMotionFunction SDA;
+
+    SDACoeffs
+    {
+        // Centre of gravity
+        CofG        (0 0 0);
+
+        // Model scale ratio
+        lamda       50;
+
+        // Max roll amplitude [rad]
+        rollAmax    0.2;
+
+        // Min roll amplitude [rad]
+        rollAmin    0.1;
+
+        // Heave amplitude [m]
+        heaveA      4;
+
+        // Sway amplitude [m]
+        swayA       2.4;
+
+        // Damping Coefficient [-]
+        Q           2;
+
+        // Time Period for liquid [sec]
+        Tp          14;
+
+        // Natural Period of Ship [sec]
+        Tpn         12;
+
+        // Reference time step [sec]
+        dTi         0.06;
+
+        // Incr. in Tp/unit 'dTi'[-]
+        dTp         -0.001;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/environmentalProperties b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..40232c0c406c02d21a4ae29a31f702bbf84c6214
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/environmentalProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [0 1 -2 0 0 0 0] (0 0 -9.81);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..0d21d111481f4479c9f59f540e7962d4a65e3e4c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict
@@ -0,0 +1,137 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+       // Length of tank (x-direction)
+       // Breadth of tank (y-direction)
+       // Depth of tank (z-direction)
+
+      // Depth to the top (height) of lower chamfer
+     // Height of upper chamfer
+
+ // Angle of lower chamfer to the horizontal
+ // Angle of upper chamfer to the horizontal
+
+  // Centre of gravity in y-direction
+         // Centre of gravity in z-direction
+
+      // Number of cells in the length (1 for 2D)
+      // Number of cells in the breadth
+     // Number of cells in the height of the lower champfer
+      // Number of cells in the height between the chamfers
+    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+ // Breadth to the top (height) of lower chamfer
+ // Breadth of upper chamfer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (-10 -15 -10.0) // Vertex bllcb = 0 
+    (-10 -20 -5)  // Vertex bllc = 1 
+    (-10 -20 10)  // Vertex bluc = 2 
+    (-10 -10 20) // Vertex bluct = 3 
+    (-10 15 -10.0) // Vertex brlcb = 4 
+    (-10 20 -5)  // Vertex brlc = 5 
+    (-10 20 10)  // Vertex bruc = 6 
+    (-10 10 20) // Vertex bruct = 7 
+
+    (10 -15 -10.0) // Vertex fllcb = 8 
+    (10 -20 -5)  // Vertex fllc = 9 
+    (10 -20 10)  // Vertex fluc = 10 
+    (10 -10 20) // Vertex fluct = 11 
+    (10 15 -10.0) // Vertex frlcb = 12 
+    (10 20 -5)  // Vertex frlc = 13 
+    (10 20 10)  // Vertex fruc = 14 
+    (10 10 20) // Vertex fruct = 15 
+);
+
+blocks
+(
+    // block0
+    hex (0 4 5 1 8 12 13 9)
+    (40 6 19)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (1 5 6 2 9 13 14 10)
+    (40 16 19)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (2 6 7 3 10 14 15 11)
+    (40 12 19)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        (0 4 12 8)
+        (4 5 13 12)
+        (5 6 14 13)
+        (6 7 15 14)
+        (7 3 11 15)
+        (3 2 10 11)
+        (2 1 9 10)
+        (1 0 8 9)
+        (8 12 13 9)
+        (9 13 14 10)
+        (10 14 15 11)
+        (0 1 5 4)
+        (1 2 6 5)
+        (2 3 7 6)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..5e355fd7025a748a668cd3d55bfe9bd984c78869
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/blockMeshDict.m4
@@ -0,0 +1,137 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; printf ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+
+define(hex2D, hex (b$1 b$2 b$3 b$4 f$1 f$2 f$3 f$4))
+define(quad2D, (b$1 b$2 f$2 f$1))
+define(frontQuad, (f$1 f$2 f$3 f$4))
+define(backQuad, (b$1 b$4 b$3 b$2))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+define(l, 20)       // Length of tank (x-direction)
+define(b, 40)       // Breadth of tank (y-direction)
+define(h, 30)       // Depth of tank (z-direction)
+
+define(hlc, 5)      // Depth to the top (height) of lower chamfer
+define(huc, 10)     // Height of upper chamfer
+
+define(thetalc, 45) // Angle of lower chamfer to the horizontal
+define(thetauc, 45) // Angle of upper chamfer to the horizontal
+
+define(CofGy, calc(b/2.0))  // Centre of gravity in y-direction
+define(CofGz, 10.0)         // Centre of gravity in z-direction
+
+define(Nl, 19)      // Number of cells in the length (1 for 2D)
+define(Nb, 40)      // Number of cells in the breadth
+define(Nhlc, 6)     // Number of cells in the height of the lower champfer
+define(Nh, 16)      // Number of cells in the height between the chamfers
+define(Nhuc, 12)    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+define(blc, calc(hlc/tan(deg2rad(thetalc)))) // Breadth to the top (height) of lower chamfer
+define(buc, calc(huc/tan(deg2rad(thetauc)))) // Breadth of upper chamfer
+
+define(Yl, -CofGy)
+define(Yllc, calc(Yl + blc))
+define(Yluc, calc(Yl + buc))
+
+define(Yr, calc(Yl + b))
+define(Yrlc, calc(Yr - blc))
+define(Yruc, calc(Yr - buc))
+
+define(Zb, -CofGz)
+define(Zlc, calc(Zb + hlc))
+define(Zt, calc(Zb + h))
+define(Zuc, calc(Zt - huc))
+
+define(Xf, calc(l/2.0))
+define(Xb, calc(Xf - l))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (Xb Yllc Zb) vlabel(bllcb)
+    (Xb Yl Zlc)  vlabel(bllc)
+    (Xb Yl Zuc)  vlabel(bluc)
+    (Xb Yluc Zt) vlabel(bluct)
+    (Xb Yrlc Zb) vlabel(brlcb)
+    (Xb Yr Zlc)  vlabel(brlc)
+    (Xb Yr Zuc)  vlabel(bruc)
+    (Xb Yruc Zt) vlabel(bruct)
+
+    (Xf Yllc Zb) vlabel(fllcb)
+    (Xf Yl Zlc)  vlabel(fllc)
+    (Xf Yl Zuc)  vlabel(fluc)
+    (Xf Yluc Zt) vlabel(fluct)
+    (Xf Yrlc Zb) vlabel(frlcb)
+    (Xf Yr Zlc)  vlabel(frlc)
+    (Xf Yr Zuc)  vlabel(fruc)
+    (Xf Yruc Zt) vlabel(fruct)
+);
+
+blocks
+(
+    // block0
+    hex2D(llcb, rlcb, rlc, llc)
+    (Nb Nhlc Nl)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(llc, rlc, ruc, luc)
+    (Nb Nh Nl)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(luc, ruc, ruct, luct)
+    (Nb Nhuc Nl)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        quad2D(llcb, rlcb)
+        quad2D(rlcb, rlc)
+        quad2D(rlc, ruc)
+        quad2D(ruc, ruct)
+        quad2D(ruct, luct)
+        quad2D(luct, luc)
+        quad2D(luc, llc)
+        quad2D(llc, llcb)
+        frontQuad(llcb, rlcb, rlc, llc)
+        frontQuad(llc, rlc, ruc, luc)
+        frontQuad(luc, ruc, ruct, luct)
+        backQuad(llcb, rlcb, rlc, llc)
+        backQuad(llc, rlc, ruc, luc)
+        backQuad(luc, ruc, ruct, luct)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/boundary b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..28068f37d475c1adafedec2ee7c20e8de8d7df32
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/polyMesh/boundary
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+1
+(
+    walls
+    {
+        type            patch;
+        nFaces          5532;
+        startFace       74754;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/transportProperties b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c20854a9031a956ad8bc154b0a4ae87375add730
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/constant/transportProperties
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phase1
+{
+    transportModel  Newtonian;
+    nu              nu  [0 2 -1 0 0 0 0] 1e-6;
+    rho             rho [1 -3 0 0 0 0 0] 998.2;
+}
+
+phase2
+{
+    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.0;
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/system/controlDict b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..b721c9c05888ff377853556eee6154363bc8e05f
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/controlDict
@@ -0,0 +1,109 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     sloshingFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         40;
+
+deltaT          0.01;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.05;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression compressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+(
+    probes
+    {
+        // Type of functionObject
+        type probes;
+
+        // Name of the directory for the probe data
+        name probes;
+
+        // Locations to be probed. runTime modifiable!
+        probeLocations
+        (
+            (0 9.95 19.77)
+            (0 -9.95 19.77)
+        );
+
+        // Fields to be probed. runTime modifiable!
+        fields
+        (
+            p
+        );
+    }
+
+    /*
+    wallPressure
+    {
+        // Type of functionObject
+        type surfaces;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libsampling.so");
+
+		// Output every 10th time step
+        interval 10;
+
+        surfaceFormat raw;
+
+        fields
+        (
+            p
+        );
+
+        surfaces
+        (
+            walls
+            {
+                type            patch;
+                patchName       walls;
+                triangulate     false;
+            }
+        );
+    }
+    */
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/system/decomposeParDict b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..d4594e09475d920c6ca71413fa457c4ec15810ac
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/decomposeParDict
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 16;
+
+method          hierarchical;
+
+simpleCoeffs
+{
+    n               (2 2 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (4 2 2);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights 
+    (
+        1
+        1
+        1
+        1
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/system/fvSchemes b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..f089e4e5e6a14300b65f1deeeda14777be255c0c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/fvSchemes
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(U)         Gauss linear;
+    grad(gamma)     Gauss linear;
+}
+
+divSchemes
+{
+    div(rho*phi,U)  Gauss vanLeerV;
+    div(phi,gamma)  Gauss vanLeer;
+    div(phirb,gamma) Gauss vanLeer;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    pd;
+    pcorr;
+    gamma;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/system/fvSolution b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..3aaca52375805f2de0bb55235af2d945db86e22c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/fvSolution
@@ -0,0 +1,123 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    pcorr PCG
+    {
+        preconditioner   GAMG
+        {
+            tolerance        1e-5;
+            relTol           0;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       0;
+            nPostSweeps      2;
+            nBottomSweeps    2;
+
+            cacheAgglomeration false;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        1e-5;
+        relTol           0;
+        maxIter          100;
+    };
+
+    pd GAMG
+    {
+        tolerance        1e-8;
+        relTol           0.01;
+
+        smoother         DIC;
+        nPreSweeps       0;
+        nPostSweeps      2;
+        nFinestSweeps    2;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+
+    pdFinal PCG
+    {
+        preconditioner GAMG
+        {
+            tolerance        2e-9;
+            relTol           0;
+
+            nVcycles         2;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       2;
+            nPostSweeps      2;
+            nFinestSweeps    2;
+
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        2e-9;
+        relTol           0;
+        maxIter          20;
+    };
+
+    U smoothSolver
+    {
+        smoother         GaussSeidel;
+        tolerance        1e-6;
+        relTol           0;
+        nSweeps          1;
+    };
+}
+
+PISO
+{
+    momentumPredictor no;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    nGammaCorr      1;
+    nGammaSubCycles 3;
+    cGamma          1.5;
+    correctPhi      no;
+
+    pRefProbe
+    {
+        fields
+        (
+            p
+        );
+
+        probeLocations
+        (
+            (0 0 0.15)
+        );
+    }
+
+    pRefValue      1e5;
+}
+
+relaxationFactors
+{
+    U  1.0;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D3DoF/system/setFieldsDict b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..2c881a7ba48d03bc05de5c2d82ab02c90c1928ef
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D3DoF/system/setFieldsDict
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue gamma 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (-100 -100 -100) (100 100 0);
+
+        fieldValues
+        (
+            volScalarFieldValue gamma 1
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/0/U b/tutorials/interDyMFoam/sloshingTank3D6DoF/0/U
new file mode 100644
index 0000000000000000000000000000000000000000..df1f4c5a6cac4fec14e0fe27b4ce52192bbb8588
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/0/U
@@ -0,0 +1,30 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (0 0 0);
+
+boundaryField
+{
+    walls
+    {
+        type            movingWallVelocity;
+        value           uniform (0 0 0);
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/0/gamma.org b/tutorials/interDyMFoam/sloshingTank3D6DoF/0/gamma.org
new file mode 100644
index 0000000000000000000000000000000000000000..85902dcba56932d63c672f60079995cbf927b363
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/0/gamma.org
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      gamma;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 0 0 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/0/pd b/tutorials/interDyMFoam/sloshingTank3D6DoF/0/pd
new file mode 100644
index 0000000000000000000000000000000000000000..25379b239c07f497fa0d81af72650ff736e464f2
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/0/pd
@@ -0,0 +1,29 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volScalarField;
+    object      pd;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [1 -1 -2 0 0 0 0];
+
+internalField   uniform 0;
+
+boundaryField
+{
+    walls
+    {
+        type            zeroGradient;
+    }
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/Allclean b/tutorials/interDyMFoam/sloshingTank3D6DoF/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..2ffbd01addc2d4c2c5326f0f401c575945c12b7d
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/Allclean
@@ -0,0 +1,4 @@
+#!/bin/sh
+
+foamCleanTutorials cases
+rm -rf 0/gamma.gz probes wallPressure pRefProbe
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/Allrun b/tutorials/interDyMFoam/sloshingTank3D6DoF/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..748dcf65ba56b28289c079d37d4abde3e95f3257
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/Allrun
@@ -0,0 +1,9 @@
+#!/bin/sh
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+m4 < constant/polyMesh/blockMeshDict.m4 > constant/polyMesh/blockMeshDict
+runApplication blockMesh
+cp 0/gamma.org 0/gamma
+runApplication setFields
+runApplication interDyMFoam
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/6DoF.dat b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/6DoF.dat
new file mode 100644
index 0000000000000000000000000000000000000000..0cf1f34768ee1525858abbcdf63827513c28faa0
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/6DoF.dat
@@ -0,0 +1,105 @@
+
+100
+(
+(0 ((0 0 0) (0 0 0)))
+(0.40404 ((0.401298 0.952899 0.321827) (4.82741 2.79073 2.00649)))
+(0.808081 ((0.786273 1.8071 0.635266) (9.52899 5.3597 3.93137)))
+(1.21212 ((1.13927 2.47414 0.932149) (13.9822 7.5028 5.69634)))
+(1.61616 ((1.44593 2.88493 1.20474) (18.071 9.04972 7.22963)))
+(2.0202 ((1.69377 2.99691 1.44593) (21.6889 9.87755 8.46886)))
+(2.42424 ((1.87273 2.7985 1.64943) (24.7414 9.92051 9.36363)))
+(2.82828 ((1.97551 2.31024 1.80994) (27.1492 9.17518 9.87755)))
+(3.23232 ((1.99794 1.5827 1.92329) (28.8493 7.7008 9.98971)))
+(3.63636 ((1.93911 0.691238 1.9865) (29.7975 5.61451 9.69556)))
+(4.0404 ((1.80141 -0.271818 1.99794) (29.9691 3.08209 9.00705)))
+(4.44444 ((1.59044 -1.20672 1.95731) (29.3597 0.304768 7.9522)))
+(4.84848 ((1.31478 -2.01664 1.86567) (27.985 -2.49677 6.5739)))
+(5.25253 ((0.985644 -2.61769 1.7254) (25.881 -5.09992 4.92822)))
+(5.65657 ((0.616418 -2.94762 1.54016) (23.1024 -7.29782 3.08209)))
+(6.06061 ((0.22212 -2.97226 1.31478) (19.7217 -8.91584 1.1106)))
+(6.46465 ((-0.181212 -2.68905 1.05513) (15.827 -9.82541 -0.906061)))
+(6.86869 ((-0.577174 -2.12733 0.767988) (11.5198 -9.95425 -2.88587)))
+(7.27273 ((-0.94966 -1.34528 0.460825) (6.91238 -9.29213 -4.7483)))
+(7.67677 ((-1.28352 -0.42389 0.141652) (2.12479 -7.89165 -6.4176)))
+(8.08081 ((-1.56518 0.541401 -0.181212) (-2.71818 -5.8641 -7.82588)))
+(8.48485 ((-1.78317 1.45062 -0.499354) (-7.49031 -3.37059 -8.91584)))
+(8.88889 ((-1.92863 2.20959 -0.804481) (-12.0672 -0.609253 -9.64317)))
+(9.29293 ((-1.99566 2.73971 -1.08864) (-16.3296 2.20049 -9.97828)))
+(9.69697 ((-1.98151 2.98607 -1.34443) (-20.1664 4.83539 -9.90753)))
+(10.101 ((-1.88676 2.92315 -1.56518) (-23.4776 7.08607 -9.43381)))
+(10.5051 ((-1.71528 2.55748 -1.74513) (-26.1769 8.77369 -8.57639)))
+(10.9091 ((-1.47403 1.92692 -1.8796) (-28.194 9.76415 -7.37013)))
+(11.3131 ((-1.17282 1.09679 -1.96508) (-29.4762 9.97875 -5.8641)))
+(11.7172 ((-0.823912 0.153055 -1.99935) (-29.9902 9.40043 -4.11956)))
+(12.1212 ((-0.441492 -0.806529 -1.98151) (-29.7226 8.07517 -2.20746)))
+(12.5253 ((-0.0411152 -1.68258 -1.91202) (-28.6803 6.10824 -0.205576)))
+(12.9293 ((0.360934 -2.38436 -1.7927) (-26.8905 3.65596 1.80467)))
+(13.3333 ((0.748302 -2.83919 -1.62666) (-24.3999 0.913172 3.74151)))
+(13.7374 ((1.10523 -2.99995 -1.41822) (-21.2733 -1.90217 5.52617)))
+(14.1414 ((1.41721 -2.85 -1.17282) (-17.5923 -4.56637 7.08607)))
+(14.5455 ((1.67155 -2.40487 -0.896852) (-13.4528 -6.86773 8.35775)))
+(14.9495 ((1.8579 -1.71066 -0.597509) (-8.96264 -8.62338 9.28948)))
+(15.3535 ((1.96868 -0.839275 -0.282593) (-4.2389 -9.69381 9.84339)))
+(15.7576 ((1.99938 0.119039 0.0396874) (0.595311 -9.99397 9.99692)))
+(16.1616 ((1.94877 1.06502 0.360934) (5.41401 -9.50001 9.74385)))
+(16.5657 ((1.81889 1.9007 0.672773) (10.0916 -8.25118 9.09446)))
+(16.9697 ((1.61503 2.53952 0.967078) (14.5062 -6.34671 8.07517)))
+(17.3737 ((1.34549 2.91531 1.23618) (18.5427 -3.93793 6.72743)))
+(17.7778 ((1.02121 2.98915 1.47306) (22.0959 -1.21624 5.10606)))
+(18.1818 ((0.655401 2.75341 1.67155) (25.0732 1.60209 3.27701)))
+(18.5859 ((0.262934 2.23248 1.82647) (27.3971 4.29312 1.31467)))
+(18.9899 ((-0.140228 1.48033 1.93379) (29.0069 6.64301 -0.70114)))
+(19.3939 ((-0.537686 0.574858 1.99071) (29.8607 8.46506 -2.68843)))
+(19.798 ((-0.913275 -0.390153 1.99575) (29.9362 9.61447 -4.56637)))
+(20.202 ((-1.25172 -1.31476 1.94877) (29.2315 9.99991 -6.25859)))
+(20.6061 ((-1.53925 -2.10319 1.851) (27.765 9.59076 -7.69624)))
+(21.0101 ((-1.76417 -2.67378 1.70499) (25.5748 8.41953 -8.82086)))
+(21.4141 ((-1.91734 -2.96745 1.51454) (22.7181 6.57928 -9.58671)))
+(21.8182 ((-1.99253 -2.95377 1.28462) (19.2692 4.21624 -9.96263)))
+(22.2222 ((-1.98667 -2.63416 1.02121) (15.3182 1.51818 -9.93333)))
+(22.6263 ((-1.9 -2.04172 0.731192) (10.9679 -1.30051 -9.50001)))
+(23.0303 ((-1.73606 -1.23782 0.422115) (6.33173 -4.01587 -8.68029)))
+(23.4343 ((-1.5015 -0.305712 0.102037) (1.53055 -6.41212 -7.50751)))
+(23.8384 ((-1.20588 0.658059 -0.220701) (-3.31051 -8.29887 -6.02938)))
+(24.2424 ((-0.861202 1.55367 -0.537686) (-8.06529 -9.52619 -4.30601)))
+(24.6465 ((-0.4815 2.28837 -0.840658) (-12.6099 -9.99656 -2.4075)))
+(25.0505 ((-0.082213 2.78605 -1.12172) (-16.8258 -9.6726 -0.411065)))
+(25.4545 ((0.320417 2.99518 -1.37355) (-20.6032 -8.58006 1.60209)))
+(25.8586 ((0.710015 2.89408 -1.58957) (-23.8436 -6.80574 3.55008)))
+(26.2626 ((1.07073 2.49324 -1.76417) (-26.4626 -4.49064 5.35367)))
+(26.6667 ((1.3879 1.83417 -1.89279) (-28.3919 -1.81871 6.93952)))
+(27.0707 ((1.64862 0.985126 -1.97208) (-29.5812 0.997727 8.2431)))
+(27.4747 ((1.84228 0.0340511 -1.99997) (-29.9995 3.73489 9.21142)))
+(27.8788 ((1.96101 -0.92055 -1.97573) (-29.636 6.17528 9.80507)))
+(28.2828 ((1.99998 -1.77981 -1.9) (-28.5 8.12498 9.99991)))
+(28.6869 ((1.9576 -2.45473 -1.77475) (-26.6213 9.42907 9.78802)))
+(29.0909 ((1.8356 -2.8754 -1.60325) (-24.0487 9.98392 9.17802)))
+(29.4949 ((1.63894 -2.99826 -1.38996) (-20.8494 9.74545 8.19472)))
+(29.899 ((1.37562 -2.81059 -1.14044) (-17.1066 8.73261 6.8781)))
+(30.303 ((1.05635 -2.33181 -0.861202) (-12.918 7.02588 5.28174)))
+(30.7071 ((0.694108 -1.61153 -0.559517) (-8.39275 4.76086 3.47054)))
+(31.1111 ((0.303637 -0.724328 -0.243249) (-3.64873 2.11755 1.51818)))
+(31.5152 ((-0.0991843 0.23789 0.0793591) (1.19039 -0.694017 -0.495921)))
+(31.9192 ((-0.497971 1.17547 0.399899) (5.99848 -3.45044 -2.48986)))
+(32.3232 ((-0.876504 1.9913 0.710015) (10.6502 -5.93269 -4.38252)))
+(32.7273 ((-1.21939 2.60089 1.00163) (15.0244 -7.94353 -6.09693)))
+(33.1313 ((-1.51267 2.9411 1.26713) (19.007 -9.32318 -7.56336)))
+(33.5354 ((-1.74443 2.97669 1.49961) (22.4942 -9.96201 -8.72215)))
+(33.9394 ((-1.90524 2.70397 1.69301) (25.3952 -9.80925 -9.52619)))
+(34.3434 ((-1.98855 2.1512 1.84228) (27.6342 -8.87705 -9.94276)))
+(34.7475 ((-1.99099 1.37563 1.94354) (29.1531 -7.23948 -9.95493)))
+(35.1515 ((-1.91244 0.457572 1.99414) (29.9121 -5.02667 -9.56219)))
+(35.5556 ((-1.75611 -0.507874 1.99277) (29.8915 -2.41443 -8.78053)))
+(35.9596 ((-1.52835 -1.42072 1.93946) (29.0919 0.389661 -7.64173)))
+(36.3636 ((-1.23842 -2.18642 1.8356) (27.5341 3.16279 -6.19211)))
+(36.7677 ((-0.898128 -2.72566 1.68391) (25.2586 5.6846 -4.49064)))
+(37.1717 ((-0.521304 -2.9826 1.48832) (22.3248 7.75471 -2.60652)))
+(37.5758 ((-0.123276 -2.93062 1.25394) (18.8092 9.20863 -0.61638)))
+(37.9798 ((0.279766 -2.57512 0.986886) (14.8033 9.93084 1.39883)))
+(38.3838 ((0.671428 -1.9529 0.694108) (10.4116 9.86394 3.35714)))
+(38.7879 ((1.03578 -1.12841 0.383239) (5.74858 9.01325 5.17891)))
+(39.1919 ((1.35801 -0.187052 0.0623811) (0.935716 7.44637 6.79003)))
+(39.596 ((1.625 0.77368 -0.260102) (-3.90153 5.2878 8.12498)))
+(40 ((1.82589 1.65428 -0.575807) (-8.6371 2.70906 9.12945)))
+)
+
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/RASProperties b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/RASProperties
new file mode 100644
index 0000000000000000000000000000000000000000..ac1efb34c5d460ae6483a045c147312455969903
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/RASProperties
@@ -0,0 +1,173 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      RASProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+// RASModel kEpsilon;
+RASModel laminar;
+
+turbulence      off;
+
+laminarCoeffs
+{
+}
+
+kEpsilonCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+RNGkEpsilonCoeffs
+{
+    Cmu              0.0845;
+    C1               1.42;
+    C2               1.68;
+    alphak           1.39;
+    alphaEps         1.39;
+    eta0             4.38;
+    beta             0.012;
+}
+
+NonlinearKEShihCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76932;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+LienCubicKECoeffs
+{
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+}
+
+QZetaCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaZeta        0.76923;
+    anisotropic     no;
+}
+
+LaunderSharmaKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LamBremhorstKECoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphaEps         0.76923;
+}
+
+LienCubicKELowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    A1               1.25;
+    A2               1000;
+    Ctau1            -4;
+    Ctau2            13;
+    Ctau3            -2;
+    alphaKsi         0.9;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LienLeschzinerLowReCoeffs
+{
+    Cmu              0.09;
+    C1               1.44;
+    C2               1.92;
+    alphak           1;
+    alphaEps         0.76923;
+    Am               0.016;
+    Aepsilon         0.263;
+    Amu              0.00222;
+}
+
+LRRCoeffs
+{
+    Cmu              0.09;
+    Clrr1            1.8;
+    Clrr2            0.6;
+    C1               1.44;
+    C2               1.92;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+}
+
+LaunderGibsonRSTMCoeffs
+{
+    Cmu              0.09;
+    Clg1             1.8;
+    Clg2             0.6;
+    C1               1.44;
+    C2               1.92;
+    C1Ref            0.5;
+    C2Ref            0.3;
+    Cs               0.25;
+    Ceps             0.15;
+    alphaEps         0.76923;
+    alphaR           1.22;
+}
+
+SpalartAllmarasCoeffs
+{
+    alphaNut         1.5;
+    Cb1              0.1355;
+    Cb2              0.622;
+    Cw2              0.3;
+    Cw3              2;
+    Cv1              7.1;
+    Cv2              5.0;
+}
+
+wallFunctionCoeffs
+{
+    kappa            0.4187;
+    E                9;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/dynamicMeshDict b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/dynamicMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..56eb2294e88b288eff3d7f4f8668a2302f03b6ba
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/dynamicMeshDict
@@ -0,0 +1,42 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  1.4                                   |
+|   \\  /    A nd           | Web:      http://www.openfoam.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+
+FoamFile
+{
+    version         2.0;
+    format          ascii;
+
+    root            "";
+    case            "";
+    instance        "";
+    local           "";
+
+    class           dictionary;
+    object          motionProperties;
+}
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dynamicFvMesh solidBodyMotionFvMesh;
+
+solidBodyMotionFvMeshCoeffs
+{
+    solidBodyMotionFunction SKA;
+
+    SKACoeffs
+    {
+        // Centre of gravity
+        CofG        (0 0 0);
+
+        // Time data file name
+        timeDataFileName "constant/6DoF.dat";
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/environmentalProperties b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/environmentalProperties
new file mode 100644
index 0000000000000000000000000000000000000000..40232c0c406c02d21a4ae29a31f702bbf84c6214
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/environmentalProperties
@@ -0,0 +1,19 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      environmentalProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+g               g [0 1 -2 0 0 0 0] (0 0 -9.81);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict
new file mode 100644
index 0000000000000000000000000000000000000000..0d21d111481f4479c9f59f540e7962d4a65e3e4c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict
@@ -0,0 +1,137 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+       // Length of tank (x-direction)
+       // Breadth of tank (y-direction)
+       // Depth of tank (z-direction)
+
+      // Depth to the top (height) of lower chamfer
+     // Height of upper chamfer
+
+ // Angle of lower chamfer to the horizontal
+ // Angle of upper chamfer to the horizontal
+
+  // Centre of gravity in y-direction
+         // Centre of gravity in z-direction
+
+      // Number of cells in the length (1 for 2D)
+      // Number of cells in the breadth
+     // Number of cells in the height of the lower champfer
+      // Number of cells in the height between the chamfers
+    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+ // Breadth to the top (height) of lower chamfer
+ // Breadth of upper chamfer
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (-10 -15 -10.0) // Vertex bllcb = 0 
+    (-10 -20 -5)  // Vertex bllc = 1 
+    (-10 -20 10)  // Vertex bluc = 2 
+    (-10 -10 20) // Vertex bluct = 3 
+    (-10 15 -10.0) // Vertex brlcb = 4 
+    (-10 20 -5)  // Vertex brlc = 5 
+    (-10 20 10)  // Vertex bruc = 6 
+    (-10 10 20) // Vertex bruct = 7 
+
+    (10 -15 -10.0) // Vertex fllcb = 8 
+    (10 -20 -5)  // Vertex fllc = 9 
+    (10 -20 10)  // Vertex fluc = 10 
+    (10 -10 20) // Vertex fluct = 11 
+    (10 15 -10.0) // Vertex frlcb = 12 
+    (10 20 -5)  // Vertex frlc = 13 
+    (10 20 10)  // Vertex fruc = 14 
+    (10 10 20) // Vertex fruct = 15 
+);
+
+blocks
+(
+    // block0
+    hex (0 4 5 1 8 12 13 9)
+    (40 6 19)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex (1 5 6 2 9 13 14 10)
+    (40 16 19)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex (2 6 7 3 10 14 15 11)
+    (40 12 19)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        (0 4 12 8)
+        (4 5 13 12)
+        (5 6 14 13)
+        (6 7 15 14)
+        (7 3 11 15)
+        (3 2 10 11)
+        (2 1 9 10)
+        (1 0 8 9)
+        (8 12 13 9)
+        (9 13 14 10)
+        (10 14 15 11)
+        (0 1 5 4)
+        (1 2 6 5)
+        (2 3 7 6)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4 b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4
new file mode 100644
index 0000000000000000000000000000000000000000..5e355fd7025a748a668cd3d55bfe9bd984c78869
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/blockMeshDict.m4
@@ -0,0 +1,137 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      blockMeshDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// General m4 macros
+
+changecom(//)changequote([,])
+define(calc, [esyscmd(perl -e 'use Math::Trig; use POSIX; printf ($1)')])
+define(VCOUNT, 0)
+define(vlabel, [[// ]Vertex $1 = VCOUNT define($1, VCOUNT)define([VCOUNT], incr(VCOUNT))])
+
+define(hex2D, hex (b$1 b$2 b$3 b$4 f$1 f$2 f$3 f$4))
+define(quad2D, (b$1 b$2 f$2 f$1))
+define(frontQuad, (f$1 f$2 f$3 f$4))
+define(backQuad, (b$1 b$4 b$3 b$2))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// User-defined parameters
+
+convertToMeters 1;
+
+define(l, 20)       // Length of tank (x-direction)
+define(b, 40)       // Breadth of tank (y-direction)
+define(h, 30)       // Depth of tank (z-direction)
+
+define(hlc, 5)      // Depth to the top (height) of lower chamfer
+define(huc, 10)     // Height of upper chamfer
+
+define(thetalc, 45) // Angle of lower chamfer to the horizontal
+define(thetauc, 45) // Angle of upper chamfer to the horizontal
+
+define(CofGy, calc(b/2.0))  // Centre of gravity in y-direction
+define(CofGz, 10.0)         // Centre of gravity in z-direction
+
+define(Nl, 19)      // Number of cells in the length (1 for 2D)
+define(Nb, 40)      // Number of cells in the breadth
+define(Nhlc, 6)     // Number of cells in the height of the lower champfer
+define(Nh, 16)      // Number of cells in the height between the chamfers
+define(Nhuc, 12)    // Number of cells in the height of the upper champfer
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Derived parameters
+
+define(blc, calc(hlc/tan(deg2rad(thetalc)))) // Breadth to the top (height) of lower chamfer
+define(buc, calc(huc/tan(deg2rad(thetauc)))) // Breadth of upper chamfer
+
+define(Yl, -CofGy)
+define(Yllc, calc(Yl + blc))
+define(Yluc, calc(Yl + buc))
+
+define(Yr, calc(Yl + b))
+define(Yrlc, calc(Yr - blc))
+define(Yruc, calc(Yr - buc))
+
+define(Zb, -CofGz)
+define(Zlc, calc(Zb + hlc))
+define(Zt, calc(Zb + h))
+define(Zuc, calc(Zt - huc))
+
+define(Xf, calc(l/2.0))
+define(Xb, calc(Xf - l))
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Parametric description
+
+vertices
+(
+    (Xb Yllc Zb) vlabel(bllcb)
+    (Xb Yl Zlc)  vlabel(bllc)
+    (Xb Yl Zuc)  vlabel(bluc)
+    (Xb Yluc Zt) vlabel(bluct)
+    (Xb Yrlc Zb) vlabel(brlcb)
+    (Xb Yr Zlc)  vlabel(brlc)
+    (Xb Yr Zuc)  vlabel(bruc)
+    (Xb Yruc Zt) vlabel(bruct)
+
+    (Xf Yllc Zb) vlabel(fllcb)
+    (Xf Yl Zlc)  vlabel(fllc)
+    (Xf Yl Zuc)  vlabel(fluc)
+    (Xf Yluc Zt) vlabel(fluct)
+    (Xf Yrlc Zb) vlabel(frlcb)
+    (Xf Yr Zlc)  vlabel(frlc)
+    (Xf Yr Zuc)  vlabel(fruc)
+    (Xf Yruc Zt) vlabel(fruct)
+);
+
+blocks
+(
+    // block0
+    hex2D(llcb, rlcb, rlc, llc)
+    (Nb Nhlc Nl)
+    simpleGrading (1 1 1)
+
+    // block1
+    hex2D(llc, rlc, ruc, luc)
+    (Nb Nh Nl)
+    simpleGrading (1 1 1)
+
+    // block2
+    hex2D(luc, ruc, ruct, luct)
+    (Nb Nhuc Nl)
+    simpleGrading (1 1 1)
+);
+
+patches
+(
+    patch walls
+    (
+        quad2D(llcb, rlcb)
+        quad2D(rlcb, rlc)
+        quad2D(rlc, ruc)
+        quad2D(ruc, ruct)
+        quad2D(ruct, luct)
+        quad2D(luct, luc)
+        quad2D(luc, llc)
+        quad2D(llc, llcb)
+        frontQuad(llcb, rlcb, rlc, llc)
+        frontQuad(llc, rlc, ruc, luc)
+        frontQuad(luc, ruc, ruct, luct)
+        backQuad(llcb, rlcb, rlc, llc)
+        backQuad(llc, rlc, ruc, luc)
+        backQuad(luc, ruc, ruct, luct)
+    )
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/boundary b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..28068f37d475c1adafedec2ee7c20e8de8d7df32
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/polyMesh/boundary
@@ -0,0 +1,28 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+1
+(
+    walls
+    {
+        type            patch;
+        nFaces          5532;
+        startFace       74754;
+    }
+)
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/transportProperties b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/transportProperties
new file mode 100644
index 0000000000000000000000000000000000000000..c20854a9031a956ad8bc154b0a4ae87375add730
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/constant/transportProperties
@@ -0,0 +1,33 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      transportProperties;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+phase1
+{
+    transportModel  Newtonian;
+    nu              nu  [0 2 -1 0 0 0 0] 1e-6;
+    rho             rho [1 -3 0 0 0 0 0] 998.2;
+}
+
+phase2
+{
+    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.0;
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/Make/files b/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/Make/files
new file mode 100644
index 0000000000000000000000000000000000000000..5d4b8d27128cb0d0772ff9555d68780c7006c203
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/Make/files
@@ -0,0 +1,3 @@
+gen6DoF.C
+
+EXE = $(FOAM_USER_APPBIN)/gen6DoF
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/Make/options b/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/Make/options
new file mode 100644
index 0000000000000000000000000000000000000000..fa15f124528ebfcaf279a88a73a0d7954f2e9dc1
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/Make/options
@@ -0,0 +1,5 @@
+EXE_INC = \
+    -I$(LIB_SRC)/finiteVolume/lnInclude
+
+EXE_LIBS = \
+    -lfiniteVolume
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/gen6DoF.C b/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/gen6DoF.C
new file mode 100644
index 0000000000000000000000000000000000000000..0d97918551c1b4218414e817c5e86e6f5fedd100
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/gen6DoF/gen6DoF.C
@@ -0,0 +1,97 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 1991-2008 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software; you can redistribute it and/or modify it
+    under the terms of the GNU General Public License as published by the
+    Free Software Foundation; either version 2 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, write to the Free Software Foundation,
+    Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
+
+Application
+    gen6DoF
+
+Description
+    Generate simple sinusoidal 6-DoF motion control-file.
+
+\*---------------------------------------------------------------------------*/
+
+#include "List.H"
+#include "vector.H"
+#include "Vector2D.H"
+#include "Tuple2.H"
+#include "OFstream.H"
+
+using namespace Foam;
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Main program:
+
+int main(int argc, char *argv[])
+{
+    // End-time of the table
+    const scalar endTime = 40;
+
+    // Number of entries in the table
+    const label nTimes = 100;
+
+    // Amplitude of the translation [m]
+    const vector transAmp(2, 3, 2);
+
+    // Frequency of the translation [rad/s]
+    const vector transOmega(0.5, 0.8, 0.4);
+
+    // Amplitude of the rotation [deg]
+    const vector rotAmp(30, 10, 10);
+
+    // Frequency of the rotation [rad/s]
+    const vector rotOmega(0.4, 0.7, 0.5);
+
+    List<Tuple2<scalar,  Vector2D<vector> > > timeValues(nTimes);
+
+    forAll(timeValues, i)
+    {
+        scalar t = (endTime*i)/(nTimes - 1);
+        timeValues[i].first() = t;
+
+        timeValues[i].second()[0] = vector
+        (
+            transAmp.x()*Foam::sin(transOmega.x()*t),
+            transAmp.y()*Foam::sin(transOmega.y()*t),
+            transAmp.z()*Foam::sin(transOmega.z()*t)
+        );
+
+        timeValues[i].second()[1] = vector
+        (
+            rotAmp.x()*Foam::sin(rotOmega.x()*t),
+            rotAmp.y()*Foam::sin(rotOmega.y()*t),
+            rotAmp.z()*Foam::sin(rotOmega.z()*t)
+        );
+    }
+
+    {
+        OFstream dataFile("6DoF.dat");
+        dataFile << timeValues << endl;
+    }
+
+    Info << "End\n" << endl;
+
+    return 0;
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/system/controlDict b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..b721c9c05888ff377853556eee6154363bc8e05f
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/controlDict
@@ -0,0 +1,109 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     sloshingFoam;
+
+startFrom       startTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         40;
+
+deltaT          0.01;
+
+writeControl    adjustableRunTime;
+
+writeInterval   0.05;
+
+purgeWrite      0;
+
+writeFormat     ascii;
+
+writePrecision  6;
+
+writeCompression compressed;
+
+timeFormat      general;
+
+timePrecision   6;
+
+runTimeModifiable yes;
+
+adjustTimeStep  yes;
+
+maxCo           0.5;
+
+maxDeltaT       1;
+
+functions
+(
+    probes
+    {
+        // Type of functionObject
+        type probes;
+
+        // Name of the directory for the probe data
+        name probes;
+
+        // Locations to be probed. runTime modifiable!
+        probeLocations
+        (
+            (0 9.95 19.77)
+            (0 -9.95 19.77)
+        );
+
+        // Fields to be probed. runTime modifiable!
+        fields
+        (
+            p
+        );
+    }
+
+    /*
+    wallPressure
+    {
+        // Type of functionObject
+        type surfaces;
+
+        // Where to load it from (if not already in solver)
+        functionObjectLibs ("libsampling.so");
+
+		// Output every 10th time step
+        interval 10;
+
+        surfaceFormat raw;
+
+        fields
+        (
+            p
+        );
+
+        surfaces
+        (
+            walls
+            {
+                type            patch;
+                patchName       walls;
+                triangulate     false;
+            }
+        );
+    }
+    */
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/system/decomposeParDict b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/decomposeParDict
new file mode 100644
index 0000000000000000000000000000000000000000..d4594e09475d920c6ca71413fa457c4ec15810ac
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/decomposeParDict
@@ -0,0 +1,56 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+numberOfSubdomains 16;
+
+method          hierarchical;
+
+simpleCoeffs
+{
+    n               (2 2 1);
+    delta           0.001;
+}
+
+hierarchicalCoeffs
+{
+    n               (4 2 2);
+    delta           0.001;
+    order           xyz;
+}
+
+metisCoeffs
+{
+    processorWeights 
+    (
+        1
+        1
+        1
+        1
+    );
+}
+
+manualCoeffs
+{
+    dataFile        "";
+}
+
+distributed     no;
+
+roots           
+(
+);
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/system/fvSchemes b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/fvSchemes
new file mode 100644
index 0000000000000000000000000000000000000000..f089e4e5e6a14300b65f1deeeda14777be255c0c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/fvSchemes
@@ -0,0 +1,59 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSchemes;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+ddtSchemes
+{
+    default Euler;
+}
+
+gradSchemes
+{
+    default         Gauss linear;
+    grad(U)         Gauss linear;
+    grad(gamma)     Gauss linear;
+}
+
+divSchemes
+{
+    div(rho*phi,U)  Gauss vanLeerV;
+    div(phi,gamma)  Gauss vanLeer;
+    div(phirb,gamma) Gauss vanLeer;
+}
+
+laplacianSchemes
+{
+    default         Gauss linear corrected;
+}
+
+interpolationSchemes
+{
+    default         linear;
+}
+
+snGradSchemes
+{
+    default         corrected;
+}
+
+fluxRequired
+{
+    default         no;
+    pd;
+    pcorr;
+    gamma;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/system/fvSolution b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/fvSolution
new file mode 100644
index 0000000000000000000000000000000000000000..3aaca52375805f2de0bb55235af2d945db86e22c
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/fvSolution
@@ -0,0 +1,123 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      fvSolution;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+solvers
+{
+    pcorr PCG
+    {
+        preconditioner   GAMG
+        {
+            tolerance        1e-5;
+            relTol           0;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       0;
+            nPostSweeps      2;
+            nBottomSweeps    2;
+
+            cacheAgglomeration false;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        1e-5;
+        relTol           0;
+        maxIter          100;
+    };
+
+    pd GAMG
+    {
+        tolerance        1e-8;
+        relTol           0.01;
+
+        smoother         DIC;
+        nPreSweeps       0;
+        nPostSweeps      2;
+        nFinestSweeps    2;
+
+        cacheAgglomeration true;
+        nCellsInCoarsestLevel 10;
+        agglomerator     faceAreaPair;
+        mergeLevels      1;
+    };
+
+    pdFinal PCG
+    {
+        preconditioner GAMG
+        {
+            tolerance        2e-9;
+            relTol           0;
+
+            nVcycles         2;
+
+            smoother         DICGaussSeidel;
+            nPreSweeps       2;
+            nPostSweeps      2;
+            nFinestSweeps    2;
+
+            cacheAgglomeration true;
+            nCellsInCoarsestLevel 10;
+            agglomerator     faceAreaPair;
+            mergeLevels      1;
+        };
+
+        tolerance        2e-9;
+        relTol           0;
+        maxIter          20;
+    };
+
+    U smoothSolver
+    {
+        smoother         GaussSeidel;
+        tolerance        1e-6;
+        relTol           0;
+        nSweeps          1;
+    };
+}
+
+PISO
+{
+    momentumPredictor no;
+    nCorrectors     2;
+    nNonOrthogonalCorrectors 0;
+    nGammaCorr      1;
+    nGammaSubCycles 3;
+    cGamma          1.5;
+    correctPhi      no;
+
+    pRefProbe
+    {
+        fields
+        (
+            p
+        );
+
+        probeLocations
+        (
+            (0 0 0.15)
+        );
+    }
+
+    pRefValue      1e5;
+}
+
+relaxationFactors
+{
+    U  1.0;
+}
+
+// ************************************************************************* //
diff --git a/tutorials/interDyMFoam/sloshingTank3D6DoF/system/setFieldsDict b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/setFieldsDict
new file mode 100644
index 0000000000000000000000000000000000000000..2c881a7ba48d03bc05de5c2d82ab02c90c1928ef
--- /dev/null
+++ b/tutorials/interDyMFoam/sloshingTank3D6DoF/system/setFieldsDict
@@ -0,0 +1,35 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      setFieldsDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+defaultFieldValues
+(
+    volScalarFieldValue gamma 0
+);
+
+regions
+(
+    boxToCell
+    {
+        box (-100 -100 -100) (100 100 0);
+
+        fieldValues
+        (
+            volScalarFieldValue gamma 1
+        );
+    }
+);
+
+// ************************************************************************* //
diff --git a/tutorials/mdEquilibrationFoam/Allclean b/tutorials/mdEquilibrationFoam/Allclean
new file mode 100755
index 0000000000000000000000000000000000000000..7880b1387e0bea443782452bcd1172445f5432e1
--- /dev/null
+++ b/tutorials/mdEquilibrationFoam/Allclean
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Source tutorial clean functions
+. $WM_PROJECT_DIR/bin/tools/CleanFunctions
+
+cd periodicCube
+    rm -rf 0 > /dev/null 2>&1
+    rm Ar-Ar > /dev/null 2>&1
+    rm constant/idList
+
+    cleanCase
+cd ..
+
diff --git a/tutorials/mdEquilibrationFoam/Allrun b/tutorials/mdEquilibrationFoam/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..0c590da09a8c91a0815034deba71b3d4d681e762
--- /dev/null
+++ b/tutorials/mdEquilibrationFoam/Allrun
@@ -0,0 +1,13 @@
+#!/bin/sh
+
+# Source tutorial run functions
+. $WM_PROJECT_DIR/bin/tools/RunFunctions
+
+application="mdEquilibrationFoam"
+
+cd periodicCube
+    runApplication blockMesh
+    runApplication molConfig
+    runApplication $application
+cd ..
+
diff --git a/tutorials/mdEquilibrationFoam/periodicCube/constant/polyMesh/boundary b/tutorials/mdEquilibrationFoam/periodicCube/constant/polyMesh/boundary
new file mode 100644
index 0000000000000000000000000000000000000000..54dbb7ef4a6be0e63882c5fe42752ad8c7a3b896
--- /dev/null
+++ b/tutorials/mdEquilibrationFoam/periodicCube/constant/polyMesh/boundary
@@ -0,0 +1,43 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  dev                                   |
+|   \\  /    A nd           | Web:      http://www.OpenFOAM.org               |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       polyBoundaryMesh;
+    location    "constant/polyMesh";
+    object      boundary;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+3
+(
+    periodicX
+    {
+        type            cyclic;
+        nFaces          288;
+        startFace       4752;
+        featureCos      0.9;
+    }
+    periodicY
+    {
+        type            cyclic;
+        nFaces          288;
+        startFace       5040;
+        featureCos      0.9;
+    }
+    periodicZ
+    {
+        type            cyclic;
+        nFaces          288;
+        startFace       5328;
+        featureCos      0.9;
+    }
+)
+
+// ************************************************************************* //
diff --git a/wmake/rules/linux64Gcc42/dirToString b/wmake/rules/linux64Gcc42/dirToString
deleted file mode 100755
index 1f9e9266a6afac14ad47fa6507d0a988cbf31bbd..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linux64Gcc42/dirToString and /dev/null differ
diff --git a/wmake/rules/linux64Gcc42/wmkdep b/wmake/rules/linux64Gcc42/wmkdep
deleted file mode 100755
index 002e73dea8fc1318429203a4d6982765c3e6f01b..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linux64Gcc42/wmkdep and /dev/null differ
diff --git a/wmake/rules/linux64Icc/dirToString b/wmake/rules/linux64Icc/dirToString
deleted file mode 100755
index e58c7b3a7352e80d171d706ce53de29eb1a3c817..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linux64Icc/dirToString and /dev/null differ
diff --git a/wmake/rules/linux64Icc/wmkdep b/wmake/rules/linux64Icc/wmkdep
deleted file mode 100755
index b7653e1c7aa017d4e3796ab233df9a6028216567..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linux64Icc/wmkdep and /dev/null differ
diff --git a/wmake/rules/linuxGcc/dirToString b/wmake/rules/linuxGcc/dirToString
deleted file mode 100755
index fdcb3c3445d2a3a2839449d3ab7fb98b1a37a345..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxGcc/dirToString and /dev/null differ
diff --git a/wmake/rules/linuxGcc/wmkdep b/wmake/rules/linuxGcc/wmkdep
deleted file mode 100755
index c80fc36703955a9282993d8efdbf12a27ec2fd21..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxGcc/wmkdep and /dev/null differ
diff --git a/wmake/rules/linuxGcc42/dirToString b/wmake/rules/linuxGcc42/dirToString
deleted file mode 100755
index fdcb3c3445d2a3a2839449d3ab7fb98b1a37a345..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxGcc42/dirToString and /dev/null differ
diff --git a/wmake/rules/linuxGcc42/wmkdep b/wmake/rules/linuxGcc42/wmkdep
deleted file mode 100755
index c80fc36703955a9282993d8efdbf12a27ec2fd21..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxGcc42/wmkdep and /dev/null differ
diff --git a/wmake/rules/linuxIA64Gcc/dirToString b/wmake/rules/linuxIA64Gcc/dirToString
deleted file mode 100755
index b92e398d1bad9423d3c9f8ab94fbb8f97470ace3..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxIA64Gcc/dirToString and /dev/null differ
diff --git a/wmake/rules/linuxIA64Gcc/wmkdep b/wmake/rules/linuxIA64Gcc/wmkdep
deleted file mode 100755
index a78ea3976423804bd9b3c4d31bcff59f44bcbb4f..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxIA64Gcc/wmkdep and /dev/null differ
diff --git a/wmake/rules/linuxIA64Icc/dirToString b/wmake/rules/linuxIA64Icc/dirToString
deleted file mode 100755
index 5a96ebf8baade48ae4d0ef2e9a94004bd5776873..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxIA64Icc/dirToString and /dev/null differ
diff --git a/wmake/rules/linuxIA64Icc/wmkdep b/wmake/rules/linuxIA64Icc/wmkdep
deleted file mode 100755
index 28d1bcba3a2fadde577887e927809dc53c885e94..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxIA64Icc/wmkdep and /dev/null differ
diff --git a/wmake/rules/linuxIcc/dirToString b/wmake/rules/linuxIcc/dirToString
deleted file mode 100755
index 44215285abfed2399965c818eaf13e2a7d4ba353..0000000000000000000000000000000000000000
Binary files a/wmake/rules/linuxIcc/dirToString and /dev/null differ
diff --git a/wmake/rules/solarisGcc/dirToString b/wmake/rules/solarisGcc/dirToString
deleted file mode 100755
index 914aee149a2ca9e3cd4e90f28c1c097b6766f873..0000000000000000000000000000000000000000
Binary files a/wmake/rules/solarisGcc/dirToString and /dev/null differ
diff --git a/wmake/rules/solarisGcc/wmkdep b/wmake/rules/solarisGcc/wmkdep
deleted file mode 100755
index 24118dc007808b06fe3e635a914fa2a92fe1e49f..0000000000000000000000000000000000000000
Binary files a/wmake/rules/solarisGcc/wmkdep and /dev/null differ