diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
index b06da4f4a72e660d431c5eb0d403fc4051db3a3f..d1b9b58a7de1c71b956fa1443d74f81c192c6855 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
@@ -330,7 +330,6 @@ int main(int argc, char *argv[])
     }
 
 
-
     forAll(regionNames, regioni)
     {
         const word& regionName = regionNames[regioni];
@@ -338,13 +337,12 @@ int main(int argc, char *argv[])
 
         Info<< "\n\nDecomposing mesh " << regionName << nl << endl;
 
-
         // Determine the existing processor count directly
         label nProcs = fileHandler().nProcs(runTime.path(), regionDir);
 
-        // Get requested numberOfSubdomains. Note: have no mesh yet so
-        // cannot use decompositionModel::New
-        const label nDomains = readLabel
+        // Get requested numberOfSubdomains directly from the dictionary.
+        // Note: have no mesh yet so cannot use decompositionModel::New
+        const label nDomains = decompositionMethod::nDomains
         (
             IOdictionary
             (
@@ -362,7 +360,7 @@ int main(int argc, char *argv[])
                     ),
                     decompDictFile
                 )
-            ).lookup("numberOfSubdomains")
+            )
         );
 
         if (decomposeFieldsOnly)
diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
index cb061078b7d4f0c43ef21bcd3914c4e0173ab81d..2ad99e2ea5f1a331f733674953d337b78d52abb2 100644
--- a/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
+++ b/applications/utilities/parallelProcessing/decomposePar/decomposeParDict
@@ -15,129 +15,109 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-numberOfSubdomains  2;
+//- The total number of domains (mandatory)
+numberOfSubdomains  256;
 
+//- The decomposition method (mandatory)
+method          scotch;
+// method          hierarchical;
+// method          simple;
+// method          metis;
+// method          manual;
+// method          multiLevel;
+// method          structured;  // does 2D decomposition of structured mesh
 
-// Optional decomposition constraints
-//constraints
-//{
-//    preserveBaffles
-//    {
-//        //- Keep owner and neighbour of baffles on same processor (i.e.
-//        // keep it detectable as a baffle). Baffles are two boundary face
-//        // sharing the same points
-//        type    preserveBaffles;
-//    }
-//    preserveFaceZones
-//    {
-//        //- Keep owner and neighbour on same processor for faces in zones
-//        type    preserveFaceZones;
-//        zones   (".*");
-//    }
-//    preservePatches
-//    {
-//        //- Keep owner and neighbour on same processor for faces in patches
-//        //  (only makes sense for cyclic patches. Not suitable for e.g.
-//        //   cyclicAMI since these are not coupled on the patch level. Use
-//        //   singleProcessorFaceSets for those)
-//        type    preservePatches;
-//        patches (".*");
-//    }
-//    singleProcessorFaceSets
-//    {
-//        //- Keep all of faceSet on a single processor. This puts all cells
-//        //  connected with a point, edge or face on the same processor.
-//        //  (just having face connected cells might not guarantee a balanced
-//        //  decomposition)
-//        // The processor can be -1 (the decompositionMethod chooses the
-//        // processor for a good load balance) or explicitly provided (upsets
-//        // balance)
-//        type    singleProcessorFaceSets;
-//        singleProcessorFaceSets ((f1 -1));
-//    }
-//    refinementHistory
-//    {
-//        //- Decompose cells such that all cell originating from single cell
-//        //  end up on same processor
-//        type    refinementHistory;
-//    }
-//}
-
-
-// Deprecated form of specifying decomposition constraints:
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches. Not suitable for e.g. cyclicAMI
-//   since these are not coupled on the patch level. Use
-//   singleProcessorFaceSets for those)
-//preservePatches (cyclic_half0 cyclic_half1);
 
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
+//- Optional region-wise decomposition.
+//  Can specify a different method.
+//  The number of subdomains can be less than the top-level numberOfSubdomains.
+regions
+{
+    water
+    {
+        numberOfSubdomains 128;
+        method  metis;
+    }
 
-//- Keep owner and neighbour of baffles on same processor (i.e. keep it
-//  detectable as a baffle). Baffles are two boundary face sharing the
-//  same points.
-//preserveBaffles true;
+    ".*solid"
+    {
+        numberOfSubdomains 4;
+        method  metis;
+    }
 
+    heater
+    {
+        numberOfSubdomains 1;
+        method  none;
+    }
+}
 
 
-//- Use the volScalarField named here as a weight for each cell in the
-//  decomposition.  For example, use a particle population field to decompose
-//  for a balanced number of particles in a lagrangian simulation.
-// weightField dsmcRhoNMean;
+// Coefficients for the decomposition method are either as a
+// general "coeffs" dictionary or method-specific "<method>Coeffs".
+// For multiLevel, using multiLevelCoeffs only.
 
-method          scotch;
-//method          hierarchical;
-// method          simple;
-// method          metis;
-// method          manual;
-// method          multiLevel;
-// method          structured;  // does 2D decomposition of structured mesh
 
 multiLevelCoeffs
 {
-    // Decomposition methods to apply in turn. This is like hierarchical but
-    // fully general - every method can be used at every level.
+    // multiLevel decomposition methods to apply in turn.
+    // This is like hierarchical but fully general
+    // - every method can be used at every level.
+
+    // Only sub-dictionaries containing the keyword "method" are used.
+    //
 
     level0
     {
-        numberOfSubdomains  64;
-        //method simple;
-        //simpleCoeffs
-        //{
-        //    n           (2 1 1);
-        //    delta       0.001;
-        //}
+        numberOfSubdomains  16;
         method scotch;
     }
     level1
     {
-        numberOfSubdomains  4;
+        numberOfSubdomains  2;
         method scotch;
+        coeffs
+        {
+            n       (2 1 1);
+            delta   0.001;
+        }
     }
+    level2
+    {
+        numberOfSubdomains  8;
+        // method simple;
+        method scotch;
+    }
+}
+
+
+multiLevelCoeffs
+{
+    // Compact multiLevel specification, activated by the presence of the
+    // keywords "method" and "domains"
+
+    method  scotch;
+    domains (16 2 8);
+
+    //// Or with implicit '16' for the first level with numberOfSubdomains=256
+    //domains (2 8);
 }
 
-// Desired output
+
+
+// Other example coefficents
 
 simpleCoeffs
 {
     n           (2 1 1);
-    delta       0.001;
+    // delta       0.001;  //< default value = 0.001
 }
 
 hierarchicalCoeffs
 {
     n           (1 2 1);
-    delta       0.001;
-    order       xyz;
+    // delta       0.001;  //< default value = 0.001
+    // order       xyz;    //< default order = xyz
 }
 
 metisCoeffs
@@ -181,9 +161,17 @@ structuredCoeffs
     method      scotch;
 }
 
+
+//- Use the volScalarField named here as a weight for each cell in the
+//  decomposition.  For example, use a particle population field to decompose
+//  for a balanced number of particles in a lagrangian simulation.
+// weightField dsmcRhoNMean;
+
+
 //// Is the case distributed? Note: command-line argument -roots takes
 //// precedence
 //distributed     yes;
+//
 //// Per slave (so nProcs-1 entries) the directory above the case.
 //roots
 //(
@@ -191,4 +179,77 @@ structuredCoeffs
 //    "/tmp"
 //);
 
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+// Decomposition constraints
+
+//constraints
+//{
+//    preserveBaffles
+//    {
+//        //- Keep owner and neighbour of baffles on same processor (i.e.
+//        // keep it detectable as a baffle). Baffles are two boundary face
+//        // sharing the same points
+//        type    preserveBaffles;
+//    }
+//    preserveFaceZones
+//    {
+//        //- Keep owner and neighbour on same processor for faces in zones
+//        type    preserveFaceZones;
+//        zones   (".*");
+//    }
+//    preservePatches
+//    {
+//        //- Keep owner and neighbour on same processor for faces in patches
+//        //  (only makes sense for cyclic patches. Not suitable for e.g.
+//        //   cyclicAMI since these are not coupled on the patch level. Use
+//        //   singleProcessorFaceSets for those)
+//        type    preservePatches;
+//        patches (".*");
+//    }
+//    singleProcessorFaceSets
+//    {
+//        //- Keep all of faceSet on a single processor. This puts all cells
+//        //  connected with a point, edge or face on the same processor.
+//        //  (just having face connected cells might not guarantee a balanced
+//        //  decomposition)
+//        // The processor can be -1 (the decompositionMethod chooses the
+//        // processor for a good load balance) or explicitly provided (upsets
+//        // balance)
+//        type    singleProcessorFaceSets;
+//        singleProcessorFaceSets ((f1 -1));
+//    }
+//    refinementHistory
+//    {
+//        //- Decompose cells such that all cell originating from single cell
+//        //  end up on same processor
+//        type    refinementHistory;
+//    }
+//}
+
+
+// Deprecated form of specifying decomposition constraints:
+//- Keep owner and neighbour on same processor for faces in zones:
+// preserveFaceZones (heater solid1 solid3);
+
+//- Keep owner and neighbour on same processor for faces in patches:
+//  (makes sense only for cyclic patches. Not suitable for e.g. cyclicAMI
+//   since these are not coupled on the patch level. Use
+//   singleProcessorFaceSets for those)
+//preservePatches (cyclic_half0 cyclic_half1);
+
+//- Keep all of faceSet on a single processor. This puts all cells
+//  connected with a point, edge or face on the same processor.
+//  (just having face connected cells might not guarantee a balanced
+//  decomposition)
+// The processor can be -1 (the decompositionMethod chooses the processor
+// for a good load balance) or explicitly provided (upsets balance).
+//singleProcessorFaceSets ((f0 -1));
+
+//- Keep owner and neighbour of baffles on same processor (i.e. keep it
+//  detectable as a baffle). Baffles are two boundary face sharing the
+//  same points.
+//preserveBaffles true;
+
+
 // ************************************************************************* //
diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C
index b2a14692578501d8aa02aafa234abc3f9e7aa484..0cc795761c8dc5e593473472a017b3ddf47f2f17 100644
--- a/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C
+++ b/applications/utilities/parallelProcessing/decomposePar/domainDecomposition.C
@@ -49,10 +49,8 @@ void Foam::domainDecomposition::mark
     labelList& elementToZone
 )
 {
-    forAll(zoneElems, i)
+    for (const label pointi : zoneElems)
     {
-        label pointi = zoneElems[i];
-
         if (elementToZone[pointi] == -1)
         {
             // First occurrence
@@ -69,7 +67,6 @@ void Foam::domainDecomposition::mark
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-// from components
 Foam::domainDecomposition::domainDecomposition
 (
     const IOobject& io,
@@ -98,13 +95,13 @@ Foam::domainDecomposition::domainDecomposition
     decompDictFile_(decompDictFile),
     nProcs_
     (
-        readInt
+        decompositionMethod::nDomains
         (
             decompositionModel::New
             (
                 *this,
                 decompDictFile
-            ).lookup("numberOfSubdomains")
+            )
         )
     ),
     distributed_(false),
@@ -831,11 +828,18 @@ bool Foam::domainDecomposition::writeDecomposition(const bool decomposeSets)
 
 
         // Statistics
+        Info<< nl << "Processor " << proci;
+
+        if (procMesh.nCells())
+        {
+            Info<< nl << "    ";
+        }
+        else
+        {
+            Info<< ": ";
+        }
 
-        Info<< endl
-            << "Processor " << proci << nl
-            << "    Number of cells = " << procMesh.nCells()
-            << endl;
+        Info<< "Number of cells = " << procMesh.nCells() << nl;
 
         maxProcCells = max(maxProcCells, procMesh.nCells());
 
@@ -865,9 +869,12 @@ bool Foam::domainDecomposition::writeDecomposition(const bool decomposeSets)
             }
         }
 
-        Info<< "    Number of processor patches = " << nProcPatches << nl
-            << "    Number of processor faces = " << nProcFaces << nl
-            << "    Number of boundary faces = " << nBoundaryFaces << endl;
+        if (procMesh.nCells() && (nBoundaryFaces || nProcFaces))
+        {
+            Info<< "    Number of processor patches = " << nProcPatches << nl
+                << "    Number of processor faces = " << nProcFaces << nl
+                << "    Number of boundary faces = " << nBoundaryFaces << nl;
+        }
 
         totProcFaces += nProcFaces;
         totProcPatches += nProcPatches;
diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C b/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C
index 371f44f73ef10d3944abe407d4f6617418aebea9..472077a709a2e9405c63847df866054a24d52f65 100644
--- a/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C
+++ b/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C
@@ -46,11 +46,11 @@ void Foam::domainDecomposition::distributeCells()
         decompDictFile_
     );
 
+    word weightName;
     scalarField cellWeights;
-    if (method.found("weightField"))
-    {
-        word weightName = method.lookup("weightField");
 
+    if (method.readIfPresent("weightField", weightName))
+    {
         volScalarField weights
         (
             IOobject
diff --git a/applications/utilities/preProcessing/mapFields/mapFields.C b/applications/utilities/preProcessing/mapFields/mapFields.C
index 93ba31641263423aab6392dd08aa69c20c355c71..be6261d3f0b1208a9ca186f5dceba542e8bc2c90 100644
--- a/applications/utilities/preProcessing/mapFields/mapFields.C
+++ b/applications/utilities/preProcessing/mapFields/mapFields.C
@@ -58,7 +58,7 @@ int readNumProcs
         dictFile = dictFile / dictName;
     }
 
-    return readInt
+    return decompositionMethod::nDomains
     (
         IOdictionary
         (
@@ -75,7 +75,7 @@ int readNumProcs
                 ),
                 dictFile
             )
-        ).lookup("numberOfSubdomains")
+        )
     );
 }
 
diff --git a/src/OpenFOAM/meshes/polyMesh/polyMesh.C b/src/OpenFOAM/meshes/polyMesh/polyMesh.C
index 6c44d9e8d1b42269e9ba9eb8b302404d46388ed6..de8d164ef75e2047a484746b4c9e908a5e7fc8d7 100644
--- a/src/OpenFOAM/meshes/polyMesh/polyMesh.C
+++ b/src/OpenFOAM/meshes/polyMesh/polyMesh.C
@@ -325,15 +325,21 @@ Foam::polyMesh::polyMesh(const IOobject& io)
     boundary_.calcGeometry();
 
     // Warn if global empty mesh
-    if (returnReduce(nPoints(), sumOp<label>()) == 0)
+    if (returnReduce(boundary_.empty(), orOp<bool>()))
     {
         WarningInFunction
-            << "no points in mesh" << endl;
-    }
-    if (returnReduce(nCells(), sumOp<label>()) == 0)
-    {
-        WarningInFunction
-            << "no cells in mesh" << endl;
+            << "mesh missing boundary on one or more domains" << endl;
+
+        if (returnReduce(nPoints(), sumOp<label>()) == 0)
+        {
+            WarningInFunction
+                << "no points in mesh" << endl;
+        }
+        if (returnReduce(nCells(), sumOp<label>()) == 0)
+        {
+            WarningInFunction
+                << "no cells in mesh" << endl;
+        }
     }
 
     // Initialise demand-driven data
diff --git a/src/dummyThirdParty/kahipDecomp/dummyKahipDecomp.C b/src/dummyThirdParty/kahipDecomp/dummyKahipDecomp.C
index 96e0bdc16b94a0f21116f0e6ad9e91f3903851d4..6e147e26265215634ce1dfab3b977cbfbf5c64b2 100644
--- a/src/dummyThirdParty/kahipDecomp/dummyKahipDecomp.C
+++ b/src/dummyThirdParty/kahipDecomp/dummyKahipDecomp.C
@@ -73,10 +73,20 @@ Foam::label Foam::kahipDecomp::decomposeSerial
 
 Foam::kahipDecomp::kahipDecomp
 (
-    const dictionary& decompositionDict
+    const dictionary& decompDict
 )
 :
-    metisLikeDecomp(decompositionDict)
+    metisLikeDecomp("kahip", decompDict)
+{}
+
+
+Foam::kahipDecomp::kahipDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+:
+    metisLikeDecomp("kahip", decompDict, regionName)
 {}
 
 
diff --git a/src/dummyThirdParty/metisDecomp/dummyMetisDecomp.C b/src/dummyThirdParty/metisDecomp/dummyMetisDecomp.C
index 3743cc1bae6d85c61ae7152cacf26f133e5d99ee..c5f8e3ba9a5da9a953c481f052501a41e9d18cee 100644
--- a/src/dummyThirdParty/metisDecomp/dummyMetisDecomp.C
+++ b/src/dummyThirdParty/metisDecomp/dummyMetisDecomp.C
@@ -73,10 +73,20 @@ Foam::label Foam::metisDecomp::decomposeSerial
 
 Foam::metisDecomp::metisDecomp
 (
-    const dictionary& decompositionDict
+    const dictionary& decompDict
 )
 :
-    metisLikeDecomp(decompositionDict)
+    metisLikeDecomp("metis", decompDict)
+{}
+
+
+Foam::metisDecomp::metisDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+:
+    metisLikeDecomp("metis", decompDict, regionName)
 {}
 
 
diff --git a/src/dummyThirdParty/ptscotchDecomp/dummyPtscotchDecomp.C b/src/dummyThirdParty/ptscotchDecomp/dummyPtscotchDecomp.C
index decacb6c10c33a511f0d9f5e62ba0a232e5240e5..5a756b477ffa20cfda8911ac60dca665faebaf8d 100644
--- a/src/dummyThirdParty/ptscotchDecomp/dummyPtscotchDecomp.C
+++ b/src/dummyThirdParty/ptscotchDecomp/dummyPtscotchDecomp.C
@@ -98,10 +98,22 @@ Foam::label Foam::ptscotchDecomp::decompose
 
 Foam::ptscotchDecomp::ptscotchDecomp
 (
-    const dictionary& decompositionDict
+    const dictionary& decompDict
 )
 :
-    decompositionMethod(decompositionDict)
+    decompositionMethod(decompDict),
+    coeffsDict_(dictionary::null)
+{}
+
+
+Foam::ptscotchDecomp::ptscotchDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+:
+    decompositionMethod(decompDict, regionName),
+    coeffsDict_(dictionary::null)
 {}
 
 
diff --git a/src/dummyThirdParty/scotchDecomp/dummyScotchDecomp.C b/src/dummyThirdParty/scotchDecomp/dummyScotchDecomp.C
index 582c770253787518931eb78edac5df564c14a6f7..9aa8e20ec0fc0f59e28c9f54d909736f899bcc30 100644
--- a/src/dummyThirdParty/scotchDecomp/dummyScotchDecomp.C
+++ b/src/dummyThirdParty/scotchDecomp/dummyScotchDecomp.C
@@ -80,10 +80,20 @@ Foam::label Foam::scotchDecomp::decomposeSerial
 
 Foam::scotchDecomp::scotchDecomp
 (
-    const dictionary& decompositionDict
+    const dictionary& decompDict
 )
 :
-    metisLikeDecomp(decompositionDict)
+    metisLikeDecomp("scotch", decompDict)
+{}
+
+
+Foam::scotchDecomp::scotchDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+:
+    metisLikeDecomp("scotch", decompDict, regionName)
 {}
 
 
diff --git a/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C b/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C
index e1c8a08e64d28814dc4273c964bbf3edb0e57685..3c3edde47d70c5667dc7d0de676ef669ad9ee965 100644
--- a/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C
+++ b/src/dynamicMesh/polyMeshAdder/faceCoupleInfo.C
@@ -886,6 +886,15 @@ void Foam::faceCoupleInfo::findPerfectMatchingFaces
     labelList& mesh1Faces
 )
 {
+    // Quick check: skip face matching if either mesh has no faces
+    if (!mesh0.nFaces() || !mesh1.nFaces())
+    {
+        mesh0Faces.clear();
+        mesh1Faces.clear();
+
+        return;
+    }
+
     // Face centres of external faces (without invoking
     // mesh.faceCentres since mesh might have been clearedOut)
 
diff --git a/src/parallel/decompose/decompose/decompositionModel.C b/src/parallel/decompose/decompose/decompositionModel.C
index dbcb023af199ebf01bd72affd13257ddd38735e0..8f156c64b5536f0527e49c1efee03acf0f58ea54 100644
--- a/src/parallel/decompose/decompose/decompositionModel.C
+++ b/src/parallel/decompose/decompose/decompositionModel.C
@@ -34,6 +34,7 @@ namespace Foam
     defineTypeNameAndDebug(decompositionModel, 0);
 }
 
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::decompositionModel::decompositionModel
diff --git a/src/parallel/decompose/decompose/decompositionModel.H b/src/parallel/decompose/decompose/decompositionModel.H
index 7ed6bd3fa2b89f69168fc240a5e6681d92bbdb47..2cbfa4d2496648d11036385815ed70977b2e3455 100644
--- a/src/parallel/decompose/decompose/decompositionModel.H
+++ b/src/parallel/decompose/decompose/decompositionModel.H
@@ -75,14 +75,14 @@ public:
 
     // Selectors
 
-        //- Read (optionallly from absolute path) & register on mesh
+        //- Read (optionally from absolute path) & register on mesh
         static const decompositionModel& New
         (
             const polyMesh& mesh,
             const fileName& decompDictFile = ""
         );
 
-        //- Read (optionallly from supplied dictionary) & register on mesh
+        //- Read (optionally from supplied dictionary) & register on mesh
         static const decompositionModel& New
         (
             const polyMesh& mesh,
@@ -94,42 +94,51 @@ public:
     // Constructors
 
         //- Construct from typeName or optional path to controlDictionary
-        decompositionModel(const polyMesh&, const fileName& = "");
+        decompositionModel
+        (
+            const polyMesh& mesh,
+            const fileName& decompDictFile = ""
+        );
 
 
         //- Construct from typeName or optional path to controlDictionary
         decompositionModel
         (
-            const polyMesh&,
+            const polyMesh& mesh,
             const dictionary& dict,
-            const fileName& = ""
+            const fileName& decompDictFile = ""
         );
 
 
-    // Member functions
+    // Member Functions
 
         decompositionMethod& decomposer() const
         {
             if (!decomposerPtr_.valid())
             {
-                decomposerPtr_ = decompositionMethod::New(*this);
+                decomposerPtr_ =
+                    decompositionMethod::New
+                    (
+                        *this,
+                        this->mesh().name()  // Name of mesh region
+                    );
             }
             return decomposerPtr_();
         }
 
         //- Helper: return IOobject with optionally absolute path provided
-        static IOobject selectIO(const IOobject&, const fileName&);
+        static IOobject selectIO(const IOobject& io, const fileName& f);
 
 
-        // UpdateableMeshObject
+      // UpdateableMeshObject
 
-            virtual bool movePoints()
-            {
-                return false;
-            }
+        virtual bool movePoints()
+        {
+            return false;
+        }
 
-            virtual void updateMesh(const mapPolyMesh&)
-            {}
+        virtual void updateMesh(const mapPolyMesh&)
+        {}
 
 };
 
diff --git a/src/parallel/decompose/decomposition.dox b/src/parallel/decompose/decomposition.dox
new file mode 100644
index 0000000000000000000000000000000000000000..0256b48e4a46023fabbe667fb3c3bbf8f8b67f05
--- /dev/null
+++ b/src/parallel/decompose/decomposition.dox
@@ -0,0 +1,282 @@
+/*---------------------------------------------------------------------------*\
+  =========                 |
+  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+   \\    /   O peration     |
+    \\  /    A nd           | Copyright (C) 2017 OpenCFD Ltd.
+     \\/     M anipulation  |
+-------------------------------------------------------------------------------
+License
+    This file is part of OpenFOAM.
+
+    OpenFOAM is free software: you can redistribute it and/or modify it under
+    the terms of the GNU General Public License as published by the Free
+    Software Foundation, either version 3 of the License, or (at your option)
+    any later version.
+
+    OpenFOAM is distributed in the hope that it will be useful, but WITHOUT ANY
+    WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
+    FOR A PARTICULAR PURPOSE.  See the GNU General Public License for more
+    details.
+
+    You should have received a copy of the GNU General Public License along with
+    OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
+
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+\page domainDecomposition Domain decomposition
+
+\section secIntroduction Introduction
+
+When running a simulation in parallel, the geometry must first be decomposed
+(segmented) into individual geometries for each MPI process. These separate
+geometries are \a connected together with special processor boundary patches.
+The processor-specific \c constant/polyMesh/boundary files will contain this
+type of entry:
+
+\verbatim
+    procBoundary0to14
+    {
+        type            processor;
+        inGroups        1(processor);
+        nFaces          131;
+        startFace       34983;
+        matchTolerance  0.0001;
+        transform       unknown;
+        myProcNo        0;
+        neighbProcNo    14;
+    }
+\endverbatim
+
+The decomposePar utility is a commonly used method to decompose domains
+and subsequently distribute the fields.
+The reconstructPar and reconstructParMesh utilities
+can be used to reconstruct a single domain from the processor sub-domains.
+
+\section secDecomposeParDict The decomposeParDict
+
+The \c decomposeParDict is required by decompose utilities and for any solvers
+or utilities running in parallel. It is normally located in the simulation
+\c system directory. The <tt>-decomposeParDict name</tt> command-line option
+can be used to specify an alternate file.
+
+The \a numberOfSubdomains entry is mandatory:
+\verbatim
+    numberOfSubdomains  <int>;
+\endverbatim
+
+The \a method entry is required for the decomposePar utility and specifies
+the decomposition method type:
+\verbatim
+    method  <word>;
+\endverbatim
+The \a method entry is generally not required when running a simulation.
+
+OpenFOAM offers a variety of decomposition methods and interfaces to external,
+third-party decomposition routines. The types of decomposition methods
+available will thus depend on your particular installation.
+
+\table
+    Name                | Class
+    none                | #Foam::noDecomp
+    manual              | #Foam::manualDecomp
+    simple              | #Foam::simpleGeomDecomp
+    hierarchical        | #Foam::hierarchGeomDecomp
+    kahip               | #Foam::kahipDecomp
+    metis               | #Foam::metisDecomp
+    scotch              | #Foam::scotchDecomp
+    structured          | #Foam::structuredDecomp
+    multiLevel          | #Foam::multiLevelDecomp
+\endtable
+
+If a decomposition method requires any additional configuration controls,
+these are specified either within in a generic \c coeffs dictionary that
+or a method-specific version. For example,
+
+\verbatim
+    method  hierarchical;
+
+    coeffs
+    {
+        n   (4 2 3);
+    }
+
+    // -----
+
+    method  metis;
+
+    metisCoeffs
+    {
+        method  k-way;
+    }
+\endverbatim
+
+For simplicity, the generic \c coeffs dictionary is generally preferrable.
+However, for some specific decomposition methods
+(eg, \ref subsecMultiLevel "multiLevel") only the
+method-specific coefficients dictionary is permitted.
+
+
+\subsection subsecRegions Multi-region
+
+When running multi-region simulations, it may be desirable to use different
+decomposition methods for one or more regions, or even to have fewer
+processors allocated to a particular region.
+If, for example, the multi-region simulation contains a large fluid region
+and a very small solid region, it can be advantageous to decompose the solid
+onto fewer processors.
+
+The region-wise specification is contained in a \a regions subdictionary with
+decomposeParDict. For example,
+
+\verbatim
+    numberOfSubdomains  2048;
+    method  metis;
+
+    regions
+    {
+        heater
+        {
+            numberOfSubdomains  2;
+            method  hierarchical;
+            coeffs
+            {
+                n   (2 1 1);
+            }
+        }
+
+        "*.solid"
+        {
+            numberOfSubdomains  16;
+            method  scotch;
+        }
+    }
+\endverbatim
+
+\note
+The top-level numberOfSubdomains remains mandatory, since this specifies the
+number of domains for the entire simulation. The individual regions may use
+the same number or fewer domains. The \a numberOfSubdomains entry within
+a region specification is only needed if the value differs.
+
+
+\subsection subsecMultiLevel Multi-level decomposition
+
+The #Foam::multiLevelDecomp decomposition provides a general means of
+successively decomposing with different methods. Each appplication of the
+decomposition is termed a level. For example,
+
+\verbatim
+    numberOfSubdomains  2048;
+    method  multiLevel;
+
+    multiLevelCoeffs
+    {
+        nodes
+        {
+            numberOfSubdomains 128;
+            method  hierarchical;
+            coeffs
+            {
+                n (16 4 2);
+            }
+        }
+        cpus
+        {
+            numberOfSubdomains 2;
+            method  scotch;
+        }
+        cores
+        {
+            numberOfSubdomains 8;
+            method  metis;
+        }
+    }
+\endverbatim
+
+For cases where the same method is applied at each level, this can also be
+conveniently written in a much shorter form:
+\verbatim
+    numberOfSubdomains  2048;
+    method  multiLevel;
+
+    multiLevelCoeffs
+    {
+        method  scotch
+        domains (128 2 8);
+    }
+\endverbatim
+
+When the specified \a domains is smaller than \a numberOfSubdomains
+but can be resolved as an integral multiple, this integral multiple
+is used as the first level.  This can make it easier to manage when
+changing the number of domains for the simulation.
+For example,
+\verbatim
+    numberOfSubdomains  1024;
+    method  multiLevel;
+
+    multiLevelCoeffs
+    {
+        method  scotch
+        domains (2 8);    //< inferred as   domains (64 2 8);
+    }
+\endverbatim
+
+
+\subsection subsecConstraints Constraints
+
+\verbatim
+    constraints
+    {
+        preserveBaffles
+        {
+            // Keep owner and neighbour of baffles on same processor
+            // (ie, keep it detectable as a baffle).
+            // Baffles are two boundary face sharing the same points
+
+            type    preserveBaffles;
+        }
+
+        preserveFaceZones
+        {
+            // Keep owner and neighbour on same processor for faces in zones
+
+            type    preserveFaceZones;
+            zones   (".*");
+        }
+
+        preservePatches
+        {
+            // Keep owner and neighbour on same processor for faces in patches
+            // (only makes sense for cyclic patches. Not suitable for e.g.
+            // cyclicAMI since these are not coupled on the patch level.
+            // Use singleProcessorFaceSets for those.
+
+            type    preservePatches;
+            patches (".*");
+        }
+
+        singleProcessorFaceSets
+        {
+            // Keep all of faceSet on a single processor. This puts all cells
+            // connected with a point, edge or face on the same processor.
+            // (just having face connected cells might not guarantee a balanced
+            // decomposition)
+            // The processor can be -1 (the decompositionMethod chooses the
+            // processor for a good load balance) or explicitly provided (upsets
+            // balance)
+
+            type    singleProcessorFaceSets;
+            singleProcessorFaceSets ((f1 -1));
+        }
+
+        refinementHistory
+        {
+            // Decompose cells such that all cell originating from single cell
+            // end up on same processor
+            type    refinementHistory;
+        }
+    }
+\endverbatim
+
+\*---------------------------------------------------------------------------*/
diff --git a/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C b/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C
index c17958367a31de081796fc24e6795fa7c8604123..69bc26b4d3d0b076e0c92fe68b4cdc25a8b04bf4 100644
--- a/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C
+++ b/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.C
@@ -44,49 +44,97 @@ namespace Foam
 {
     defineTypeNameAndDebug(decompositionMethod, 0);
     defineRunTimeSelectionTable(decompositionMethod, dictionary);
+    defineRunTimeSelectionTable(decompositionMethod, dictionaryRegion);
+
+    // Fallback name when searching for optional coefficients directories
+    static const word defaultName("coeffs");
 }
 
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Static Member Functions * * * * * * * * * * * * //
 
-Foam::decompositionMethod::decompositionMethod
+Foam::label Foam::decompositionMethod::nDomains(const dictionary& decompDict)
+{
+    return readLabel(decompDict.lookup("numberOfSubdomains"));
+}
+
+
+Foam::label Foam::decompositionMethod::nDomains
 (
-    const dictionary& decompositionDict
+    const dictionary& decompDict,
+    const word& regionName
 )
-:
-    decompositionDict_(decompositionDict),
-    nProcessors_
-    (
-        readLabel(decompositionDict.lookup("numberOfSubdomains"))
-    )
 {
+    const label nDomainsGlobal = nDomains(decompDict);
+
+    const dictionary& regionDict(optionalRegionDict(decompDict, regionName));
+
+    label nDomainsRegion;
+    if (regionDict.readIfPresent("numberOfSubdomains", nDomainsRegion))
+    {
+        if (nDomainsRegion >= 1 && nDomainsRegion <= nDomainsGlobal)
+        {
+            return nDomainsRegion;
+        }
+
+        WarningInFunction
+            << "ignoring out of range numberOfSubdomains "
+            << nDomainsRegion << " for region " << regionName
+            << nl << nl
+            << endl;
+    }
+
+    return nDomainsGlobal;
+}
+
+
+const Foam::dictionary& Foam::decompositionMethod::optionalRegionDict
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+{
+    auto finder = decompDict.csearch("regions");
+
+    if (!regionName.empty() && finder.isDict())
+    {
+        finder = finder.dict().csearch(regionName);
+
+        if (finder.isDict())
+        {
+            return finder.dict();
+        }
+    }
+
+    return dictionary::null;
+}
+
+
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
+
+void Foam::decompositionMethod::readConstraints()
+{
+    constraints_.clear();
+
     // Read any constraints
-    wordList constraintTypes_;
-    if (decompositionDict_.found("constraints"))
+    wordList constraintTypes;
+
+    const dictionary* dictptr = decompositionDict_.subDictPtr("constraints");
+
+    if (dictptr)
     {
-        //PtrList<dictionary> constraintsList
-        //(
-        //    decompositionDict_.lookup("constraints")
-        //);
-        //forAll(constraintsList, i)
-        //{
-        //    const dictionary& dict = constraintsList[i];
-        const dictionary& constraintsList = decompositionDict_.subDict
-        (
-            "constraints"
-        );
-        forAllConstIter(dictionary, constraintsList, iter)
+        forAllConstIters(*dictptr, iter)
         {
             const dictionary& dict = iter().dict();
 
-            constraintTypes_.append(dict.lookup("type"));
+            constraintTypes.append(dict.lookup("type"));
 
             constraints_.append
             (
                 decompositionConstraint::New
                 (
                     dict,
-                    constraintTypes_.last()
+                    constraintTypes.last()
                 )
             );
         }
@@ -96,7 +144,7 @@ Foam::decompositionMethod::decompositionMethod
     if
     (
         decompositionDict_.found("preserveBaffles")
-     && !constraintTypes_.found
+     && !constraintTypes.found
         (
             decompositionConstraints::preserveBafflesConstraint::typeName
         )
@@ -111,7 +159,7 @@ Foam::decompositionMethod::decompositionMethod
     if
     (
         decompositionDict_.found("preservePatches")
-     && !constraintTypes_.found
+     && !constraintTypes.found
         (
             decompositionConstraints::preservePatchesConstraint::typeName
         )
@@ -128,7 +176,7 @@ Foam::decompositionMethod::decompositionMethod
     if
     (
         decompositionDict_.found("preserveFaceZones")
-     && !constraintTypes_.found
+     && !constraintTypes.found
         (
             decompositionConstraints::preserveFaceZonesConstraint::typeName
         )
@@ -145,7 +193,7 @@ Foam::decompositionMethod::decompositionMethod
     if
     (
         decompositionDict_.found("singleProcessorFaceSets")
-     && !constraintTypes_.found
+     && !constraintTypes.found
         (
             decompositionConstraints::preserveFaceZonesConstraint::typeName
         )
@@ -166,17 +214,144 @@ Foam::decompositionMethod::decompositionMethod
     }
 }
 
+// * * * * * * * * * * * * Protected Member Functions  * * * * * * * * * * * //
+
+const Foam::dictionary& Foam::decompositionMethod::findCoeffsDict
+(
+    const dictionary& dict,
+    const word& coeffsName,
+    int select
+)
+{
+    dictionary::const_searcher fnd;
+
+    if
+    (
+        (fnd = dict.csearch(coeffsName)).isDict()
+     ||
+        (
+            !(select & selectionType::EXACT)
+         && (fnd = dict.csearch(defaultName)).isDict()
+        )
+    )
+    {
+        return fnd.dict();
+    }
+
+    // Not found
+    if (select & selectionType::MANDATORY)
+    {
+        FatalIOError
+            << "'" << coeffsName << "' dictionary not found in dictionary "
+            << dict.name() << endl
+            << abort(FatalIOError);
+    }
+
+    if (select & selectionType::NULL_DICT)
+    {
+        return dictionary::null;
+    }
+
+    return dict;
+}
+
+
+const Foam::dictionary& Foam::decompositionMethod::findCoeffsDict
+(
+    const word& coeffsName,
+    int select
+) const
+{
+    dictionary::const_searcher fnd;
+
+    if
+    (
+        !decompositionRegionDict_.empty()
+    &&
+        (
+            (fnd = decompositionRegionDict_.csearch(coeffsName)).isDict()
+         ||
+            (
+                !(select & selectionType::EXACT)
+             && (fnd = decompositionRegionDict_.csearch(defaultName)).isDict()
+            )
+        )
+    )
+    {
+        return fnd.dict();
+    }
+
+    if
+    (
+        (fnd = decompositionDict_.csearch(coeffsName)).isDict()
+     ||
+        (
+            !(select & selectionType::EXACT)
+         && (fnd = decompositionDict_.csearch(defaultName)).isDict()
+        )
+    )
+    {
+        return fnd.dict();
+    }
+
+    // Not found
+    if (select & selectionType::MANDATORY)
+    {
+        FatalIOError
+            << "'" << coeffsName << "' dictionary not found in dictionary "
+            << decompositionDict_.name() << endl
+            << abort(FatalIOError);
+    }
+
+    if (select & selectionType::NULL_DICT)
+    {
+        return dictionary::null;
+    }
+
+    return decompositionDict_;
+}
+
+
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::decompositionMethod::decompositionMethod
+(
+    const dictionary& decompDict
+)
+:
+    decompositionDict_(decompDict),
+    decompositionRegionDict_(dictionary::null),
+    nDomains_(nDomains(decompDict))
+{
+    readConstraints();
+}
+
+
+Foam::decompositionMethod::decompositionMethod
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+:
+    decompositionDict_(decompDict),
+    decompositionRegionDict_
+    (
+        optionalRegionDict(decompositionDict_, regionName)
+    ),
+    nDomains_(nDomains(decompDict, regionName))
+{
+    readConstraints();
+}
+
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
 Foam::autoPtr<Foam::decompositionMethod> Foam::decompositionMethod::New
 (
-    const dictionary& decompositionDict
+    const dictionary& decompDict
 )
 {
-    const word methodType(decompositionDict.lookup("method"));
-
-    Info<< "Selecting decompositionMethod " << methodType << endl;
+    const word methodType(decompDict.lookup("method"));
 
     auto cstrIter = dictionaryConstructorTablePtr_->cfind(methodType);
 
@@ -190,7 +365,58 @@ Foam::autoPtr<Foam::decompositionMethod> Foam::decompositionMethod::New
             << exit(FatalError);
     }
 
-    return autoPtr<decompositionMethod>(cstrIter()(decompositionDict));
+    // verbose
+    {
+        Info<< "Selecting decompositionMethod " << methodType
+            << " [" << (nDomains(decompDict)) << "]" << endl;
+    }
+
+    return autoPtr<decompositionMethod>(cstrIter()(decompDict));
+}
+
+
+Foam::autoPtr<Foam::decompositionMethod> Foam::decompositionMethod::New
+(
+    const dictionary& decompDict,
+    const word& regionName
+
+)
+{
+    const dictionary& regionDict(optionalRegionDict(decompDict, regionName));
+
+    if (regionDict.empty())
+    {
+        // No region-specific information - just forward to normal routine
+        return decompositionMethod::New(decompDict);
+    }
+
+    word methodType(decompDict.lookup("method"));
+    regionDict.readIfPresent("method", methodType);
+
+    auto cstrIter = dictionaryRegionConstructorTablePtr_->cfind(methodType);
+
+    if (!cstrIter.found())
+    {
+        WarningInFunction
+            << nl
+            << "Unknown region decompositionMethod "
+            << methodType << nl << nl
+            << "Valid decompositionMethods : " << endl
+            << dictionaryRegionConstructorTablePtr_->sortedToc() << nl
+            << "Reverting to non-region version" << nl
+            << endl;
+
+        return decompositionMethod::New(decompDict);
+    }
+
+    // verbose
+    {
+        Info<< "Selecting decompositionMethod " << methodType
+            << " [" << (nDomains(decompDict, regionName)) << "] (region "
+            << regionName << ")" << endl;
+    }
+
+    return autoPtr<decompositionMethod>(cstrIter()(decompDict, regionName));
 }
 
 
@@ -341,7 +567,7 @@ void Foam::decompositionMethod::calcCellCells
     // Number of faces per coarse cell
     labelList nFacesPerCell(nLocalCoarse, 0);
 
-    for (label facei = 0; facei < mesh.nInternalFaces(); facei++)
+    for (label facei = 0; facei < mesh.nInternalFaces(); ++facei)
     {
         const label own = agglom[faceOwner[facei]];
         const label nei = agglom[faceNeighbour[facei]];
@@ -391,7 +617,7 @@ void Foam::decompositionMethod::calcCellCells
     const labelList& offsets = cellCells.offsets();
 
     // For internal faces is just offsetted owner and neighbour
-    for (label facei = 0; facei < mesh.nInternalFaces(); facei++)
+    for (label facei = 0; facei < mesh.nInternalFaces(); ++facei)
     {
         const label own = agglom[faceOwner[facei]];
         const label nei = agglom[faceNeighbour[facei]];
@@ -453,7 +679,7 @@ void Foam::decompositionMethod::calcCellCells
 
         const label endIndex = cellCells.offsets()[celli+1];
 
-        for (label i = startIndex; i < endIndex; i++)
+        for (label i = startIndex; i < endIndex; ++i)
         {
             if (nbrCells.insert(cellCells.m()[i]))
             {
@@ -547,10 +773,10 @@ void Foam::decompositionMethod::calcCellCells
     // Number of faces per coarse cell
     labelList nFacesPerCell(nLocalCoarse, 0);
 
-    for (label faceI = 0; faceI < mesh.nInternalFaces(); faceI++)
+    for (label facei = 0; facei < mesh.nInternalFaces(); ++facei)
     {
-        const label own = agglom[faceOwner[faceI]];
-        const label nei = agglom[faceNeighbour[faceI]];
+        const label own = agglom[faceOwner[facei]];
+        const label nei = agglom[faceNeighbour[facei]];
 
         nFacesPerCell[own]++;
         nFacesPerCell[nei]++;
@@ -599,18 +825,18 @@ void Foam::decompositionMethod::calcCellCells
     const labelList& offsets = cellCells.offsets();
 
     // For internal faces is just offsetted owner and neighbour
-    for (label faceI = 0; faceI < mesh.nInternalFaces(); faceI++)
+    for (label facei = 0; facei < mesh.nInternalFaces(); ++facei)
     {
-        const label own = agglom[faceOwner[faceI]];
-        const label nei = agglom[faceNeighbour[faceI]];
+        const label own = agglom[faceOwner[facei]];
+        const label nei = agglom[faceNeighbour[facei]];
 
         const label ownIndex = offsets[own] + nFacesPerCell[own]++;
         const label neiIndex = offsets[nei] + nFacesPerCell[nei]++;
 
         m[ownIndex] = globalAgglom.toGlobal(nei);
-        w[ownIndex] = mag(mesh.faceAreas()[faceI]);
+        w[ownIndex] = mag(mesh.faceAreas()[facei]);
         m[neiIndex] = globalAgglom.toGlobal(own);
-        w[ownIndex] = mag(mesh.faceAreas()[faceI]);
+        w[ownIndex] = mag(mesh.faceAreas()[facei]);
     }
 
     // For boundary faces is offsetted coupled neighbour
@@ -661,14 +887,14 @@ void Foam::decompositionMethod::calcCellCells
 
     label startIndex = cellCells.offsets()[0];
 
-    forAll(cellCells, cellI)
+    forAll(cellCells, celli)
     {
         nbrCells.clear();
-        nbrCells.insert(globalAgglom.toGlobal(cellI));
+        nbrCells.insert(globalAgglom.toGlobal(celli));
 
-        const label endIndex = cellCells.offsets()[cellI+1];
+        const label endIndex = cellCells.offsets()[celli+1];
 
-        for (label i = startIndex; i < endIndex; i++)
+        for (label i = startIndex; i < endIndex; ++i)
         {
             if (nbrCells.insert(cellCells.m()[i]))
             {
@@ -678,8 +904,8 @@ void Foam::decompositionMethod::calcCellCells
             }
         }
         startIndex = endIndex;
-        cellCells.offsets()[cellI+1] = newIndex;
-        cellCellWeights.offsets()[cellI+1] = newIndex;
+        cellCells.offsets()[celli+1] = newIndex;
+        cellCellWeights.offsets()[celli+1] = newIndex;
     }
 
     cellCells.m().setSize(newIndex);
@@ -753,7 +979,7 @@ void Foam::decompositionMethod::calcCellCells
 //    labelList nFacesPerCell(nLocalCoarse, 0);
 //
 //    // 1. Internal faces
-//    for (label facei = 0; facei < mesh.nInternalFaces(); facei++)
+//    for (label facei = 0; facei < mesh.nInternalFaces(); ++facei)
 //    {
 //        if (!blockedFace[facei])
 //        {
@@ -880,7 +1106,7 @@ void Foam::decompositionMethod::calcCellCells
 //    const labelList& offsets = cellCells.offsets();
 //
 //    // 1. For internal faces is just offsetted owner and neighbour
-//    for (label facei = 0; facei < mesh.nInternalFaces(); facei++)
+//    for (label facei = 0; facei < mesh.nInternalFaces(); ++facei)
 //    {
 //        if (!blockedFace[facei])
 //        {
@@ -1032,7 +1258,7 @@ void Foam::decompositionMethod::calcCellCells
 //
 //        label endIndex = cellCells.offsets()[celli+1];
 //
-//        for (label i = startIndex; i < endIndex; i++)
+//        for (label i = startIndex; i < endIndex; ++i)
 //        {
 //            if (nbrCells.insert(cellCells.m()[i]))
 //            {
@@ -1180,11 +1406,11 @@ Foam::labelList Foam::decompositionMethod::decompose
 
         forAll(localRegion, celli)
         {
-            label regionI = localRegion[celli];
+            const label regioni = localRegion[celli];
 
-            if (regionCentres[regionI] == point::max)
+            if (regionCentres[regioni] == point::max)
             {
-                regionCentres[regionI] = mesh.cellCentres()[celli];
+                regionCentres[regioni] = mesh.cellCentres()[celli];
             }
         }
 
@@ -1197,18 +1423,18 @@ Foam::labelList Foam::decompositionMethod::decompose
         {
             forAll(localRegion, celli)
             {
-                label regionI = localRegion[celli];
+                const label regioni = localRegion[celli];
 
-                regionWeights[regionI] += cellWeights[celli];
+                regionWeights[regioni] += cellWeights[celli];
             }
         }
         else
         {
             forAll(localRegion, celli)
             {
-                label regionI = localRegion[celli];
+                const label regioni = localRegion[celli];
 
-                regionWeights[regionI] += 1.0;
+                regionWeights[regioni] += 1.0;
             }
         }
 
@@ -1224,11 +1450,11 @@ Foam::labelList Foam::decompositionMethod::decompose
 
         // Implement the explicitConnections since above decompose
         // does not know about them
-        forAll(explicitConnections, i)
+        forAll(explicitConnections, connectioni)
         {
-            const labelPair& baffle = explicitConnections[i];
-            label f0 = baffle.first();
-            label f1 = baffle.second();
+            const labelPair& baffle = explicitConnections[connectioni];
+            const label f0 = baffle.first();
+            const label f1 = baffle.second();
 
             if (!blockedFace[f0] && !blockedFace[f1])
             {
@@ -1292,7 +1518,7 @@ Foam::labelList Foam::decompositionMethod::decompose
             {
                 if (!blockedFace[facei])
                 {
-                    label own = mesh.faceOwner()[facei];
+                    const label own = mesh.faceOwner()[facei];
                     seedFaces[nUnblocked] = facei;
                     seedData[nUnblocked] = minData(finalDecomp[own]);
                     nUnblocked++;
@@ -1361,10 +1587,8 @@ Foam::labelList Foam::decompositionMethod::decompose
                 forAll(f, fp)
                 {
                     const labelList& pFaces = mesh.pointFaces()[f[fp]];
-                    forAll(pFaces, i)
+                    for (const label facei : pFaces)
                     {
-                        label facei = pFaces[i];
-
                         finalDecomp[mesh.faceOwner()[facei]] = proci;
                         if (mesh.isInternalFace(facei))
                         {
@@ -1433,9 +1657,9 @@ void Foam::decompositionMethod::setConstraints
     specifiedProcessorFaces.clear();
     explicitConnections.clear();
 
-    forAll(constraints_, constraintI)
+    forAll(constraints_, constrainti)
     {
-        constraints_[constraintI].add
+        constraints_[constrainti].add
         (
             mesh,
             blockedFace,
@@ -1457,9 +1681,9 @@ void Foam::decompositionMethod::applyConstraints
     labelList& decomposition
 )
 {
-    forAll(constraints_, constraintI)
+    forAll(constraints_, constrainti)
     {
-        constraints_[constraintI].apply
+        constraints_[constrainti].apply
         (
             mesh,
             blockedFace,
diff --git a/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.H b/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.H
index 75a797e1aeeb4a9965959f3816ac9ba802221087..96ad3afc982cd37d573148d8c99ce19a1b89cccf 100644
--- a/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.H
+++ b/src/parallel/decompose/decompositionMethods/decompositionMethod/decompositionMethod.H
@@ -25,7 +25,7 @@ Class
     Foam::decompositionMethod
 
 Description
-    Abstract base class for decomposition
+    Abstract base class for domain decomposition
 
 SourceFiles
     decompositionMethod.C
@@ -43,29 +43,86 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class decompositionMethod Declaration
+                     Class decompositionMethod Declaration
 \*---------------------------------------------------------------------------*/
 
 class decompositionMethod
 {
+    // Private Member Functions
+
+        //- Set PtrList of constraints by reading decompositionDict_.
+        void readConstraints();
+
+        //- Disallow default bitwise copy construct and assignment
+        decompositionMethod(const decompositionMethod&) = delete;
+        void operator=(const decompositionMethod&) = delete;
+
 
 protected:
 
+        //- Selection type when handling the coefficients dictionary.
+        //  To be used as a bit-mask for findCoeffsDict
+        enum selectionType
+        {
+            DEFAULT = 0,   //!< Default request
+            EXACT   = 1,   //!< No fallback to "coeffs" if main name not found
+            MANDATORY = 2, //!< Fatal if dictionary could not be found
+            NULL_DICT = 4, //!< On failure, return dictionary::null instead
+                           //!< of the top-level enclosing dictionary.
+        };
+
+
     // Protected data
 
+        //- Top-level decomposition dictionary (eg, decomposeParDict)
         const dictionary& decompositionDict_;
-        label nProcessors_;
+
+        //- Region-specific decomposition dictionary information
+        const dictionary& decompositionRegionDict_;
+
+        //- Number of domains for the decomposition
+        label nDomains_;
 
         //- Optional constraints
         PtrList<decompositionConstraint> constraints_;
 
-private:
 
-    // Private Member Functions
+    // Protected Member Functions
 
-        //- Disallow default bitwise copy construct and assignment
-        decompositionMethod(const decompositionMethod&);
-        void operator=(const decompositionMethod&);
+        //- Locate coeffsName dictionary or the fallback "coeffs" dictionary
+        //- within an enclosing dictionary.
+        //
+        //  \param select choose to include "coeffs" in the search, make
+        //      failure a FatalError, return dictionary::null instead on
+        //      failure.
+        //
+        //  \return the coefficients dictionary found. If nothing was found,
+        //  return the enclosing dictionary or
+        //  dictionary::null (depending on the select parameter).
+        static const dictionary& findCoeffsDict
+        (
+            const dictionary& dict,
+            const word& coeffsName,
+            int select = selectionType::DEFAULT
+        );
+
+
+        //- Locate coeffsName dictionary or the fallback "coeffs" dictionary.
+        //  Searches both the region-specific decomposition dictionary
+        //  and the top-level decomposition dictionary.
+        //
+        //  \param select choose to include "coeffs" in the search, make
+        //      failure a FatalError, return dictionary::null instead on
+        //      failure.
+        //
+        //  \return the coefficients dictionary found. If nothing was found,
+        //  return the top-level (non-region) dictionary or
+        //  dictionary::null (depending on the select parameter).
+        const dictionary& findCoeffsDict
+        (
+            const word& coeffsName,
+            int select = selectionType::DEFAULT
+        ) const;
 
 
 public:
@@ -82,9 +139,43 @@ public:
             decompositionMethod,
             dictionary,
             (
-                const dictionary& decompositionDict
+                const dictionary& decompDict
             ),
-            (decompositionDict)
+            (decompDict)
+        );
+
+        declareRunTimeSelectionTable
+        (
+            autoPtr,
+            decompositionMethod,
+            dictionaryRegion,
+            (
+                const dictionary& decompDict,
+                const word& regionName
+            ),
+            (decompDict, regionName)
+        );
+
+
+    // Static Methods
+
+        //- Return the \c numberOfSubdomains entry from the dictionary
+        static label nDomains(const dictionary& decompDict);
+
+        //- Return the \c numberOfSubdomains from a region within the
+        //  "regions" sub-dictionary
+        static label nDomains
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
+
+        //- Return an optional region dictionary from "regions" sub-dictionary
+        //  or dictionary::null on failure.
+        static const dictionary& optionalRegionDict
+        (
+            const dictionary& decompDict,
+            const word& regionName
         );
 
 
@@ -93,14 +184,29 @@ public:
         //- Return a reference to the selected decomposition method
         static autoPtr<decompositionMethod> New
         (
-            const dictionary& decompositionDict
+            const dictionary& decompDict
+        );
+
+        //- Return a reference to the selected decomposition method,
+        //- with region specification
+        static autoPtr<decompositionMethod> New
+        (
+            const dictionary& decompDict,
+            const word& regionName
         );
 
 
     // Constructors
 
         //- Construct given the decomposition dictionary
-        decompositionMethod(const dictionary& decompositionDict);
+        decompositionMethod(const dictionary& decompDict);
+
+        //- Construct given the decomposition dictionary for specific region
+        decompositionMethod
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
 
 
     //- Destructor
@@ -110,9 +216,10 @@ public:
 
     // Member Functions
 
-        label nDomains() const
+        //- Number of domains
+        inline label nDomains() const
         {
-            return nProcessors_;
+            return nDomains_;
         }
 
         //- Is method parallel aware (i.e. does it synchronize domains across
diff --git a/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C b/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C
index 6f741b09598b7415b01320cd0ad58b351f2d06dd..1c2df26498a7051e11dda53e7ca1897b53791271 100644
--- a/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.C
@@ -25,36 +25,29 @@ License
 
 #include "geomDecomp.H"
 
-// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+// * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
-Foam::geomDecomp::geomDecomp
-(
-    const dictionary& decompositionDict,
-    const word& derivedType
-)
-:
-    decompositionMethod(decompositionDict),
-    geomDecomDict_(decompositionDict.optionalSubDict(derivedType + "Coeffs")),
-    n_(geomDecomDict_.lookup("n")),
-    delta_(readScalar(geomDecomDict_.lookup("delta"))),
-    rotDelta_(I)
+void Foam::geomDecomp::readCoeffs()
 {
-    // check that the case makes sense :
+    coeffsDict_.readIfPresent("delta", delta_);
+
+    coeffsDict_.lookup("n") >> n_;
 
-    if (nProcessors_ != n_.x()*n_.y()*n_.z())
+    // Verify that the input makes sense
+    if (nDomains_ != n_.x()*n_.y()*n_.z())
     {
         FatalErrorInFunction
-            << "Wrong number of processor divisions in geomDecomp:" << nl
-            << "Number of domains    : " << nProcessors_ << nl
+            << "Wrong number of domain divisions in geomDecomp:" << nl
+            << "Number of domains    : " << nDomains_ << nl
             << "Wanted decomposition : " << n_
             << exit(FatalError);
     }
 
-    scalar d = 1 - 0.5*delta_*delta_;
-    scalar d2 = sqr(d);
+    const scalar d = 1 - 0.5*delta_*delta_;
+    const scalar d2 = sqr(d);
 
-    scalar a = delta_;
-    scalar a2 = sqr(a);
+    const scalar a = delta_;
+    const scalar a2 = sqr(a);
 
     rotDelta_ = tensor
     (
@@ -65,4 +58,41 @@ Foam::geomDecomp::geomDecomp
 }
 
 
+// * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
+
+Foam::geomDecomp::geomDecomp
+(
+    const word& derivedType,
+    const dictionary& decompDict,
+    int select
+)
+:
+    decompositionMethod(decompDict),
+    coeffsDict_(findCoeffsDict(derivedType + "Coeffs", select)),
+    n_(1,1,1),
+    delta_(0.001),
+    rotDelta_(I)
+{
+    readCoeffs();
+}
+
+
+Foam::geomDecomp::geomDecomp
+(
+    const word& derivedType,
+    const dictionary& decompDict,
+    const word& regionName,
+    int select
+)
+:
+    decompositionMethod(decompDict, regionName),
+    coeffsDict_(findCoeffsDict(derivedType + "Coeffs", select)),
+    n_(1,1,1),
+    delta_(0.001),
+    rotDelta_(I)
+{
+    readCoeffs();
+}
+
+
 // ************************************************************************* //
diff --git a/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.H b/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.H
index e1538356ee7f735c17967775aa9da00789a7e8fc..7684a2ef4ee2092921bd0e4be4b4a07df363dbf0 100644
--- a/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/geomDecomp/geomDecomp.H
@@ -25,7 +25,14 @@ Class
     Foam::geomDecomp
 
 Description
-    Geometrical domain decomposition
+    Base for geometrical domain decomposition methods
+
+    Base coefficients:
+    \table
+        Property  | Description                 | Required | Default
+        n         | (nx ny nz)                  | yes
+        delta     | delta for rotation matrix   | no | 0.001
+    \endtable
 
 SourceFiles
     geomDecomp.C
@@ -42,36 +49,56 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class geomDecomp Declaration
+                         Class geomDecomp Declaration
 \*---------------------------------------------------------------------------*/
 
 class geomDecomp
 :
     public decompositionMethod
 {
+    // Private Member Functions
+
+        //- Read input values and initialize the rotDelta_
+        void readCoeffs();
+
 
 protected:
 
     // Protected data
 
-        const dictionary& geomDecomDict_;
+        //- Coefficients for all derived methods
+        const dictionary& coeffsDict_;
 
         Vector<label> n_;
+
+        //- Default = 0.001
         scalar delta_;
+
         tensor rotDelta_;
 
 public:
 
     // Constructors
 
-        //- Construct given the decomposition dictionary
-        //  and the derived type name
+        //- Construct for derived type name and decomposition dictionary
         geomDecomp
         (
-            const dictionary& decompositionDict,
-            const word& derivedType
+            const word& derivedType,
+            const dictionary& decompDict,
+            int select = selectionType::DEFAULT
         );
 
+        //- Construct for derived type name, decomposition dictionary
+        //- and region name
+        geomDecomp
+        (
+            const word& derivedType,
+            const dictionary& decompDict,
+            const word& regionName,
+            int select = selectionType::DEFAULT
+        );
+
+
         //- Return for every coordinate the wanted processor number.
         virtual labelList decompose
         (
diff --git a/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.C b/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.C
index 658ae83058a7bc0c1dd965b1b6035e0d9ed220db..486a29ea04e1e9d5e22e0a2eccde7467c90e798a 100644
--- a/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2015 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2015-2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -40,44 +40,51 @@ namespace Foam
         hierarchGeomDecomp,
         dictionary
     );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        hierarchGeomDecomp,
+        dictionaryRegion
+    );
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 void Foam::hierarchGeomDecomp::setDecompOrder()
 {
-    const word order(geomDecomDict_.lookup("order"));
-
-    if (order.size() != 3)
-    {
-        FatalIOErrorInFunction
-        (
-            decompositionDict_
-        )   << "number of characters in order (" << order << ") != 3"
-            << exit(FatalIOError);
-    }
+    word order;
 
-    for (label i = 0; i < 3; ++i)
+    if (coeffsDict_.readIfPresent("order", order))
     {
-        if (order[i] == 'x')
-        {
-            decompOrder_[i] = 0;
-        }
-        else if (order[i] == 'y')
-        {
-            decompOrder_[i] = 1;
-        }
-        else if (order[i] == 'z')
-        {
-            decompOrder_[i] = 2;
-        }
-        else
+        if (order.size() != 3)
         {
             FatalIOErrorInFunction
             (
                 decompositionDict_
-            )   << "Illegal decomposition order " << order << endl
-                << "It should only contain x, y or z" << exit(FatalError);
+            )   << "number of characters in order (" << order << ") != 3"
+                << exit(FatalIOError);
+        }
+
+        for (int i = 0; i < 3; ++i)
+        {
+            // Change [x-z] -> [0-2]
+
+            switch (order[i])
+            {
+                case 'x': decompOrder_[i] = 0; break;
+                case 'y': decompOrder_[i] = 1; break;
+                case 'z': decompOrder_[i] = 2; break;
+
+                default:
+                    FatalIOErrorInFunction
+                    (
+                        decompositionDict_
+                    )   << "Illegal decomposition order " << order << nl
+                        << "It should only contain x, y or z"
+                        << exit(FatalError);
+                    break;
+            }
         }
     }
 }
@@ -704,7 +711,7 @@ Foam::labelList Foam::hierarchGeomDecomp::decompose
     label allSize = points.size();
     reduce(allSize, sumOp<label>());
 
-    const label sizeTol = max(1, label(1e-3*allSize/nProcessors_));
+    const label sizeTol = max(1, label(1e-3*allSize/nDomains_));
 
     // Sort recursive
     sortComponent
@@ -745,7 +752,7 @@ Foam::labelList Foam::hierarchGeomDecomp::decompose
     label allSize = points.size();
     reduce(allSize, sumOp<label>());
 
-    const label sizeTol = max(1, label(1e-3*allSize/nProcessors_));
+    const label sizeTol = max(1, label(1e-3*allSize/nDomains_));
 
     // Sort recursive
     sortComponent
@@ -767,11 +774,24 @@ Foam::labelList Foam::hierarchGeomDecomp::decompose
 
 Foam::hierarchGeomDecomp::hierarchGeomDecomp
 (
-    const dictionary& decompositionDict
+    const dictionary& decompDict
+)
+:
+    geomDecomp(typeName, decompDict),
+    decompOrder_({0,1,2})
+{
+    setDecompOrder();
+}
+
+
+Foam::hierarchGeomDecomp::hierarchGeomDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
 )
 :
-    geomDecomp(decompositionDict, typeName),
-    decompOrder_()
+    geomDecomp(typeName, decompDict, regionName),
+    decompOrder_({0,1,2})
 {
     setDecompOrder();
 }
diff --git a/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.H b/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.H
index 2df6080f5b5b93918b6acf238d13f41a9fb69aa6..91fbf6d877043873b38c0fd52d5d3a416ab20dc8 100644
--- a/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/hierarchGeomDecomp/hierarchGeomDecomp.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -25,9 +25,10 @@ Class
     Foam::hierarchGeomDecomp
 
 Description
-    Does hierarchical decomposition of points. Works by first sorting the
-    points in x direction into equal sized bins, then in y direction and
-    finally in z direction.
+    Does hierarchical decomposition of points, selectable as \c hierarchical.
+
+    Works by first sorting the points in x direction into equal sized bins,
+    then in y direction and finally in z direction.
 
     Uses single array to hold decomposition which is indexed as if it is a
     3 dimensional array:
@@ -44,6 +45,13 @@ Description
     Since the domains are of equal size the maximum difference in size is
     n[0]*n[1] (or n[1]*n[2]?) (small anyway)
 
+    Method coefficients:
+    \table
+        Property  | Description                 | Required | Default
+        n         | (nx ny nz)                  | yes
+        delta     | delta for rotation matrix   | no | 0.001
+        order     | order of operation          | no | xyz
+    \endtable
 
 SourceFiles
     hierarchGeomDecomp.C
@@ -61,7 +69,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class hierarchGeomDecomp Declaration
+                     Class hierarchGeomDecomp Declaration
 \*---------------------------------------------------------------------------*/
 
 class hierarchGeomDecomp
@@ -77,6 +85,7 @@ class hierarchGeomDecomp
     // Private Member Functions
 
         //- Convert ordering string ("xyz") into list of components.
+        //  Checks for bad entries, but no check for duplicate entries.
         void setDecompOrder();
 
         //- Evaluates the weighted sizes for each sorted point.
@@ -155,8 +164,8 @@ class hierarchGeomDecomp
         );
 
         //- Disallow default bitwise copy construct and assignment
-        void operator=(const hierarchGeomDecomp&);
-        hierarchGeomDecomp(const hierarchGeomDecomp&);
+        void operator=(const hierarchGeomDecomp&) = delete;
+        hierarchGeomDecomp(const hierarchGeomDecomp&) = delete;
 
 
 public:
@@ -168,7 +177,14 @@ public:
     // Constructors
 
         //- Construct given the decomposition dictionary
-        hierarchGeomDecomp(const dictionary& decompositionDict);
+        hierarchGeomDecomp(const dictionary& decompDict);
+
+        //- Construct for decomposition dictionary and region name
+        hierarchGeomDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
 
 
     //- Destructor
diff --git a/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C b/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C
index 0c42d691f6c4e33b8f8f9385aeb582d10861aae8..23cbd33e3110a19cdf5fe106687020a39e8ffa40 100644
--- a/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -21,9 +21,6 @@ License
     You should have received a copy of the GNU General Public License
     along with OpenFOAM.  If not, see <http://www.gnu.org/licenses/>.
 
-Description
-    Decomposition given a cell-to-processor association in a file
-
 \*---------------------------------------------------------------------------*/
 
 #include "manualDecomp.H"
@@ -43,21 +40,33 @@ namespace Foam
         manualDecomp,
         dictionary
     );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        manualDecomp,
+        dictionaryRegion
+    );
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::manualDecomp::manualDecomp(const dictionary& decompositionDict)
+Foam::manualDecomp::manualDecomp(const dictionary& decompDict)
 :
-    decompositionMethod(decompositionDict),
-    decompDataFile_
-    (
-        decompositionDict.optionalSubDict
-        (
-            word(decompositionDict.lookup("method")) + "Coeffs"
-        ).lookup("dataFile")
-    )
+    decompositionMethod(decompDict),
+    dataFile_(findCoeffsDict(typeName + "Coeffs").lookup("dataFile"))
+{}
+
+
+Foam::manualDecomp::manualDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+:
+    decompositionMethod(decompDict, regionName),
+    dataFile_(findCoeffsDict(typeName + "Coeffs").lookup("dataFile"))
 {}
 
 
@@ -74,7 +83,7 @@ Foam::labelList Foam::manualDecomp::decompose
     (
         IOobject
         (
-            decompDataFile_,
+            dataFile_,
             mesh.facesInstance(),
             mesh,
             IOobject::MUST_READ,
@@ -93,18 +102,18 @@ Foam::labelList Foam::manualDecomp::decompose
             << finalDecomp.size() << " Number of points: "
             << points.size()
             << ".\n" << "Manual decomposition data read from file "
-            << decompDataFile_ << "." << endl
+            << dataFile_ << "." << endl
             << exit(FatalError);
     }
 
-    if (min(finalDecomp) < 0 || max(finalDecomp) > nProcessors_ - 1)
+    if (min(finalDecomp) < 0 || max(finalDecomp) > nDomains_ - 1)
     {
         FatalErrorInFunction
             << "According to the decomposition, cells assigned to "
             << "impossible processor numbers.  Min processor = "
             << min(finalDecomp) << " Max processor = " << max(finalDecomp)
             << ".\n" << "Manual decomposition data read from file "
-            << decompDataFile_ << "." << endl
+            << dataFile_ << "." << endl
             << exit(FatalError);
     }
 
diff --git a/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.H b/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.H
index c453bcf73d6e0f3a692faab429bef52b3f04dd4d..ac97c4dbb325852c0c3a82977fe17d1374743d3d 100644
--- a/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/manualDecomp/manualDecomp.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2015 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -25,7 +25,13 @@ Class
     Foam::manualDecomp
 
 Description
-    Decomposition given a cell-to-processor association in a file
+    Decompose based on cell-to-processor association in a file
+
+    Method coefficients:
+    \table
+        Property  | Description                           | Required | Default
+        dataFile  | filename of cell decomposition data   | yes      |
+    \endtable
 
 SourceFiles
     manualDecomp.C
@@ -50,14 +56,14 @@ class manualDecomp
 {
     // Private data
 
-        fileName decompDataFile_;
+        fileName dataFile_;
 
 
     // Private Member Functions
 
         //- Disallow default bitwise copy construct and assignment
-        void operator=(const manualDecomp&);
-        manualDecomp(const manualDecomp&);
+        void operator=(const manualDecomp&) = delete;
+        manualDecomp(const manualDecomp&) = delete;
 
 
 public:
@@ -69,7 +75,15 @@ public:
     // Constructors
 
         //- Construct given the decomposition dictionary
-        manualDecomp(const dictionary& decompositionDict);
+        manualDecomp(const dictionary& decompDict);
+
+        //- Construct given the decomposition dictionary and region name
+        manualDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
+
 
     //- Destructor
     virtual ~manualDecomp()
diff --git a/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.C b/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.C
index 02d283c5482edf73e2880748b9815757aca93e02..7c3b6bb7fee0680361b322f32529a603910fbfb1 100644
--- a/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.C
@@ -150,9 +150,28 @@ Foam::label Foam::metisLikeDecomp::decomposeGeneral
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::metisLikeDecomp::metisLikeDecomp(const dictionary& decompositionDict)
+Foam::metisLikeDecomp::metisLikeDecomp
+(
+    const word& derivedType,
+    const dictionary& decompDict,
+    int select
+)
+:
+    decompositionMethod(decompDict),
+    coeffsDict_(findCoeffsDict(derivedType + "Coeffs", select))
+{}
+
+
+Foam::metisLikeDecomp::metisLikeDecomp
+(
+    const word& derivedType,
+    const dictionary& decompDict,
+    const word& regionName,
+    int select
+)
 :
-    decompositionMethod(decompositionDict)
+    decompositionMethod(decompDict, regionName),
+    coeffsDict_(findCoeffsDict(derivedType + "Coeffs", select))
 {}
 
 
diff --git a/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.H b/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.H
index 27b81bf3e68747a7611af162cde9a49b6a41d377..69af7acd3ca5b0ad734e04af826cd3a4087c7431 100644
--- a/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/metisLikeDecomp/metisLikeDecomp.H
@@ -60,6 +60,12 @@ class metisLikeDecomp
 
 protected:
 
+    // Protected data
+
+        //- Coefficients for all derived methods
+        const dictionary& coeffsDict_;
+
+
     // Protected Member Functions
 
         //- Serial and/or collect/distribute for parallel operation
@@ -84,8 +90,29 @@ public:
 
     // Constructors
 
-        //- Construct given the decomposition dictionary
-        metisLikeDecomp(const dictionary& decompositionDict);
+        //- Construct for derived type name and decomposition dictionary.
+        //  The default search for the coefficients will return dictionary::null
+        //  on failure. This avoids a name clash of a metis "method" with the
+        //  top level.
+        metisLikeDecomp
+        (
+            const word& derivedType,
+            const dictionary& decompDict,
+            int select = selectionType::NULL_DICT
+        );
+
+        //- Construct for derived type name, decomposition dictionary
+        //-  and region name
+        //  The default search for the coefficients will return dictionary::null
+        //  on failure. This avoids a name clash of a metis "method" with the
+        //  top level.
+        metisLikeDecomp
+        (
+            const word& derivedType,
+            const dictionary& decompDict,
+            const word& regionName,
+            int select = selectionType::NULL_DICT
+        );
 
 
     //- Destructor
diff --git a/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C b/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C
index 1bdc02aea9d1dbc0d89c3b5adb920a788e7e9107..3b72aa6d888542c72b1dfc2871379b101fc3ecca 100644
--- a/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.C
@@ -41,11 +41,209 @@ namespace Foam
         multiLevelDecomp,
         dictionary
     );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        multiLevelDecomp,
+        dictionaryRegion
+    );
 }
 
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
+void Foam::multiLevelDecomp::createMethodsDict()
+{
+    methodsDict_.clear();
+
+    word defaultMethod;
+    labelList domains;
+
+    label nTotal = 0;
+    label nLevels = 0;
+
+    // Found (non-recursive, no patterns) "method" and "domains" ?
+    // Allow as quick short-cut entry
+    if
+    (
+        // non-recursive, no patterns
+        coeffsDict_.readIfPresent("method", defaultMethod, false, false)
+        // non-recursive, no patterns
+     && coeffsDict_.readIfPresent("domains", domains, false, false)
+    )
+    {
+        // Short-cut version specified by method, domains only
+
+        nTotal = (domains.empty() ? 0 : 1);
+
+        for (const label n : domains)
+        {
+            nTotal *= n;
+            ++nLevels;
+        }
+
+        if (nTotal == 1)
+        {
+            // Emit Warning
+            nTotal = nDomains();
+            nLevels = 1;
+
+            domains.setSize(1);
+            domains[0] = nTotal;
+        }
+        else if (nTotal > 0 && nTotal < nDomains() && !(nDomains() % nTotal))
+        {
+            // nTotal < nDomains, but with an integral factor,
+            // which we insert as level 0
+            ++nLevels;
+
+            labelList old(std::move(domains));
+
+            domains.setSize(old.size()+1);
+
+            domains[0] = nDomains() / nTotal;
+            forAll(old, i)
+            {
+                domains[i+1] = old[i];
+            }
+            nTotal *= domains[0];
+
+            Info<<"    inferred level0 with " << domains[0]
+                << " domains" << nl << nl;
+        }
+
+        if (!nLevels || nTotal != nDomains())
+        {
+            FatalErrorInFunction
+                << "Top level decomposition specifies " << nDomains()
+                << " domains which is not equal to the product of"
+                << " all sub domains " << nTotal
+                << exit(FatalError);
+        }
+
+        // Create editable methods dictionaries
+        nLevels = 0;
+
+        // Common coeffs dictionary
+        const dictionary& subMethodCoeffsDict
+        (
+            findCoeffsDict
+            (
+                coeffsDict_,
+                defaultMethod + "Coeffs",
+                selectionType::NULL_DICT
+            )
+        );
+
+        for (const label n : domains)
+        {
+            const word levelName("level" + Foam::name(nLevels++));
+
+            entry* dictptr = methodsDict_.set(levelName, dictionary());
+
+            dictionary& dict = dictptr->dict();
+            dict.add("method", defaultMethod);
+            dict.add("numberOfSubdomains", n);
+
+            // Inject coeffs dictionary too
+            if (subMethodCoeffsDict.size())
+            {
+                dict.add(subMethodCoeffsDict.dictName(), subMethodCoeffsDict);
+            }
+        }
+    }
+    else
+    {
+        // Specified by full dictionaries
+
+        // Create editable methods dictionaries
+        // - Only consider sub-dictionaries with a "numberOfSubdomains" entry
+        //   This automatically filters out any coeffs dictionaries
+
+        forAllConstIters(coeffsDict_, iter)
+        {
+            word methodName;
+
+            if
+            (
+                iter().isDict()
+                // non-recursive, no patterns
+             && iter().dict().found("numberOfSubdomains", false, false)
+            )
+            {
+                // No method specified? can use a default method?
+
+                const bool addDefaultMethod
+                (
+                    !(iter().dict().found("method", false, false))
+                 && !defaultMethod.empty()
+                );
+
+                entry* e = methodsDict_.add(iter());
+
+                if (addDefaultMethod && e && e->isDict())
+                {
+                    e->dict().add("method", defaultMethod);
+                }
+            }
+        }
+    }
+}
+
+
+void Foam::multiLevelDecomp::setMethods()
+{
+    // Assuming methodsDict_ has be properly created, convert the method
+    // dictionaries to actual methods
+
+    label nLevels = 0;
+
+    methods_.clear();
+    methods_.setSize(methodsDict_.size());
+    forAllConstIters(methodsDict_, iter)
+    {
+        // Dictionary entries only
+        // - these method dictioaries are non-regional
+        if (iter().isDict())
+        {
+            methods_.set
+            (
+                nLevels++,
+                // non-verbose would be nicer
+                decompositionMethod::New(iter().dict())
+            );
+        }
+    }
+
+    methods_.setSize(nLevels);
+
+    // Verify that nTotal is correct based on what each method delivers
+
+    Info<< nl
+        << "Decompose " << type() << " [" << nDomains() << "] in "
+        << nLevels << " levels:" << endl;
+
+    label nTotal = 1;
+    forAll(methods_, i)
+    {
+        Info<< "    level " << i << " : " << methods_[i].type()
+            << " [" << methods_[i].nDomains() << "]" << endl;
+
+        nTotal *= methods_[i].nDomains();
+    }
+
+    if (nTotal != nDomains())
+    {
+        FatalErrorInFunction
+            << "Top level decomposition specifies " << nDomains()
+            << " domains which is not equal to the product of"
+            << " all sub domains " << nTotal
+            << exit(FatalError);
+    }
+}
+
+
 // Given a subset of cells determine the new global indices. The problem
 // is in the cells from neighbouring processors which need to be renumbered.
 void Foam::multiLevelDecomp::subsetGlobalCellCells
@@ -277,7 +475,7 @@ void Foam::multiLevelDecomp::decompose
 
             // Get original level0 dictionary and modify numberOfSubdomains
             dictionary level0Dict;
-            forAllConstIter(dictionary, methodsDict_, iter)
+            forAllConstIters(methodsDict_, iter)
             {
                 if (iter().isDict())
                 {
@@ -367,42 +565,45 @@ void Foam::multiLevelDecomp::decompose
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::multiLevelDecomp::multiLevelDecomp(const dictionary& decompositionDict)
+Foam::multiLevelDecomp::multiLevelDecomp(const dictionary& decompDict)
 :
-    decompositionMethod(decompositionDict),
-    methodsDict_(decompositionDict_.subDict(typeName + "Coeffs"))
+    decompositionMethod(decompDict),
+    coeffsDict_
+    (
+        findCoeffsDict
+        (
+            typeName + "Coeffs",
+            (selectionType::EXACT | selectionType::MANDATORY)
+        )
+    ),
+    methodsDict_(),
+    methods_()
 {
-    methods_.setSize(methodsDict_.size());
-    label nLevels = 0;
-    forAllConstIter(dictionary, methodsDict_, iter)
-    {
-        // Ignore primitive entries which may be there for additional control
-        if (iter().isDict())
-        {
-            methods_.set(nLevels++, decompositionMethod::New(iter().dict()));
-        }
-    }
-
-    methods_.setSize(nLevels);
+    createMethodsDict();
+    setMethods();
+}
 
-    label nTot = 1;
-    Info<< "decompositionMethod " << type() << " :" << endl;
-    forAll(methods_, i)
-    {
-        Info<< "    level " << i << " decomposing with " << methods_[i].type()
-            << " into " << methods_[i].nDomains() << " subdomains." << endl;
 
-        nTot *= methods_[i].nDomains();
-    }
-
-    if (nTot != nDomains())
-    {
-        FatalErrorInFunction
-            << "Top level decomposition specifies " << nDomains()
-            << " domains which is not equal to the product of"
-            << " all sub domains " << nTot
-            << exit(FatalError);
-    }
+Foam::multiLevelDecomp::multiLevelDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
+:
+    decompositionMethod(decompDict, regionName),
+    coeffsDict_
+    (
+        findCoeffsDict
+        (
+            typeName + "Coeffs",
+            (selectionType::EXACT | selectionType::MANDATORY)
+        )
+    ),
+    methodsDict_(),
+    methods_()
+{
+    createMethodsDict();
+    setMethods();
 }
 
 
@@ -417,6 +618,7 @@ bool Foam::multiLevelDecomp::parallelAware() const
             return false;
         }
     }
+
     return true;
 }
 
diff --git a/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.H b/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.H
index d11f14280b050f3914c5ea8d0b133876e3203710..dcc40cd8dad4bc330d055179383f20b426dd53eb 100644
--- a/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/multiLevelDecomp/multiLevelDecomp.H
@@ -25,7 +25,7 @@ Class
     Foam::multiLevelDecomp
 
 Description
-    Decomposition given using consecutive application of decomposers.
+    Decompose given using consecutive application of decomposers.
 
 SourceFiles
     multiLevelDecomp.C
@@ -50,6 +50,10 @@ class multiLevelDecomp
 {
     // Private data
 
+        //- Original coefficients for this method
+        const dictionary& coeffsDict_;
+
+        //- Rewritten dictionary of individual methods
         dictionary methodsDict_;
 
         PtrList<decompositionMethod> methods_;
@@ -57,6 +61,13 @@ class multiLevelDecomp
 
     // Private Member Functions
 
+        //- Fill the methodsDict_
+        void createMethodsDict();
+
+        //- Set methods based on the contents of the methodsDict_
+        void setMethods();
+
+
         //- Given connectivity across processors work out connectivity
         //  for a (consistent) subset
         void subsetGlobalCellCells
@@ -98,7 +109,14 @@ public:
     // Constructors
 
         //- Construct given the decomposition dictionary
-        multiLevelDecomp(const dictionary& decompositionDict);
+        multiLevelDecomp(const dictionary& decompDict);
+
+        //- Construct given decomposition dictionary and region name
+        multiLevelDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
 
 
     //- Destructor
diff --git a/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.C b/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.C
index e62e588b9ec353797486cc904707183f4e65dc37..9c4606fce566404b0e0a9af5a62734dd206186cb 100644
--- a/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2012 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -39,14 +39,32 @@ namespace Foam
         dictionary,
         none
     );
+
+    addNamedToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        noDecomp,
+        dictionaryRegion,
+        none
+    );
 }
 
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::noDecomp::noDecomp(const dictionary& decompositionDict)
+Foam::noDecomp::noDecomp(const dictionary& decompDict)
+:
+    decompositionMethod(decompDict)
+{}
+
+
+Foam::noDecomp::noDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
 :
-    decompositionMethod(decompositionDict)
+    decompositionMethod(decompDict, regionName)
 {}
 
 
diff --git a/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.H b/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.H
index 5c3459f16faaaf822a8f044d371be36fb827eb5b..74169998d27a139496f9cd3a7ea4ac7e7445674a 100644
--- a/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/noDecomp/noDecomp.H
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2012-2015 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -25,7 +25,9 @@ Class
     Foam::noDecomp
 
 Description
-    Dummy decomposition method
+    A dummy decomposition method, selected as \c none.
+
+    Method coefficients: \a none
 
 SourceFiles
     noDecomp.C
@@ -52,8 +54,8 @@ class noDecomp
     // Private Member Functions
 
         //- Disallow default bitwise copy construct and assignment
-        void operator=(const noDecomp&);
-        noDecomp(const noDecomp&);
+        void operator=(const noDecomp&) = delete;
+        noDecomp(const noDecomp&) = delete;
 
 
 public:
@@ -65,7 +67,15 @@ public:
     // Constructors
 
         //- Construct given the decomposition dictionary
-        noDecomp(const dictionary& decompositionDict);
+        noDecomp(const dictionary& decompDict);
+
+        //- Construct given the decomposition dictionary and region name
+        noDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
+
 
     //- Destructor
     virtual ~noDecomp()
@@ -74,15 +84,15 @@ public:
 
     // Member Functions
 
-        //- Manual decompose does not care about proc boundaries - is all
-        //  up to the user.
+        //- Manual decompose does not care about proc boundaries - it is all
+        //- up to the user.
         virtual bool parallelAware() const
         {
             return true;
         }
 
-        //- Return for every coordinate the wanted processor number. Use the
-        //  mesh connectivity (if needed)
+        //- Return for every coordinate the wanted processor number.
+        //  Use the mesh connectivity (if needed)
         virtual labelList decompose
         (
             const polyMesh& mesh,
@@ -93,8 +103,8 @@ public:
             return labelList(cc.size(), Pstream::myProcNo());
         }
 
-        //- Return for every coordinate the wanted processor number. Explicitly
-        //  provided connectivity - does not use mesh_.
+        //- Return for every coordinate the wanted processor number.
+        //  Explicitly provided connectivity - does not use mesh_.
         //  The connectivity is equal to mesh.cellCells() except for
         //  - in parallel the cell numbers are global cell numbers (starting
         //    from 0 at processor0 and then incrementing all through the
diff --git a/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C b/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C
index a91b743a18e3532a7fac5c5d6bdc7574e07064cc..ece25f250f86d8b9a23cf9716fda145316614540 100644
--- a/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2017 OpenFOAM Foundation
-     \\/     M anipulation  |
+     \\/     M anipulation  | Copyright (C) 2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -41,8 +41,16 @@ namespace Foam
         simpleGeomDecomp,
         dictionary
     );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        simpleGeomDecomp,
+        dictionaryRegion
+    );
 }
 
+
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // assignToProcessorGroup : given nCells cells and nProcGroup processor
@@ -297,9 +305,19 @@ Foam::labelList Foam::simpleGeomDecomp::decomposeOneProc
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::simpleGeomDecomp::simpleGeomDecomp(const dictionary& decompositionDict)
+Foam::simpleGeomDecomp::simpleGeomDecomp(const dictionary& decompDict)
+:
+    geomDecomp(typeName, decompDict)
+{}
+
+
+Foam::simpleGeomDecomp::simpleGeomDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
 :
-    geomDecomp(decompositionDict, typeName)
+    geomDecomp(typeName, decompDict, regionName)
 {}
 
 
diff --git a/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.H b/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.H
index 9b32d1c50844a25df92786746a36e7b7c45aaf16..c5abc336d9c150288e5858a1d0df7668a067e267 100644
--- a/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/simpleGeomDecomp/simpleGeomDecomp.H
@@ -25,6 +25,14 @@ Class
     Foam::simpleGeomDecomp
 
 Description
+    Simple geometric decomposition, selectable as \c simple
+
+    Method coefficients:
+    \table
+        Property  | Description                 | Required | Default
+        n         | (nx ny nz)                  | yes
+        delta     | delta for rotation matrix   | no | 0.001
+    \endtable
 
 SourceFiles
     simpleGeomDecomp.C
@@ -40,7 +48,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class simpleGeomDecomp Declaration
+                      Class simpleGeomDecomp Declaration
 \*---------------------------------------------------------------------------*/
 
 class simpleGeomDecomp
@@ -69,8 +77,8 @@ class simpleGeomDecomp
         ) const;
 
         //- Disallow default bitwise copy construct and assignment
-        void operator=(const simpleGeomDecomp&);
-        simpleGeomDecomp(const simpleGeomDecomp&);
+        void operator=(const simpleGeomDecomp&) = delete;
+        simpleGeomDecomp(const simpleGeomDecomp&) = delete;
 
 
 public:
@@ -81,8 +89,15 @@ public:
 
     // Constructors
 
-        //- Construct given the decomposition dictionary
-        simpleGeomDecomp(const dictionary& decompositionDict);
+        //- Construct given decomposition dictionary
+        simpleGeomDecomp(const dictionary& decompDict);
+
+        //- Construct given decomposition dictionary and region name
+        simpleGeomDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
 
 
     //- Destructor
diff --git a/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C b/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C
index 2d9dbeff3fa6829be5bc8217877ba40c0f44f2d0..a2a68a871ecbb439b28c521517243dfd2e977548 100644
--- a/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C
+++ b/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.C
@@ -46,10 +46,10 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::structuredDecomp::structuredDecomp(const dictionary& decompositionDict)
+Foam::structuredDecomp::structuredDecomp(const dictionary& decompDict)
 :
-    decompositionMethod(decompositionDict),
-    methodDict_(decompositionDict_.optionalSubDict(typeName + "Coeffs")),
+    decompositionMethod(decompDict),
+    methodDict_(findCoeffsDict(typeName + "Coeffs", selectionType::MANDATORY)),
     patches_(methodDict_.lookup("patches"))
 {
     methodDict_.set("numberOfSubdomains", nDomains());
@@ -76,20 +76,16 @@ Foam::labelList Foam::structuredDecomp::decompose
     const labelHashSet patchIDs(pbm.patchSet(patches_));
 
     label nFaces = 0;
-    forAllConstIter(labelHashSet, patchIDs, iter)
+    for (const label patchi : patchIDs)
     {
-        nFaces += pbm[iter.key()].size();
+        nFaces += pbm[patchi].size();
     }
 
     // Extract a submesh.
     labelHashSet patchCells(2*nFaces);
-    forAllConstIter(labelHashSet, patchIDs, iter)
+    for (const label patchi : patchIDs)
     {
-        const labelUList& fc = pbm[iter.key()].faceCells();
-        forAll(fc, i)
-        {
-            patchCells.insert(fc[i]);
-        }
+        patchCells.insert(pbm[patchi].faceCells());
     }
 
     // Subset the layer of cells next to the patch
@@ -118,9 +114,9 @@ Foam::labelList Foam::structuredDecomp::decompose
     labelList patchFaces(nFaces);
     List<topoDistanceData> patchData(nFaces);
     nFaces = 0;
-    forAllConstIter(labelHashSet, patchIDs, iter)
+    for (const label patchi : patchIDs)
     {
-        const polyPatch& pp = pbm[iter.key()];
+        const polyPatch& pp = pbm[patchi];
         const labelUList& fc = pp.faceCells();
         forAll(fc, i)
         {
diff --git a/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.H b/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.H
index a2374f40a05732e188ca109f91cf360853fe9968..171a51be01cfde4e41919f613b8fc524f62b1654 100644
--- a/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.H
+++ b/src/parallel/decompose/decompositionMethods/structuredDecomp/structuredDecomp.H
@@ -25,7 +25,7 @@ Class
     Foam::structuredDecomp
 
 Description
-    Decomposition by walking out decomposition of patch cells mesh.
+    Walk out decomposition of patch cells mesh - selectable as \c structured.
 
 SourceFiles
     structuredDecomp.C
@@ -41,7 +41,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class structuredDecomp Declaration
+                      Class structuredDecomp Declaration
 \*---------------------------------------------------------------------------*/
 
 class structuredDecomp
@@ -60,8 +60,8 @@ class structuredDecomp
     // Private Member Functions
 
         //- Disallow default bitwise copy construct and assignment
-        void operator=(const structuredDecomp&);
-        structuredDecomp(const structuredDecomp&);
+        void operator=(const structuredDecomp&) = delete;
+        structuredDecomp(const structuredDecomp&) = delete;
 
 
 public:
@@ -73,7 +73,7 @@ public:
     // Constructors
 
         //- Construct given the decomposition dictionary
-        structuredDecomp(const dictionary& decompositionDict);
+        structuredDecomp(const dictionary& decompDict);
 
 
     //- Destructor
diff --git a/src/parallel/decompose/kahipDecomp/kahipDecomp.C b/src/parallel/decompose/kahipDecomp/kahipDecomp.C
index 2bf6d8840577d14f70efacc3909d069e36dcc31d..7774934163e21b59f63ca17b4daea6b9b5a8d737 100644
--- a/src/parallel/decompose/kahipDecomp/kahipDecomp.C
+++ b/src/parallel/decompose/kahipDecomp/kahipDecomp.C
@@ -38,7 +38,20 @@ License
 namespace Foam
 {
     defineTypeNameAndDebug(kahipDecomp, 0);
-    addToRunTimeSelectionTable(decompositionMethod, kahipDecomp, dictionary);
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        kahipDecomp,
+        dictionary
+    );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        kahipDecomp,
+        dictionaryRegion
+    );
 }
 
 
@@ -73,9 +86,6 @@ Foam::label Foam::kahipDecomp::decomposeSerial
     int seed = 0;
     bool verbose = false;
 
-    const dictionary* coeffsDictPtr =
-        decompositionDict_.subDictPtr("kahipCoeffs");
-
     #if WM_LABEL_SIZE == 64
     if (xadj.size()-1 > INT_MAX)
     {
@@ -120,109 +130,91 @@ Foam::label Foam::kahipDecomp::decomposeSerial
         }
     }
 
-    // Additional sizing parameters (testing only)
-    std::map<std::string, std::vector<int>> sizingParams;
+    kahipConfig =
+        configNames.lookupOrDefault("config", coeffsDict_, kahipConfig);
 
-    // Check for user supplied weights and decomp options
-    if (coeffsDictPtr)
-    {
-        const dictionary& coeffDict = *coeffsDictPtr;
+    coeffsDict_.readIfPresent("imbalance", imbalance);
+    coeffsDict_.readIfPresent("verbose", verbose);
 
-        //- Find the key in the dictionary and return the corresponding
-        //  enumeration element based on its name.
-        //  Return the default value if the key was not found in the dictionary.
-        //  Fatal if the enumerated name was incorrect.
+    Info<< "kahipDecomp :"
+        << " config=" << configNames[kahipConfig]
+        << " imbalance=" << imbalance;
 
-        kahipConfig =
-            configNames.lookupOrDefault("config", coeffDict, kahipConfig);
+    if (coeffsDict_.readIfPresent("seed", seed))
+    {
+        Info<< " seed=" << seed;
+    }
 
-        coeffDict.readIfPresent("imbalance", imbalance);
-        coeffDict.readIfPresent("verbose", verbose);
+    // Additional sizing parameters (testing only)
+    std::map<std::string, std::vector<int>> sizingParams;
+
+    List<int> labels;
+    if
+    (
+        coeffsDict_.readIfPresent("hierarchy", labels)
+     && !labels.empty()
+    )
+    {
+        std::vector<int> vec;
+        vec.reserve(labels.size()+1);
 
-        Info<< "kahipDecomp :"
-            << " config=" << configNames[kahipConfig]
-            << " imbalance=" << imbalance;
+        // Verify sizing
 
-        List<int> labels;
-        if
-        (
-            coeffDict.readIfPresent("hierarchy", labels)
-         && !labels.empty()
-        )
+        int n = 1;
+        for (auto val : labels)
         {
-            std::vector<int> vec;
-            vec.reserve(labels.size()+1);
+            n *= val;
+            vec.push_back(val);
+        }
 
-            // Verify sizing
+        if (n != nDomains_)
+        {
+            // Size mismatch. Try to correct.
 
-            int n = 1;
-            for (auto val : labels)
+            if (nDomains_ % n)
             {
-                n *= val;
-                vec.push_back(val);
-            }
+                WarningInFunction
+                    << "Mismatch in number of processors and "
+                    << "hierarchy specified" << flatOutput(labels) << endl;
 
-            if (n != nProcessors_)
-            {
-                // Size mismatch. Try to correct.
-
-                if (nProcessors_ % n)
-                {
-                    WarningInFunction
-                        << "Mismatch in number of processors and "
-                        << "hierarchy specified" << flatOutput(labels) << endl;
-
-                    vec.clear();
-                }
-                else
-                {
-                    // Evenly divisible, add extra hierarchy level
-                    vec.push_back(nProcessors_ / n);
-                }
+                vec.clear();
             }
-
-            if (!vec.empty())
+            else
             {
-                sizingParams["hierarchy"] = std::move(vec);
-
-                Info<< " hierarchy=" << flatOutput(labels);
+                // Evenly divisible, add extra hierarchy level
+                vec.push_back(nDomains_ / n);
             }
         }
 
-        if
-        (
-            coeffDict.readIfPresent("distance", labels)
-         && !labels.empty()
-        )
+        if (!vec.empty())
         {
-            std::vector<int> vec(labels.size());
-
-            forAll(labels, i)
-            {
-                vec[i] = labels[i];
-            }
-
-            sizingParams["distance"] = std::move(vec);
-
-            Info<< " distance=" << flatOutput(labels);
+            sizingParams["hierarchy"] = std::move(vec);
+            Info<< " hierarchy=" << flatOutput(labels);
         }
+    }
+
+    if
+    (
+        coeffsDict_.readIfPresent("distance", labels)
+     && !labels.empty()
+    )
+    {
+        std::vector<int> vec(labels.size());
 
-        if (coeffDict.readIfPresent("seed", seed))
+        forAll(labels, i)
         {
-            Info<< " seed=" << seed;
+            vec[i] = labels[i];
         }
 
-        Info<< endl;
-    }
-    else
-    {
-        Info<< "kahipDecomp :"
-            << " config=" << configNames[kahipConfig]
-            << " imbalance=" << imbalance << endl;
+        sizingParams["distance"] = std::move(vec);
+        Info<< " distance=" << flatOutput(labels);
     }
 
+    Info<< endl;
+
+
     // Number of partitions
-    int nParts = nProcessors_;
+    int nParts = nDomains_;
 
     // Output: number of cut edges
     int edgeCut = 0;
@@ -322,9 +314,19 @@ Foam::label Foam::kahipDecomp::decomposeSerial
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::kahipDecomp::kahipDecomp(const dictionary& decompositionDict)
+Foam::kahipDecomp::kahipDecomp(const dictionary& decompDict)
+:
+    metisLikeDecomp(typeName, decompDict, selectionType::NULL_DICT)
+{}
+
+
+Foam::kahipDecomp::kahipDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
 :
-    metisLikeDecomp(decompositionDict)
+    metisLikeDecomp(typeName, decompDict, regionName, selectionType::NULL_DICT)
 {}
 
 
diff --git a/src/parallel/decompose/kahipDecomp/kahipDecomp.H b/src/parallel/decompose/kahipDecomp/kahipDecomp.H
index c399a68e01043043cc5bd8893b000113af7a6315..7084836a1660f1194023010351fbd1839cdb06e0 100644
--- a/src/parallel/decompose/kahipDecomp/kahipDecomp.H
+++ b/src/parallel/decompose/kahipDecomp/kahipDecomp.H
@@ -31,6 +31,8 @@ Description
     When run in parallel will collect the entire graph on to the master,
     decompose and send back.
 
+    Coefficients dictionary: \a kahipCoeffs, \a coeffs.
+
     \verbatim
     numberOfSubdomains   N;
     method               kahip;
@@ -42,12 +44,12 @@ Description
     }
     \endverbatim
 
-    Where the coefficients dictionary is optional, as are all its entries:
+    Method coefficients:
     \table
-        Property  | Description                                 | Default value
-        config    | fast / eco / strong                         | fast
-        imbalance | imbalance on cells between domains          | 0.01
-        seed      | initial value for random number generator   | 0
+        Property  | Description                          | Required | Default
+        config    | fast / eco / strong                  | no       | fast
+        imbalance | imbalance on cells between domains   | no       | 0.01
+        seed      | initial value for random number generator | no  | 0
     \endtable
 
 SourceFiles
@@ -114,7 +116,14 @@ public:
     // Constructors
 
         //- Construct given the decomposition dictionary
-        kahipDecomp(const dictionary& decompositionDict);
+        kahipDecomp(const dictionary& decompDict);
+
+        //- Construct given the decomposition dictionary and region name
+        kahipDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
 
 
     //- Destructor
diff --git a/src/parallel/decompose/metisDecomp/metisDecomp.C b/src/parallel/decompose/metisDecomp/metisDecomp.C
index efd0d64b1fa3165c51bcba85de9efa8411e0d00e..d6a4f5ea983df8e50905719c1b7cd50034e0b7fc 100644
--- a/src/parallel/decompose/metisDecomp/metisDecomp.C
+++ b/src/parallel/decompose/metisDecomp/metisDecomp.C
@@ -3,7 +3,7 @@
   \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
    \\    /   O peration     |
     \\  /    A nd           | Copyright (C) 2011-2016 OpenFOAM Foundation
-     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
+     \\/     M anipulation  | Copyright (C) 2016-2017 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -39,7 +39,20 @@ extern "C"
 namespace Foam
 {
     defineTypeNameAndDebug(metisDecomp, 0);
-    addToRunTimeSelectionTable(decompositionMethod, metisDecomp, dictionary);
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        metisDecomp,
+        dictionary
+    );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        metisDecomp,
+        dictionaryRegion
+    );
 }
 
 
@@ -148,19 +161,19 @@ Foam::label Foam::metisDecomp::decomposeSerial
         {
             processorWeights /= sum(processorWeights);
 
-            if (processorWeights.size() != nProcessors_)
+            if (processorWeights.size() != nDomains_)
             {
                 FatalErrorInFunction
                     << "Number of processor weights "
                     << processorWeights.size()
-                    << " does not equal number of domains " << nProcessors_
+                    << " does not equal number of domains " << nDomains_
                     << exit(FatalError);
             }
         }
     }
 
     label ncon = 1;
-    label nProcs = nProcessors_;
+    label nProcs = nDomains_;
 
     // Output: cell -> processor addressing
     decomp.setSize(numCells);
@@ -213,9 +226,19 @@ Foam::label Foam::metisDecomp::decomposeSerial
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::metisDecomp::metisDecomp(const dictionary& decompositionDict)
+Foam::metisDecomp::metisDecomp(const dictionary& decompDict)
+:
+    metisLikeDecomp(typeName, decompDict, selectionType::NULL_DICT)
+{}
+
+
+Foam::metisDecomp::metisDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
 :
-    metisLikeDecomp(decompositionDict)
+    metisLikeDecomp(typeName, decompDict, regionName, selectionType::NULL_DICT)
 {}
 
 
diff --git a/src/parallel/decompose/metisDecomp/metisDecomp.H b/src/parallel/decompose/metisDecomp/metisDecomp.H
index d037fab95fecd93e5276f240cb30fcc626cbcdae..65e8f75182f340026f3a4c2a718c19670ba71646 100644
--- a/src/parallel/decompose/metisDecomp/metisDecomp.H
+++ b/src/parallel/decompose/metisDecomp/metisDecomp.H
@@ -30,24 +30,26 @@ Description
     When run in parallel will collect the entire graph on to the master,
     decompose and send back.
 
+    Coefficients dictionary: \a metisCoeffs, \a coeffs.
+
     \verbatim
     numberOfSubdomains   N;
     method               metis;
 
     metisCoeffs
     {
-        method          recursive;  // k-way
+        method           recursive;  // k-way
         options          ( ...);
-        processorWeights (   ... );
+        processorWeights ( ... );
     }
     \endverbatim
 
-    Where the coefficients dictionary is optional, as are all its entries:
+    Method coefficients:
     \table
-        Property  | Description                             | Default value
-        method    | recursive / k-way                       | recursive
-        options   | metis options                           |
-        processorWeights | list of weighting per partition  |
+        Property  | Description                 | Required | Default
+        method    | recursive / k-way           | no | recursive
+        options   | metis options               | no
+        processorWeights | list of weighting per partition  | no
     \endtable
 
 SourceFiles
@@ -97,7 +99,14 @@ public:
     // Constructors
 
         //- Construct given the decomposition dictionary
-        metisDecomp(const dictionary& decompositionDict);
+        metisDecomp(const dictionary& decompDict);
+
+        //- Construct given the decomposition dictionary and region name
+        metisDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
 
 
     //- Destructor
diff --git a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C
index 610de99d68ae08056909258ebf7ebb03e42961f1..08a146053e285ea30b4354afac0e2d88f12ba09a 100644
--- a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C
+++ b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.C
@@ -228,7 +228,20 @@ License
 namespace Foam
 {
     defineTypeNameAndDebug(ptscotchDecomp, 0);
-    addToRunTimeSelectionTable(decompositionMethod, ptscotchDecomp, dictionary);
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        ptscotchDecomp,
+        dictionary
+    );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        ptscotchDecomp,
+        dictionaryRegion
+    );
 }
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
@@ -478,56 +491,50 @@ Foam::label Foam::ptscotchDecomp::decompose
     }
 
     // Dump graph
-    if (decompositionDict_.found("scotchCoeffs"))
+    if (coeffsDict_.lookupOrDefault("writeGraph", false))
     {
-        const dictionary& scotchCoeffs =
-            decompositionDict_.subDict("scotchCoeffs");
+        OFstream str
+        (
+            graphPath_ + "_" + Foam::name(Pstream::myProcNo()) + ".dgr"
+        );
 
-        if (scotchCoeffs.lookupOrDefault("writeGraph", false))
+        Pout<< "Dumping Scotch graph file to " << str.name() << endl
+            << "Use this in combination with dgpart." << endl;
+
+        globalIndex globalCells(xadjSize-1);
+
+        // Distributed graph file (.grf)
+        const label version = 2;
+        str << version << nl;
+        // Number of files (procglbnbr)
+        str << Pstream::nProcs();
+        // My file number (procloc)
+        str << ' ' << Pstream::myProcNo() << nl;
+
+        // Total number of vertices (vertglbnbr)
+        str << globalCells.size();
+        // Total number of connections (edgeglbnbr)
+        str << ' ' << returnReduce(xadj[xadjSize-1], sumOp<label>()) << nl;
+        // Local number of vertices (vertlocnbr)
+        str << xadjSize-1;
+        // Local number of connections (edgelocnbr)
+        str << ' ' << xadj[xadjSize-1] << nl;
+        // Numbering starts from 0
+        label baseval = 0;
+        // 100*hasVertlabels+10*hasEdgeWeights+1*hasVertWeighs
+        str << baseval << ' ' << "000" << nl;
+        for (label celli = 0; celli < xadjSize-1; celli++)
         {
-            OFstream str
-            (
-               graphPath_ + "_" + Foam::name(Pstream::myProcNo()) + ".dgr"
-            );
-
-            Pout<< "Dumping Scotch graph file to " << str.name() << endl
-                << "Use this in combination with dgpart." << endl;
-
-            globalIndex globalCells(xadjSize-1);
-
-            // Distributed graph file (.grf)
-            label version = 2;
-            str << version << nl;
-            // Number of files (procglbnbr)
-            str << Pstream::nProcs();
-            // My file number (procloc)
-            str << ' ' << Pstream::myProcNo() << nl;
-
-            // Total number of vertices (vertglbnbr)
-            str << globalCells.size();
-            // Total number of connections (edgeglbnbr)
-            str << ' ' << returnReduce(xadj[xadjSize-1], sumOp<label>())
-                << nl;
-            // Local number of vertices (vertlocnbr)
-            str << xadjSize-1;
-            // Local number of connections (edgelocnbr)
-            str << ' ' << xadj[xadjSize-1] << nl;
-            // Numbering starts from 0
-            label baseval = 0;
-            // 100*hasVertlabels+10*hasEdgeWeights+1*hasVertWeighs
-            str << baseval << ' ' << "000" << nl;
-            for (label celli = 0; celli < xadjSize-1; celli++)
-            {
-                label start = xadj[celli];
-                label end = xadj[celli+1];
-                str << end-start;
+            const label start = xadj[celli];
+            const label end = xadj[celli+1];
 
-                for (label i = start; i < end; i++)
-                {
-                    str << ' ' << adjncy[i];
-                }
-                str << nl;
+            str << end-start; // size
+
+            for (label i = start; i < end; i++)
+            {
+                str << ' ' << adjncy[i];
             }
+            str << nl;
         }
     }
 
@@ -538,27 +545,19 @@ Foam::label Foam::ptscotchDecomp::decompose
     SCOTCH_Strat stradat;
     check(SCOTCH_stratInit(&stradat), "SCOTCH_stratInit");
 
-    if (decompositionDict_.found("scotchCoeffs"))
+    string strategy;
+    if (coeffsDict_.readIfPresent("strategy", strategy))
     {
-        const dictionary& scotchCoeffs =
-            decompositionDict_.subDict("scotchCoeffs");
-
-
-        string strategy;
-        if (scotchCoeffs.readIfPresent("strategy", strategy))
+        if (debug)
         {
-            if (debug)
-            {
-                Info<< "ptscotchDecomp : Using strategy " << strategy << endl;
-            }
-            SCOTCH_stratDgraphMap(&stradat, strategy.c_str());
-            //fprintf(stdout, "S\tStrat=");
-            //SCOTCH_stratSave(&stradat, stdout);
-            //fprintf(stdout, "\n");
+            Info<< "ptscotchDecomp : Using strategy " << strategy << endl;
         }
+        SCOTCH_stratDgraphMap(&stradat, strategy.c_str());
+        //fprintf(stdout, "S\tStrat=");
+        //SCOTCH_stratSave(&stradat, stdout);
+        //fprintf(stdout, "\n");
     }
 
-
     // Graph
     // ~~~~~
 
@@ -632,7 +631,6 @@ Foam::label Foam::ptscotchDecomp::decompose
     }
 
 
-
     if (debug)
     {
         Pout<< "SCOTCH_dgraphInit" << endl;
@@ -697,14 +695,11 @@ Foam::label Foam::ptscotchDecomp::decompose
     check(SCOTCH_archInit(&archdat), "SCOTCH_archInit");
 
     List<label> processorWeights;
-    if (decompositionDict_.found("scotchCoeffs"))
-    {
-        const dictionary& scotchCoeffs =
-            decompositionDict_.subDict("scotchCoeffs");
-
-        scotchCoeffs.readIfPresent("processorWeights", processorWeights);
-    }
-    if (processorWeights.size())
+    if
+    (
+        coeffsDict_.readIfPresent("processorWeights", processorWeights)
+     && processorWeights.size()
+    )
     {
         if (debug)
         {
@@ -716,7 +711,7 @@ Foam::label Foam::ptscotchDecomp::decompose
         (
             SCOTCH_archCmpltw
             (
-                &archdat, nProcessors_, processorWeights.begin()
+                &archdat, nDomains_, processorWeights.begin()
             ),
             "SCOTCH_archCmpltw"
         );
@@ -729,7 +724,7 @@ Foam::label Foam::ptscotchDecomp::decompose
         }
         check
         (
-            SCOTCH_archCmplt(&archdat, nProcessors_),
+            SCOTCH_archCmplt(&archdat, nDomains_),
             "SCOTCH_archCmplt"
         );
     }
@@ -778,7 +773,7 @@ Foam::label Foam::ptscotchDecomp::decompose
     //    SCOTCH_dgraphPart
     //    (
     //        &grafdat,
-    //        nProcessors_,       // partnbr
+    //        nDomains_,          // partnbr
     //        &stradat,           // const SCOTCH_Strat *
     //        finalDecomp.begin() // parttab
     //    ),
@@ -802,9 +797,21 @@ Foam::label Foam::ptscotchDecomp::decompose
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::ptscotchDecomp::ptscotchDecomp(const dictionary& decompositionDict)
+Foam::ptscotchDecomp::ptscotchDecomp(const dictionary& decompDict)
+:
+    decompositionMethod(decompDict),
+    coeffsDict_(findCoeffsDict("scotchCoeffs", selectionType::NULL_DICT))
+{}
+
+
+Foam::ptscotchDecomp::ptscotchDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
 :
-    decompositionMethod(decompositionDict)
+    decompositionMethod(decompDict, regionName),
+    coeffsDict_(findCoeffsDict("scotchCoeffs", selectionType::NULL_DICT))
 {}
 
 
diff --git a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.H b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.H
index a9146ae9e6ffb920872d42f5f8272b3786765851..9d613cd9280fc4c56f62b372515fb6470820495a 100644
--- a/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.H
+++ b/src/parallel/decompose/ptscotchDecomp/ptscotchDecomp.H
@@ -26,8 +26,11 @@ Class
 
 Description
     PTScotch domain decomposition.
+
     For the main details about how to define the strategies, see scotchDecomp.
 
+    Coefficients dictionary: \a scotchCoeffs, \a coeffs.
+
     Nonetheless, when decomposing in parallel, using <tt>writeGraph=true</tt>
     will write out \c .dgr files for debugging. For example, use these files
     with \c dgpart as follows:
@@ -57,7 +60,7 @@ namespace Foam
 {
 
 /*---------------------------------------------------------------------------*\
-                           Class ptscotchDecomp Declaration
+                       Class ptscotchDecomp Declaration
 \*---------------------------------------------------------------------------*/
 
 class ptscotchDecomp
@@ -66,6 +69,9 @@ class ptscotchDecomp
 {
     // Private data
 
+        //- Original coefficients for this method
+        dictionary coeffsDict_;
+
         //- Output path and name for optional grf file.
         fileName graphPath_;
 
@@ -111,8 +117,12 @@ public:
 
     // Constructors
 
-        //- Construct given the decomposition dictionary and mesh
-        ptscotchDecomp(const dictionary& decompositionDict);
+        //- Construct given the decomposition dictionary
+        ptscotchDecomp(const dictionary& decompDict);
+
+
+        //- Construct given the decomposition dictionary and region name
+        ptscotchDecomp(const dictionary& decompDict, const word& regionName);
 
 
     //- Destructor
diff --git a/src/parallel/decompose/scotchDecomp/scotchDecomp.C b/src/parallel/decompose/scotchDecomp/scotchDecomp.C
index 88f14fac7caf97de1f98830116d2fc4770bef8ba..a29ecc63f76b3c04ca955e13a48b2f6a578e5f78 100644
--- a/src/parallel/decompose/scotchDecomp/scotchDecomp.C
+++ b/src/parallel/decompose/scotchDecomp/scotchDecomp.C
@@ -155,6 +155,13 @@ namespace Foam
         scotchDecomp,
         dictionary
     );
+
+    addToRunTimeSelectionTable
+    (
+        decompositionMethod,
+        scotchDecomp,
+        dictionaryRegion
+    );
 }
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
@@ -184,11 +191,8 @@ Foam::label Foam::scotchDecomp::decomposeSerial
     List<label>& decomp
 )
 {
-    const dictionary* coeffsDictPtr =
-        decompositionDict_.subDictPtr("scotchCoeffs");
-
     // Dump graph
-    if (coeffsDictPtr && coeffsDictPtr->lookupOrDefault("writeGraph", false))
+    if (coeffsDict_.lookupOrDefault("writeGraph", false))
     {
         OFstream str(graphPath_);
 
@@ -230,20 +234,17 @@ Foam::label Foam::scotchDecomp::decomposeSerial
     SCOTCH_Strat stradat;
     check(SCOTCH_stratInit(&stradat), "SCOTCH_stratInit");
 
-    if (coeffsDictPtr)
+    string strategy;
+    if (coeffsDict_.readIfPresent("strategy", strategy))
     {
-        string strategy;
-        if (coeffsDictPtr->readIfPresent("strategy", strategy))
+        if (debug)
         {
-            if (debug)
-            {
-                Info<< "scotchDecomp : Using strategy " << strategy << endl;
-            }
-            SCOTCH_stratGraphMap(&stradat, strategy.c_str());
-            //fprintf(stdout, "S\tStrat=");
-            //SCOTCH_stratSave(&stradat, stdout);
-            //fprintf(stdout, "\n");
+            Info<< "scotchDecomp : Using strategy " << strategy << endl;
         }
+        SCOTCH_stratGraphMap(&stradat, strategy.c_str());
+        //fprintf(stdout, "S\tStrat=");
+        //SCOTCH_stratSave(&stradat, stdout);
+        //fprintf(stdout, "\n");
     }
 
 
@@ -330,8 +331,7 @@ Foam::label Foam::scotchDecomp::decomposeSerial
     List<label> processorWeights;
     if
     (
-        coeffsDictPtr
-     && coeffsDictPtr->readIfPresent("processorWeights", processorWeights)
+        coeffsDict_.readIfPresent("processorWeights", processorWeights)
      && processorWeights.size()
     )
     {
@@ -344,7 +344,7 @@ Foam::label Foam::scotchDecomp::decomposeSerial
         (
             SCOTCH_archCmpltw
             (
-                &archdat, nProcessors_, processorWeights.begin()
+                &archdat, nDomains_, processorWeights.begin()
             ),
             "SCOTCH_archCmpltw"
         );
@@ -353,7 +353,7 @@ Foam::label Foam::scotchDecomp::decomposeSerial
     {
         check
         (
-            SCOTCH_archCmplt(&archdat, nProcessors_),
+            SCOTCH_archCmplt(&archdat, nDomains_),
             "SCOTCH_archCmplt"
         );
 
@@ -433,7 +433,7 @@ Foam::label Foam::scotchDecomp::decomposeSerial
     //    SCOTCH_graphPart
     //    (
     //        &grafdat,
-    //        nProcessors_,   // partnbr
+    //        nDomains_,      // partnbr
     //        &stradat,       // const SCOTCH_Strat *
     //        decomp.begin()  // parttab
     //    ),
@@ -453,9 +453,19 @@ Foam::label Foam::scotchDecomp::decomposeSerial
 
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
-Foam::scotchDecomp::scotchDecomp(const dictionary& decompositionDict)
+Foam::scotchDecomp::scotchDecomp(const dictionary& decompDict)
+:
+    metisLikeDecomp(typeName, decompDict, selectionType::NULL_DICT)
+{}
+
+
+Foam::scotchDecomp::scotchDecomp
+(
+    const dictionary& decompDict,
+    const word& regionName
+)
 :
-    metisLikeDecomp(decompositionDict)
+    metisLikeDecomp(typeName, decompDict, regionName, selectionType::NULL_DICT)
 {}
 
 
diff --git a/src/parallel/decompose/scotchDecomp/scotchDecomp.H b/src/parallel/decompose/scotchDecomp/scotchDecomp.H
index ca182253d7ccce272342dcd07585fa5a835f9772..a32a682f30dd3eb786360585622c57343f7f1328 100644
--- a/src/parallel/decompose/scotchDecomp/scotchDecomp.H
+++ b/src/parallel/decompose/scotchDecomp/scotchDecomp.H
@@ -26,10 +26,13 @@ Class
 
 Description
     Scotch domain decomposition.
+
     When run in parallel will collect the whole graph on to the master,
     decompose and send back. Use ptscotchDecomp for proper distributed
     decomposition.
 
+    Coefficients dictionary: \a scotchCoeffs, \a coeffs.
+
     Quoting from the Scotch forum, on the 2008-08-22 10:09, Francois
     PELLEGRINI posted the following details:
     \verbatim
@@ -262,8 +265,15 @@ public:
 
     // Constructors
 
-        //- Construct given the decomposition dictionary and mesh
-        scotchDecomp(const dictionary& decompositionDict);
+        //- Construct given the decomposition dictionary
+        scotchDecomp(const dictionary& decompDict);
+
+        //- Construct given the decomposition dictionary and region name
+        scotchDecomp
+        (
+            const dictionary& decompDict,
+            const word& regionName
+        );
 
 
     //- Destructor
diff --git a/tutorials/IO/fileHandler/system/decomposeParDict b/tutorials/IO/fileHandler/system/decomposeParDict
index 341581df062ab96de94f4c45669795c7a0f8813d..df7138cff9f0e54e16e032f795bfccd8ac2173a1 100644
--- a/tutorials/IO/fileHandler/system/decomposeParDict
+++ b/tutorials/IO/fileHandler/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (4 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/basic/overLaplacianDyMFoam/heatTransfer/system/decomposeParDict b/tutorials/basic/overLaplacianDyMFoam/heatTransfer/system/decomposeParDict
index 138625c7da8204f29c3935cef7554223317a03c3..47cf5911d3c18e73bab3d365f1979709cbc67da3 100644
--- a/tutorials/basic/overLaplacianDyMFoam/heatTransfer/system/decomposeParDict
+++ b/tutorials/basic/overLaplacianDyMFoam/heatTransfer/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/system/decomposeParDict b/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/system/decomposeParDict
index f6b97abcd50a442e505d3bf1fe7dc8d167bf2ec5..e62ff29c03478732a67a15469b0055546d204e61 100644
--- a/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/system/decomposeParDict
+++ b/tutorials/combustion/PDRFoam/flamePropagationWithObstacles/system/decomposeParDict
@@ -10,31 +10,20 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-numberOfSubdomains   4;
+numberOfSubdomains  4;
 
-method               simple;
+method              simple;
 
-simpleCoeffs
+coeffs
 {
-    n                    (2 2 1);
-    delta                0.001;
-}
-
-hierarchicalCoeffs
-{
-    n                    (2 2 1);
-    delta                0.001;
-    order                xyz;
-}
-
-manualCoeffs
-{
-    dataFile             "decompositionData";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/decomposeParDict b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/decomposeParDict
index 3f544b2738469edd0f82fc37016d0e98b3e4fdb1..a5b0041fbf39a82e3e086171cd7373564da2ba25 100644
--- a/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/decomposeParDict
+++ b/tutorials/combustion/XiDyMFoam/annularCombustorTurbine/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains 6;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               ( 6 1 1 );
-    delta           0.001;
-    order           xyz;
+    n           (6 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 preservePatches (cyclic0 cyclic1 ami0 ami1);
diff --git a/tutorials/combustion/fireFoam/LES/compartmentFire/system/decomposeParDict b/tutorials/combustion/fireFoam/LES/compartmentFire/system/decomposeParDict
index 9a3167e3401c9b9c2d54184ba292c5853a739bd5..1aa2fb3b07a3c55d2f8b8b5d47ecad509dce89f4 100644
--- a/tutorials/combustion/fireFoam/LES/compartmentFire/system/decomposeParDict
+++ b/tutorials/combustion/fireFoam/LES/compartmentFire/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,4 @@ numberOfSubdomains 8;
 
 method      scotch;
 
-simpleCoeffs
-{
-    n               ( 4 1 4 );
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               ( 1 2 2 );
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
-
-metisCoeffs
-{
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/combustion/fireFoam/LES/compartmentFire/system/panelRegion/decomposeParDict b/tutorials/combustion/fireFoam/LES/compartmentFire/system/panelRegion/decomposeParDict
index 183eff948af3d941b15ef7a653ea388d325cfc01..2f9021fa9e3cc09b3fd4ef7aa954252fd6836427 100644
--- a/tutorials/combustion/fireFoam/LES/compartmentFire/system/panelRegion/decomposeParDict
+++ b/tutorials/combustion/fireFoam/LES/compartmentFire/system/panelRegion/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -26,27 +25,9 @@ structuredCoeffs
 
     simpleCoeffs
     {
-         n               ( 5 1 4 );
-         delta           0.001;
+         n           (5 1 4);
+         delta       0.001;
     }
 }
 
-
-hierarchicalCoeffs
-{
-    n               ( 1 2 2 );
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
-
-metisCoeffs
-{
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/decomposeParDict b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/decomposeParDict
index b1c15391bc71ce368f8740e0d555b3953f145d3f..7182f3d1a1e98abe0c862ca218c3129a6806d03c 100644
--- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/decomposeParDict
+++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,26 +18,12 @@ numberOfSubdomains 6;
 
 method          simple;
 
-simpleCoeffs
-{
-    n               (1 3 2);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
-
-scotchCoeffs
+coeffs
 {
+    n           (1 3 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
 }
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/panelRegion/decomposeParDict b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/panelRegion/decomposeParDict
index c08a60ec1daa91b5a493f03198ff0468154cbb04..8428f9470d53d3050437c35584c798edc5b4804b 100644
--- a/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/panelRegion/decomposeParDict
+++ b/tutorials/combustion/fireFoam/LES/oppositeBurningPanels/system/panelRegion/decomposeParDict
@@ -10,14 +10,12 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 6;
 
-
 method          structured;
 
 structuredCoeffs
@@ -33,21 +31,12 @@ structuredCoeffs
     }
 }
 
-
-hierarchicalCoeffs
-{
-    n               (1 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
-
-metisCoeffs
+coeffs
 {
+    n           (1 2 3);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
 }
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/decomposeParDict b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/decomposeParDict
index a2496cc2234dc590da21bade6b24afa6b37ced6c..58435778b83c2b033e4058ae7e3246ef8394972f 100644
--- a/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/decomposeParDict
+++ b/tutorials/combustion/fireFoam/LES/smallPoolFire3D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          hierarchical;
 
-simpleCoeffs
-{
-    n               (1 2 2);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
+coeffs
+    n           (1 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
 }
 
 
diff --git a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/decomposeParDict b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/decomposeParDict
index 5126da72cdc2ec14c654aec86ba8bd9b3f5f2b61..84dc5aecf5420b0023dc91b021e760661ddf16b9 100644
--- a/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/decomposeParDict
+++ b/tutorials/combustion/reactingFoam/RAS/DLR_A_LTS/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,12 @@ numberOfSubdomains 6;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 1 6);
-    delta           0.001;
+    n           (1 1 6);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
-hierarchicalCoeffs
-{
-    n               ( 1 1 1 );
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/decomposeParDict b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/decomposeParDict
index ede2181dfeeee7a102669796ed3d681ebe89b00d..415cda309aa944f386298d23cc12e32169f872b7 100644
--- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/decomposeParDict
+++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2DLTS_GRI_TDAC/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/decomposeParDict b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/decomposeParDict
index 02feb195c5e7c4ce581f0f6e7187785d0a60d558..415cda309aa944f386298d23cc12e32169f872b7 100644
--- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/decomposeParDict
+++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |  
+|  \\    /   O peration     | Version:  plus                                  |
 |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/decomposeParDict b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/decomposeParDict
index ede2181dfeeee7a102669796ed3d681ebe89b00d..415cda309aa944f386298d23cc12e32169f872b7 100644
--- a/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/decomposeParDict
+++ b/tutorials/combustion/reactingFoam/laminar/counterFlowFlame2D_GRI_TDAC/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/decomposeParDict b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/decomposeParDict
index 86fb26d38039367a109768fd72bf3a2c15d7fee6..56c4070c754636b45ba517ef796e5cbebe8d2779 100644
--- a/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/decomposeParDict
+++ b/tutorials/compressible/rhoCentralFoam/LadenburgJet60psi/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,13 @@ numberOfSubdomains 8;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (8 1 1);
-    delta           0.001;
+    n           (8 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
 
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/decomposeParDict b/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/decomposeParDict
index 20edb36158fefaa1a2b0679b42514dfa8053835b..87f1a305f0dde3822a1b5a84b1d53b1fe562f8f0 100644
--- a/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/decomposeParDict
+++ b/tutorials/compressible/rhoPimpleAdiabaticFoam/rutlandVortex2D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains 3;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (3 1 1);
-    delta           0.001;
-    order           xyz;
+    n           (3 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/RAS/squareBendLiq/system/decomposeParDict b/tutorials/compressible/rhoPimpleFoam/RAS/squareBendLiq/system/decomposeParDict
index d34bb5a026204cf6d3b6c148b2a5badd9748775f..b27efc23b92a517e54a65ca512f095be7728810d 100644
--- a/tutorials/compressible/rhoPimpleFoam/RAS/squareBendLiq/system/decomposeParDict
+++ b/tutorials/compressible/rhoPimpleFoam/RAS/squareBendLiq/system/decomposeParDict
@@ -31,13 +31,4 @@ hierarchicalCoeffs
     order           xyz;
 }
 
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict
index 0903cf53158a4c18e07a56aea53beb52e4928632..2ccf121cd38f8dbf0b04c5c04b764c20e7b3f625 100644
--- a/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict
+++ b/tutorials/compressible/rhoPimpleFoam/laminar/helmholtzResonance/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/decomposeParDict b/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/decomposeParDict
index 8427b2c142c019f5b751aa7c95fb6c5cf466b56c..7e1f9ae4302d8b0cda75cfb5665b211f3488d308 100644
--- a/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/decomposeParDict
+++ b/tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains 8;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               ( 2 2 2 );
-    delta           0.001;
-    order           xyz;
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 preservePatches ();
diff --git a/tutorials/compressible/rhoSimpleFoam/squareBend/system/decomposeParDict b/tutorials/compressible/rhoSimpleFoam/squareBend/system/decomposeParDict
index 0ab23bff191475c4fd7034cb13cd6f7b55ab9698..b27efc23b92a517e54a65ca512f095be7728810d 100644
--- a/tutorials/compressible/rhoSimpleFoam/squareBend/system/decomposeParDict
+++ b/tutorials/compressible/rhoSimpleFoam/squareBend/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -32,14 +31,4 @@ hierarchicalCoeffs
     order           xyz;
 }
 
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/decomposeParDict b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/decomposeParDict
index 0ab23bff191475c4fd7034cb13cd6f7b55ab9698..b27efc23b92a517e54a65ca512f095be7728810d 100644
--- a/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/decomposeParDict
+++ b/tutorials/compressible/rhoSimpleFoam/squareBendLiq/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -32,14 +31,4 @@ hierarchicalCoeffs
     order           xyz;
 }
 
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/system/decomposeParDict b/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/system/decomposeParDict
index a456e9fc859a2d1445bb21f0ae902fc742f5f8c8..86086b4912975b9ee91f1297520411cf9bb914b2 100644
--- a/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/system/decomposeParDict
+++ b/tutorials/compressible/sonicFoam/RAS/nacaAirfoil/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,18 +18,11 @@ numberOfSubdomains   6;
 
 method               simple;
 
-simpleCoeffs
+coeffs
 {
-    n                (3 2 1);
-    delta            0.001;
+    n           (3 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n                (3 2 1);
-    delta            0.001;
-    order            xyz;
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmcFoam/freeSpacePeriodic/system/decomposeParDict b/tutorials/discreteMethods/dsmcFoam/freeSpacePeriodic/system/decomposeParDict
index 0c9252b9ad3059016ca05fc7db9c0892d5812512..6cf530be19dd4679beab4deba2c7d18607fa58e3 100644
--- a/tutorials/discreteMethods/dsmcFoam/freeSpacePeriodic/system/decomposeParDict
+++ b/tutorials/discreteMethods/dsmcFoam/freeSpacePeriodic/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 2 2);
-    delta           0.001;
+    n           (1 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmcFoam/freeSpaceStream/system/decomposeParDict b/tutorials/discreteMethods/dsmcFoam/freeSpaceStream/system/decomposeParDict
index 0c9252b9ad3059016ca05fc7db9c0892d5812512..6cf530be19dd4679beab4deba2c7d18607fa58e3 100644
--- a/tutorials/discreteMethods/dsmcFoam/freeSpaceStream/system/decomposeParDict
+++ b/tutorials/discreteMethods/dsmcFoam/freeSpaceStream/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 2 2);
-    delta           0.001;
+    n           (1 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/system/decomposeParDict b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..5092045209040261535188d9d660c1013e78d7df 100644
--- a/tutorials/discreteMethods/dsmcFoam/supersonicCorner/system/decomposeParDict
+++ b/tutorials/discreteMethods/dsmcFoam/supersonicCorner/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/dsmcFoam/wedge15Ma5/system/decomposeParDict b/tutorials/discreteMethods/dsmcFoam/wedge15Ma5/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..5092045209040261535188d9d660c1013e78d7df 100644
--- a/tutorials/discreteMethods/dsmcFoam/wedge15Ma5/system/decomposeParDict
+++ b/tutorials/discreteMethods/dsmcFoam/wedge15Ma5/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/decomposeParDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/decomposeParDict
index fb9d7877dc2fe91ccf400fe1476887591ec0a04d..3bac4854f0b122a5f9dcba7c9f707e0510c46e5b 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/decomposeParDict
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeArgon/system/decomposeParDict
@@ -15,34 +15,15 @@ FoamFile
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-
 numberOfSubdomains 2;
 
 method              simple;
 
-simpleCoeffs
-{
-    n               (2 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
+coeffs
 {
-    dataFile        "";
+    n           (2 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-distributed     no;
-
-roots
-(
-);
-
-
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/decomposeParDict b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/decomposeParDict
index c4d7c417233a399abfba32e1a73c3e3278478860..55b2a30194c0f0e332a7f7499dc942a891ad1c50 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/decomposeParDict
+++ b/tutorials/discreteMethods/molecularDynamics/mdEquilibrationFoam/periodicCubeWater/system/decomposeParDict
@@ -15,34 +15,16 @@ FoamFile
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-
 numberOfSubdomains 4;
 
 method              simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots
-(
-);
-
 
 // ************************************************************************* //
diff --git a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/decomposeParDict b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/decomposeParDict
index e1dbbc6af0f19e4d2d70b920eb762413a27053ea..ce2d6502b1d56e553f2b31d8dd4428eb12dd5c0b 100644
--- a/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/decomposeParDict
+++ b/tutorials/discreteMethods/molecularDynamics/mdFoam/nanoNozzle/system/decomposeParDict
@@ -15,34 +15,15 @@ FoamFile
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-
 numberOfSubdomains 4;
 
 method              scotch;
 
-simpleCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
+coeffs
 {
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-distributed     no;
-
-roots
-(
-);
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/decomposeParDict b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/decomposeParDict
index 5c21df91e4f13184fbe5d8071d21671dbb7543a3..079c19746768822a38246f4e5d402e09f9f26bb9 100644
--- a/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/decomposeParDict
+++ b/tutorials/heatTransfer/buoyantBoussinesqSimpleFoam/iglooWithFridges/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,23 +18,13 @@ numberOfSubdomains 2;
 
 method          scotch;
 
-simpleCoeffs
-{
-    n               (4 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (3 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
+//coeffs
+//{
+//    n           (3 2 1);
+//    delta       0.001;
+//    order       xyz;
+//    dataFile    "cellDecomposition";
+//}
 
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/bottomWater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/bottomWater/decomposeParDict
deleted file mode 100644
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/bottomWater/decomposeParDict
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-method          scotch;
-// method          hierarchical;
-// method          simple;
-// method          manual;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/bottomWater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/bottomWater/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/bottomWater/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/decomposeParDict
index 916ce1f4e204d4cee21cee1822ededf16b2b7ed0..bc03b02cb93adbd3e57ecbbaa5db708dc1c8a3f9 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,34 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
     dataFile    "decompositionData";
 }
 
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/heater/decomposeParDict
deleted file mode 100644
index 91ef8baa9e4462c98d8c4cacd8dc2529a008fdba..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/heater/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/heater/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/heater/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/leftSolid/decomposeParDict
deleted file mode 100644
index 91ef8baa9e4462c98d8c4cacd8dc2529a008fdba..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/leftSolid/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/leftSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/leftSolid/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/rightSolid/decomposeParDict
deleted file mode 100644
index 91ef8baa9e4462c98d8c4cacd8dc2529a008fdba..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/rightSolid/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/rightSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/rightSolid/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/topAir/decomposeParDict
deleted file mode 100644
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/topAir/decomposeParDict
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-method          scotch;
-// method          hierarchical;
-// method          simple;
-// method          manual;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/topAir/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/topAir/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/air/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/air/decomposeParDict
deleted file mode 100644
index ffe8be78e47eae2bf64e33d69105d0884f8eeea1..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/air/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/air/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/air/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/air/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/decomposeParDict
index 1bdeb6b7ad97e043458b2ea4af44217ce1d4ee10..c1498e9029e2a590cf602fe8f26d21b66dd1fc9e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/decomposeParDict
@@ -10,38 +10,24 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
 
 method          scotch;
 
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
 {
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/decomposeParDict
deleted file mode 100644
index ffe8be78e47eae2bf64e33d69105d0884f8eeea1..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/solid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/solid/decomposeParDict
deleted file mode 100644
index ffe8be78e47eae2bf64e33d69105d0884f8eeea1..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/solid/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/solid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/solid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/solid/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh
new file mode 100755
index 0000000000000000000000000000000000000000..7f27e81ea3b8060659269bd4e3d75c12971e8b4a
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh
@@ -0,0 +1,26 @@
+#!/bin/sh
+cd ${0%/*} || exit 1                        # Run from this directory
+. $WM_PROJECT_DIR/bin/tools/RunFunctions    # Tutorial run functions
+
+runApplication blockMesh
+runApplication topoSet
+runApplication splitMeshRegions -cellZones -overwrite
+
+# Remove fluid fields from solid regions (important for post-processing)
+for i in heater leftSolid rightSolid
+do
+   rm -f 0*/$i/{nut,alphat,epsilon,k,U,p_rgh}
+done
+
+for i in bottomWater topAir heater leftSolid rightSolid
+do
+   runApplication -s $i changeDictionary -region $i
+done
+
+
+echo
+echo "Creating files for paraview post-processing"
+echo
+paraFoam -touchAll
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
index 5cf86d4458f6b06da2f0d9f4f5e34acd5faab0d5..efb377ca892c3f9c4ebb2d71d563ad862b98bc55 100755
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allrun
@@ -2,22 +2,7 @@
 cd ${0%/*} || exit 1                        # Run from this directory
 . $WM_PROJECT_DIR/bin/tools/RunFunctions    # Tutorial run functions
 
-runApplication blockMesh
-runApplication topoSet
-runApplication splitMeshRegions -cellZones -overwrite
-
-# remove fluid fields from solid regions (important for post-processing)
-for i in heater leftSolid rightSolid
-do
-   rm -f 0*/$i/{nut,alphat,epsilon,k,U,p_rgh}
-done
-
-
-for i in bottomWater topAir heater leftSolid rightSolid
-do
-   runApplication -s $i changeDictionary -region $i
-done
-
+runApplication ./Allmesh
 
 #-- Run on single processor
 #runApplication $(getApplication)
@@ -31,10 +16,4 @@ runParallel $(getApplication)
 # Reconstruct
 runApplication reconstructPar -allRegions
 
-
-echo
-echo "creating files for paraview post-processing"
-echo
-paraFoam -touchAll
-
 #------------------------------------------------------------------------------
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/README.txt b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/README.txt
index 647f11981d3984198560d99dcbf2e7ef5833ee40..a50b770783cbce9ff7ce80fd29f73ff1348fd17b 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/README.txt
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/README.txt
@@ -1,2 +1,6 @@
-The 0/ field files contain nonsense patchFields. All interesting
-work is done using the changeDictionaryDicts.
+- The 0/ field files contain nonsense patchFields.
+  All interesting work is done using the changeDictionaryDicts.
+
+- The uses region-specific decomposition for the heater.
+  This can be useful when the solid region is relatively small and a
+  normal decomposition would result in very few cells per process.
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomWater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomWater/decomposeParDict
deleted file mode 100644
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomWater/decomposeParDict
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-method          scotch;
-// method          hierarchical;
-// method          simple;
-// method          manual;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomWater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomWater/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomWater/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
index 916ce1f4e204d4cee21cee1822ededf16b2b7ed0..e630d52119812f1ca4e10efdeb5be194b1de3266 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -23,38 +20,29 @@ numberOfSubdomains  4;
 // preserveFaceZones (heater solid1 solid3);
 
 method          scotch;
+
 // method          hierarchical;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+regions
 {
-    n           (2 2 1);
-    delta       0.001;
+    heater
+    {
+        numberOfSubdomains  1;
+        method          none;
+
+        coeffs
+        {
+            n       (1 1 1);
+            delta   0.001;
+        }
+    }
 }
 
-hierarchicalCoeffs
+coeffs
 {
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    n       (2 2 1);
 }
 
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict
deleted file mode 100644
index 91ef8baa9e4462c98d8c4cacd8dc2529a008fdba..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict
deleted file mode 100644
index 91ef8baa9e4462c98d8c4cacd8dc2529a008fdba..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict
deleted file mode 100644
index 91ef8baa9e4462c98d8c4cacd8dc2529a008fdba..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict
deleted file mode 100644
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-method          scotch;
-// method          hierarchical;
-// method          simple;
-// method          manual;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..7263dc66d4ab81b8564c66f1ab7dfdeb659e9260 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
index 742a2495dfc905d4656c9dcbfdae184dd421e8de..747b5114b73dac97b0632688eea1e670ee4bbe30 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          hierarchical;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..6f60341487a3c0f21b33a99bd257a6d51b459db9 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/heater/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,5 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
deleted file mode 100644
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-method          scotch;
-// method          hierarchical;
-// method          simple;
-// method          manual;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..d6dd0b5c0636316931ced9573920d72e86821030
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
@@ -0,0 +1 @@
+../heater/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
deleted file mode 100644
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-method          scotch;
-// method          hierarchical;
-// method          simple;
-// method          manual;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..d6dd0b5c0636316931ced9573920d72e86821030
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
@@ -0,0 +1 @@
+../heater/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/decomposeParDict
deleted file mode 100644
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/decomposeParDict
+++ /dev/null
@@ -1,72 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-method          scotch;
-// method          hierarchical;
-// method          simple;
-// method          manual;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..3523816fd8c788c5a2aa7e8d88445e06a904b3ff
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/decomposeParDict
@@ -0,0 +1 @@
+../bottomAir/decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/cabin/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/cabin/decomposeParDict
deleted file mode 100644
index 0d50f520e43d3ae32220887e13bae91efe0c5713..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/cabin/decomposeParDict
+++ /dev/null
@@ -1,25 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/cabin/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/cabin/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/cabin/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/decomposeParDict
index 0d50f520e43d3ae32220887e13bae91efe0c5713..2ccf121cd38f8dbf0b04c5c04b764c20e7b3f625 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/decomposeParDict
@@ -10,16 +10,12 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
 
 method          scotch;
 
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/windshield/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/windshield/decomposeParDict
deleted file mode 100644
index 0d50f520e43d3ae32220887e13bae91efe0c5713..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/windshield/decomposeParDict
+++ /dev/null
@@ -1,25 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/windshield/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/windshield/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/windshield/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/cabin/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/cabin/decomposeParDict
deleted file mode 100644
index e0a1bb5397accfbb9f619f6243a620eeba05dd2f..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/cabin/decomposeParDict
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          simple;
-
-simpleCoeffs
-{
-    n           (1 2 2);
-    delta       0.001;
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/cabin/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/cabin/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/cabin/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/decomposeParDict
index e0a1bb5397accfbb9f619f6243a620eeba05dd2f..93b519fc7d134a7065acb6c6163113feb573c77e 100644
--- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,9 @@ numberOfSubdomains  4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
     n           (1 2 2);
-    delta       0.001;
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/exterior/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/exterior/decomposeParDict
deleted file mode 100644
index e0a1bb5397accfbb9f619f6243a620eeba05dd2f..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/exterior/decomposeParDict
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          simple;
-
-simpleCoeffs
-{
-    n           (1 2 2);
-    delta       0.001;
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/exterior/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/exterior/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/exterior/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/ice/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/ice/decomposeParDict
deleted file mode 100644
index e0a1bb5397accfbb9f619f6243a620eeba05dd2f..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/ice/decomposeParDict
+++ /dev/null
@@ -1,29 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      decomposeParDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          simple;
-
-simpleCoeffs
-{
-    n           (1 2 2);
-    delta       0.001;
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/ice/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/ice/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/ice/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/air/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/air/decomposeParDict
index d7b4b378864c705976d51dc47b4cf07551bb3607..fbeb943163d17e86ede0e9cce6c9d2a3705cbe22 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/air/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/air/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,11 @@ numberOfSubdomains 4;
 
 method          scotch;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/decomposeParDict
index d7b4b378864c705976d51dc47b4cf07551bb3607..fbeb943163d17e86ede0e9cce6c9d2a3705cbe22 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,11 @@ numberOfSubdomains 4;
 
 method          scotch;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/porous/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/porous/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..5092045209040261535188d9d660c1013e78d7df 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/porous/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/heatExchanger/system/porous/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/jouleHeatingSolid/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/jouleHeatingSolid/system/decomposeParDict
index 5448946b393246ebd70ba0b83352f9c4d257c619..22490ad0e50a658a510aafc9d56cba42822f46bb 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/jouleHeatingSolid/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/jouleHeatingSolid/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,5 +18,4 @@ numberOfSubdomains 4;
 
 method          scotch;
 
-
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict
deleted file mode 100644
index ffe8be78e47eae2bf64e33d69105d0884f8eeea1..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..b3f8705217e0353b47da1fc4184a3c93564de6cd 100644
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,46 +24,17 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
 }
 
 scotchCoeffs
 {
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
+    //processorWeights ( 1 1 1 1 );
     //writeGraph  true;
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
 
 // ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/decomposeParDict
deleted file mode 100644
index 222243ec9501037594d2f9e0c37fce88d67698c2..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/decomposeParDict
+++ /dev/null
@@ -1,46 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict
deleted file mode 100644
index 222243ec9501037594d2f9e0c37fce88d67698c2..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict
+++ /dev/null
@@ -1,46 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict
deleted file mode 100644
index 222243ec9501037594d2f9e0c37fce88d67698c2..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict
+++ /dev/null
@@ -1,46 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/decomposeParDict
deleted file mode 100644
index ffe8be78e47eae2bf64e33d69105d0884f8eeea1..0000000000000000000000000000000000000000
--- a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/decomposeParDict
+++ /dev/null
@@ -1,44 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                  |
-|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
-    object      decomposeParDict;
-}
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-numberOfSubdomains  4;
-
-method          scotch;
-
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/decomposeParDict b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/decomposeParDict
new file mode 120000
index 0000000000000000000000000000000000000000..46638e60f61f453fde97c51772ad6111792db0f6
--- /dev/null
+++ b/tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/decomposeParDict
@@ -0,0 +1 @@
+../decomposeParDict
\ No newline at end of file
diff --git a/tutorials/incompressible/icoFoam/cavityMappingTest/system/coarseMesh/decomposeParDict b/tutorials/incompressible/icoFoam/cavityMappingTest/system/coarseMesh/decomposeParDict
index cf5823a268b17fd8933f76576d5cef47162faec6..2ccf121cd38f8dbf0b04c5c04b764c20e7b3f625 100644
--- a/tutorials/incompressible/icoFoam/cavityMappingTest/system/coarseMesh/decomposeParDict
+++ b/tutorials/incompressible/icoFoam/cavityMappingTest/system/coarseMesh/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,5 +18,4 @@ numberOfSubdomains  4;
 
 method          scotch;
 
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/icoFoam/cavityMappingTest/system/decomposeParDict b/tutorials/incompressible/icoFoam/cavityMappingTest/system/decomposeParDict
index cf5823a268b17fd8933f76576d5cef47162faec6..2ccf121cd38f8dbf0b04c5c04b764c20e7b3f625 100644
--- a/tutorials/incompressible/icoFoam/cavityMappingTest/system/decomposeParDict
+++ b/tutorials/incompressible/icoFoam/cavityMappingTest/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,5 +18,4 @@ numberOfSubdomains  4;
 
 method          scotch;
 
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/lumpedPointMotion/building/steady/system/decomposeParDict b/tutorials/incompressible/lumpedPointMotion/building/steady/system/decomposeParDict
index e155f990eb497199da0f66eaa2fba67d52ca7717..9cd763c3f7e15fc45d104354bf7ecc57dbf2fb7b 100644
--- a/tutorials/incompressible/lumpedPointMotion/building/steady/system/decomposeParDict
+++ b/tutorials/incompressible/lumpedPointMotion/building/steady/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -20,11 +19,11 @@ method          scotch;
 
 // method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (3 2 1);
-    delta           0.001;
-    order           xyz;
+    n           (3 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/overPimpleDyMFoam/cylinder/cylinderAndBackground/system/decomposeParDict b/tutorials/incompressible/overPimpleDyMFoam/cylinder/cylinderAndBackground/system/decomposeParDict
index 29610a20d888080443c389945459a889bb0985ea..415cda309aa944f386298d23cc12e32169f872b7 100644
--- a/tutorials/incompressible/overPimpleDyMFoam/cylinder/cylinderAndBackground/system/decomposeParDict
+++ b/tutorials/incompressible/overPimpleDyMFoam/cylinder/cylinderAndBackground/system/decomposeParDict
@@ -10,21 +10,19 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
 
-
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/overPimpleDyMFoam/simpleRotor/system/decomposeParDict b/tutorials/incompressible/overPimpleDyMFoam/simpleRotor/system/decomposeParDict
index 805c936e8773880bddf85bd0205c77016d84652e..8fa48d97e2ba9f46244320b031c4365052bf708a 100644
--- a/tutorials/incompressible/overPimpleDyMFoam/simpleRotor/system/decomposeParDict
+++ b/tutorials/incompressible/overPimpleDyMFoam/simpleRotor/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  3;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (3 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/overPimpleDyMFoam/twoSimpleRotors/system/decomposeParDict b/tutorials/incompressible/overPimpleDyMFoam/twoSimpleRotors/system/decomposeParDict
index 2e73b80199c46efa6acc5a8a33e9c5fbb6c397b8..8fa48d97e2ba9f46244320b031c4365052bf708a 100644
--- a/tutorials/incompressible/overPimpleDyMFoam/twoSimpleRotors/system/decomposeParDict
+++ b/tutorials/incompressible/overPimpleDyMFoam/twoSimpleRotors/system/decomposeParDict
@@ -10,21 +10,19 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  3;
 
-
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (3 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/overSimpleFoam/aeroFoil/aeroFoil_snappyHexMesh/system/decomposeParDict b/tutorials/incompressible/overSimpleFoam/aeroFoil/aeroFoil_snappyHexMesh/system/decomposeParDict
index f70b376fabb6dec49a7ec5c0e536446952692f16..91e32fc1521163331690056a6153060a9eea3d98 100644
--- a/tutorials/incompressible/overSimpleFoam/aeroFoil/aeroFoil_snappyHexMesh/system/decomposeParDict
+++ b/tutorials/incompressible/overSimpleFoam/aeroFoil/aeroFoil_snappyHexMesh/system/decomposeParDict
@@ -18,22 +18,11 @@ numberOfSubdomains 3;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 3 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (3 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
+    n           (1 3 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/decomposeParDict b/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/decomposeParDict
index 5a457a752003f61bd4651e953791e75b814fe8cb..f1b18226f652df92338ddc7a533bc2ef1b91a1ef 100644
--- a/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/decomposeParDict
+++ b/tutorials/incompressible/overSimpleFoam/aeroFoil/background_overset/system/decomposeParDict
@@ -18,22 +18,11 @@ numberOfSubdomains 8;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 3 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (8 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
+    n           (8 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/decomposeParDict
index 441b8bdbbb42b1fdb606b8f5be42a7ac0a22a3b2..a57967483dc6872a5c674b5be9ddff964267c235 100644
--- a/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/mixerVesselAMI2D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/decomposeParDict
index 82389e7cf3a9d51d8ec2233dc35ac68f00170907..1cda0c79246699a189da718798dffa9c5ad06657 100644
--- a/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/oscillatingInletACMI2D/system/decomposeParDict
@@ -12,19 +12,17 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 4;
 
 method          scotch;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (1 4 1);
-    delta           0.001;
-    order           xyz;
+    n           (1 4 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleDyMFoam/propeller/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/propeller/system/decomposeParDict
index 85ea74b3b7994d01f27d4fd5b7253b2581c3a013..a967dc8e37aa0da9e1fa74141fd45a56e4e5f7aa 100644
--- a/tutorials/incompressible/pimpleDyMFoam/propeller/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/propeller/system/decomposeParDict
@@ -12,19 +12,17 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (1 4 1);
-    delta           0.001;
-    order           xyz;
+    n           (1 4 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
index f6b939ebccfef6b974a67cd96d7a5c207ede4433..5092045209040261535188d9d660c1013e78d7df 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion2D_pimpleDyMFoam/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,18 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
index 6202e242f50f19297d8dc407442ed23a132e8ae3..91e32fc1521163331690056a6153060a9eea3d98 100644
--- a/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleDyMFoam/wingMotion/wingMotion_snappyHexMesh/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 3;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 3 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (3 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
+    n           (1 3 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395/system/decomposeParDict b/tutorials/incompressible/pimpleFoam/LES/channel395/system/decomposeParDict
index 064765b0d0a5a177abb4ff30bdb973712e4a688a..4ec2ca98ac49433bd5387c32abeaa585b8fc249d 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleFoam/LES/channel395/system/decomposeParDict
@@ -10,126 +10,20 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
 
-//- Keep owner and neighbour on same processor for faces in zones:
-// preserveFaceZones (heater solid1 solid3);
-
-//- Keep owner and neighbour on same processor for faces in patches:
-//  (makes sense only for cyclic patches)
-//preservePatches (cyclic_half0 cyclic_half1);
-
-//- Keep all of faceSet on a single processor. This puts all cells
-//  connected with a point, edge or face on the same processor.
-//  (just having face connected cells might not guarantee a balanced
-//  decomposition)
-// The processor can be -1 (the decompositionMethod chooses the processor
-// for a good load balance) or explicitly provided (upsets balance).
-//singleProcessorFaceSets ((f0 -1));
-
-
-//- Use the volScalarField named here as a weight for each cell in the
-//  decomposition.  For example, use a particle population field to decompose
-//  for a balanced number of particles in a lagrangian simulation.
-// weightField dsmcRhoNMean;
-
-// method          scotch;
-// method          hierarchical;
 method          simple;
-// method          metis;
-// method          manual;
-// method          multiLevel;
-// method          structured;  // does 2D decomposition of structured mesh
 
-multiLevelCoeffs
-{
-    // Decomposition methods to apply in turn. This is like hierarchical but
-    // fully general - every method can be used at every level.
-
-    level0
-    {
-        numberOfSubdomains  64;
-        //method simple;
-        //simpleCoeffs
-        //{
-        //    n           (2 1 1);
-        //    delta       0.001;
-        //}
-        method scotch;
-    }
-    level1
-    {
-        numberOfSubdomains  4;
-        method scotch;
-    }
-}
-
-// Desired output
-
-simpleCoeffs
+coeffs
 {
     n           (1 2 2);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (1 2 1);
-    delta       0.001;
-    order       xyz;
-}
-
-metisCoeffs
-{
- /*
-    processorWeights
-    (
-        1
-        1
-        1
-        1
-    );
-  */
-}
-
-scotchCoeffs
-{
-    //processorWeights
-    //(
-    //    1
-    //    1
-    //    1
-    //    1
-    //);
-    //writeGraph  true;
-    //strategy "b";
-}
-
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-structuredCoeffs
-{
-    // Patches to do 2D decomposition on. Structured mesh only; cells have
-    // to be in 'columns' on top of patches.
-    patches     (bottomPatch);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-//// Is the case distributed? Note: command-line argument -roots takes
-//// precedence
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/decomposeParDict b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/decomposeParDict
index 0a7cc129c122b0a07b57a11c873b3b298cc6a424..a027d1dbe9d26299d4031521378666f134fa9e84 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  8;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (4 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 
diff --git a/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/decomposeParDict b/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/decomposeParDict
index d429acabdf67663b044b2f07ed2ec38300ea5d0a..db26a8c487f2497303edca14479627501cf5b8a8 100644
--- a/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleFoam/LES/vortexShed/system/decomposeParDict
@@ -12,17 +12,16 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
 }
 
 
diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict
index 0be1973c5f56e906126a0ecf1ad3eecf54a477cf..c8d493ee9879fb957598cf3845b5ab94d2b123aa 100644
--- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict
+++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,23 +18,11 @@ numberOfSubdomains 8;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (4 1 1);
-    delta           0.001;
+    n           (4 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (4 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.hierarchical b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.hierarchical
index 0be1973c5f56e906126a0ecf1ad3eecf54a477cf..349b598d3eef71b1ea2dd35a633da8bddcdde458 100644
--- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.hierarchical
+++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.hierarchical
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 8;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (4 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
+    n           (4 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 
diff --git a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.ptscotch b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.ptscotch
index 59fee527f04af9b4a9d40800c865850c92af7fed..f3d9d8baf90d0414067866e57c1ae44efdb9ba14 100644
--- a/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.ptscotch
+++ b/tutorials/incompressible/pisoFoam/LES/motorBike/motorBike/system/decomposeParDict.ptscotch
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,23 +18,11 @@ numberOfSubdomains 8;
 
 method          ptscotch;
 
-simpleCoeffs
+coeffs
 {
-    n               (4 1 1);
-    delta           0.001;
+    n           (4 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (4 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/decomposeParDict b/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/decomposeParDict
index 880edbdd8d79daceadb66df874fc677db4a48fe9..efb47b5d70a896b4154952a0d9579b1a1a5e13ba 100644
--- a/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/decomposeParDict
+++ b/tutorials/incompressible/pisoFoam/LES/pitzDailyMapped/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,4 @@ numberOfSubdomains 8;
 
 method          scotch;
 
-simpleCoeffs
-{
-    n               (2 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/system/decomposeParDict b/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/system/decomposeParDict
index 2fd87ad2ac5d001a9d7361ea8a587560bd5dd1a7..fdf2b548b49e94e1f61162ffd0c4fcaeb81b1e85 100644
--- a/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/system/decomposeParDict
+++ b/tutorials/incompressible/porousSimpleFoam/straightDuctImplicit/system/decomposeParDict
@@ -19,27 +19,15 @@ numberOfSubdomains  4;
 //method              simple;
 method              hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 2);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
 
 roots           ( );
 
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/motorBike/system/decomposeParDict.6 b/tutorials/incompressible/simpleFoam/motorBike/system/decomposeParDict.6
index db5f0cd2c283170f048d8113451c047d7f062452..72ccf6fe1e1877cb3b7c1b8a902f6b02f983c79a 100644
--- a/tutorials/incompressible/simpleFoam/motorBike/system/decomposeParDict.6
+++ b/tutorials/incompressible/simpleFoam/motorBike/system/decomposeParDict.6
@@ -12,7 +12,6 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 6;
@@ -20,23 +19,12 @@ numberOfSubdomains 6;
 method          hierarchical;
 // method          ptscotch;
 
-simpleCoeffs
-{
-    n               (6 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
+coeffs
 {
-    n               (3 2 1);
-    delta           0.001;
-    order           xyz;
+    n           (3 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
 }
 
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/incompressible/simpleFoam/pipeCyclic/system/decomposeParDict b/tutorials/incompressible/simpleFoam/pipeCyclic/system/decomposeParDict
index 8eef9939739813e9af329010ff26b46b84e23eaf..22d0a558b3d3446501b1019a2a7900eaa50df0ef 100644
--- a/tutorials/incompressible/simpleFoam/pipeCyclic/system/decomposeParDict
+++ b/tutorials/incompressible/simpleFoam/pipeCyclic/system/decomposeParDict
@@ -12,7 +12,6 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 5;
diff --git a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/decomposeParDict b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/decomposeParDict
index d2ba4aab9fc9a8b28b4a6824a48543f33501e3ce..eb1dcb53fa5d631184a3f0c6ddb31575fa1e309f 100644
--- a/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/decomposeParDict
+++ b/tutorials/incompressible/simpleFoam/pitzDailyExptInlet/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,10 @@ numberOfSubdomains 4;
 
 method          hierarchical;
 
-simpleCoeffs
-{
-    n               (2 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+coeffs
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/incompressible/simpleFoam/turbineSiting/system/decomposeParDict.hierarchical b/tutorials/incompressible/simpleFoam/turbineSiting/system/decomposeParDict.hierarchical
index 0ec2cc47f72549c41c119a2d918a127fd17fd9fb..f9bc71739dcc3c910a5a82ea67fb5084d09007cf 100644
--- a/tutorials/incompressible/simpleFoam/turbineSiting/system/decomposeParDict.hierarchical
+++ b/tutorials/incompressible/simpleFoam/turbineSiting/system/decomposeParDict.hierarchical
@@ -19,11 +19,11 @@ numberOfSubdomains 4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/DPMFoam/Goldschmidt/system/decomposeParDict b/tutorials/lagrangian/DPMFoam/Goldschmidt/system/decomposeParDict
index a7f9749028cd9f66146ea5136bff52056c6b8ca3..0ad5e3237fa21fbf4e8d6f643bce136a2538e76e 100644
--- a/tutorials/lagrangian/DPMFoam/Goldschmidt/system/decomposeParDict
+++ b/tutorials/lagrangian/DPMFoam/Goldschmidt/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,10 +18,10 @@ numberOfSubdomains 6;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 6 1);
-    delta           0.001;
+    n           (1 6 1);
+    //delta       0.001; // default=0.001
 }
 
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/MPPICFoam/Goldschmidt/system/decomposeParDict b/tutorials/lagrangian/MPPICFoam/Goldschmidt/system/decomposeParDict
index 60a43cac78835f07688d1a94e6ce18f647b57fa0..9a39c07902c4b9536c20d97a64da336afa51e932 100644
--- a/tutorials/lagrangian/MPPICFoam/Goldschmidt/system/decomposeParDict
+++ b/tutorials/lagrangian/MPPICFoam/Goldschmidt/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,10 +18,10 @@ numberOfSubdomains 5;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 5 1);
-    delta           0.001;
+    n           (1 5 1);
+    //delta       0.001; // default=0.001
 }
 
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/MPPICFoam/cyclone/system/decomposeParDict b/tutorials/lagrangian/MPPICFoam/cyclone/system/decomposeParDict
index 7990b000489c7d73dd661af6bcd20fd9799512d3..1561b79e382bad5de4abc81e1ee9e3715b0c8b2c 100644
--- a/tutorials/lagrangian/MPPICFoam/cyclone/system/decomposeParDict
+++ b/tutorials/lagrangian/MPPICFoam/cyclone/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,10 +18,11 @@ numberOfSubdomains 12;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 3);
-    delta           0.001;
+    n           (2 2 3);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/decomposeParDict b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/decomposeParDict
index d7b4b378864c705976d51dc47b4cf07551bb3607..12a2e8b434d8d798bb52d61272f1457095543c68 100644
--- a/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/decomposeParDict
+++ b/tutorials/lagrangian/coalChemistryFoam/simplifiedSiwek/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          scotch;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/system/decomposeParDict b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/system/decomposeParDict
index 341581df062ab96de94f4c45669795c7a0f8813d..5539e64d77b02f978a6db87c0b8eadb47ee64a8a 100644
--- a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/system/decomposeParDict
+++ b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperEmptying/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,23 +18,13 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (4 1 1);
-    delta           0.001;
+    n           (4 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (4 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
 
 distributed     no;
 
diff --git a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/system/decomposeParDict b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/system/decomposeParDict
index 341581df062ab96de94f4c45669795c7a0f8813d..a0bc43d99a86b51393787ea1b3a9acc2995189b3 100644
--- a/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/system/decomposeParDict
+++ b/tutorials/lagrangian/icoUncoupledKinematicParcelFoam/hopper/hopperInitialState/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (4 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/lagrangian/reactingParcelFoam/cylinder/system/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/cylinder/system/decomposeParDict
index 35ee29db3d0a0dfdab34997765e08a3c1e917c54..4e024e7a6c09d9ab36cc19b52b94e1f115a5becb 100644
--- a/tutorials/lagrangian/reactingParcelFoam/cylinder/system/decomposeParDict
+++ b/tutorials/lagrangian/reactingParcelFoam/cylinder/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,17 +18,12 @@ numberOfSubdomains 4;
 
 method          metis;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 metisCoeffs
@@ -37,11 +31,6 @@ metisCoeffs
     processorWeights ( 1 1 1 1 );
 }
 
-manualCoeffs
-{
-    dataFile        "";
-}
-
 distributed     no;
 
 roots           ( );
diff --git a/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict
index f50ab8d7166465675623b8b2d2ba23d1c18510f6..549f7540a5367e58a6120797e0996069ce554072 100644
--- a/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict
+++ b/tutorials/lagrangian/reactingParcelFoam/filter/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -25,23 +24,12 @@ preserveFaceZones
     cycRight
 );
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/decomposeParDict
index 547c0a1e4d3aafd5d12ba455b32ecda8ec5ef0ff..ae9f4ce29225dd0b8cd855911f54766719d27317 100644
--- a/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/decomposeParDict
+++ b/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/wallFilmRegion.orig/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/wallFilmRegion.orig/decomposeParDict
index 547c0a1e4d3aafd5d12ba455b32ecda8ec5ef0ff..ae9f4ce29225dd0b8cd855911f54766719d27317 100644
--- a/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/wallFilmRegion.orig/decomposeParDict
+++ b/tutorials/lagrangian/reactingParcelFoam/hotBoxes/system/wallFilmRegion.orig/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/decomposeParDict
index 35ee29db3d0a0dfdab34997765e08a3c1e917c54..7ebff6fbccb49bad5aa0512caef154d7d33f06e6 100644
--- a/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/decomposeParDict
+++ b/tutorials/lagrangian/reactingParcelFoam/rivuletPanel/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,17 +18,12 @@ numberOfSubdomains 4;
 
 method          metis;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 metisCoeffs
@@ -37,14 +31,9 @@ metisCoeffs
     processorWeights ( 1 1 1 1 );
 }
 
-manualCoeffs
-{
-    dataFile        "";
-}
 
 distributed     no;
 
 roots           ( );
 
-
 // ************************************************************************* //
diff --git a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/decomposeParDict b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/decomposeParDict
index 35ee29db3d0a0dfdab34997765e08a3c1e917c54..4e024e7a6c09d9ab36cc19b52b94e1f115a5becb 100644
--- a/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/decomposeParDict
+++ b/tutorials/lagrangian/reactingParcelFoam/splashPanel/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,17 +18,12 @@ numberOfSubdomains 4;
 
 method          metis;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 metisCoeffs
@@ -37,11 +31,6 @@ metisCoeffs
     processorWeights ( 1 1 1 1 );
 }
 
-manualCoeffs
-{
-    dataFile        "";
-}
-
 distributed     no;
 
 roots           ( );
diff --git a/tutorials/mesh/foamyHexMesh/blob/system/backgroundMeshDecomposition/decomposeParDict b/tutorials/mesh/foamyHexMesh/blob/system/backgroundMeshDecomposition/decomposeParDict
index 4051a53530039dc7b8aa67774809f148339010a4..dfcc2d40e8667a072d59223ae62ba2ce0aa21f4f 100644
--- a/tutorials/mesh/foamyHexMesh/blob/system/backgroundMeshDecomposition/decomposeParDict
+++ b/tutorials/mesh/foamyHexMesh/blob/system/backgroundMeshDecomposition/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -21,27 +20,15 @@ method          scotch;
 //method          ptscotch;
 // method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
 
 roots           ( );
 
-
 // ************************************************************************* //
diff --git a/tutorials/mesh/foamyHexMesh/blob/system/decomposeParDict b/tutorials/mesh/foamyHexMesh/blob/system/decomposeParDict
index 4051a53530039dc7b8aa67774809f148339010a4..a1ba0095f6b25276a06a598bacf6ed5393832970 100644
--- a/tutorials/mesh/foamyHexMesh/blob/system/decomposeParDict
+++ b/tutorials/mesh/foamyHexMesh/blob/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -21,27 +20,11 @@ method          scotch;
 //method          ptscotch;
 // method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (2 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/mesh/foamyHexMesh/flange/system/backgroundMeshDecomposition/decomposeParDict b/tutorials/mesh/foamyHexMesh/flange/system/backgroundMeshDecomposition/decomposeParDict
index 552d5ce1ccdbde53e5fd00d3448672e48b87ee74..f5d7a5b38812c1dc384bad4fcd8ba3112dae605f 100644
--- a/tutorials/mesh/foamyHexMesh/flange/system/backgroundMeshDecomposition/decomposeParDict
+++ b/tutorials/mesh/foamyHexMesh/flange/system/backgroundMeshDecomposition/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -20,27 +19,15 @@ numberOfSubdomains 8;
 //method          scotch;
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 2);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
 
 roots           ( );
 
-
 // ************************************************************************* //
diff --git a/tutorials/mesh/foamyHexMesh/flange/system/decomposeParDict b/tutorials/mesh/foamyHexMesh/flange/system/decomposeParDict
index 552d5ce1ccdbde53e5fd00d3448672e48b87ee74..f5d7a5b38812c1dc384bad4fcd8ba3112dae605f 100644
--- a/tutorials/mesh/foamyHexMesh/flange/system/decomposeParDict
+++ b/tutorials/mesh/foamyHexMesh/flange/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -20,27 +19,15 @@ numberOfSubdomains 8;
 //method          scotch;
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 2);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
 
 roots           ( );
 
-
 // ************************************************************************* //
diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/surfaceProcess.sh b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/surfaceProcess.sh
index 2e97357bc223160a24e2d611349dac991ebb7608..d5d581ca741295fcaab37b51dfafaf264e39f339 100755
--- a/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/surfaceProcess.sh
+++ b/tutorials/mesh/foamyHexMesh/mixerVessel/constant/triSurface/surfaceProcess.sh
@@ -1,10 +1,8 @@
 #!/bin/sh
-
-cd ${0%/*} || exit 1    # Run from this directory
+cd ${0%/*} || exit 1                        # Run from this directory
 
 cp rawSurfaces/*.stl .
 
-
 # Vessel surface
 surfaceAdd outlet.stl vessel.stl vessel.stl
 
@@ -30,5 +28,4 @@ mv stirrer_bafflePart_0.stl stirrer_baffles.stl
 surfaceCheck stirrer_baffles.stl
 mv stirrer_baffles_0.obj stirrer_baffles_plate.obj
 
-
 #------------------------------------------------------------------------------
diff --git a/tutorials/mesh/foamyHexMesh/mixerVessel/system/decomposeParDict b/tutorials/mesh/foamyHexMesh/mixerVessel/system/decomposeParDict
index 33bdcf393fb68ce92604d83c0359b13e392f1b8e..ab5a462de87daf8eec5cc6297dd615d4e29a25a2 100644
--- a/tutorials/mesh/foamyHexMesh/mixerVessel/system/decomposeParDict
+++ b/tutorials/mesh/foamyHexMesh/mixerVessel/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -21,27 +20,11 @@ numberOfSubdomains 8;
 method          hierarchical;
 //method          scotch;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-hierarchicalCoeffs
-{
-    n               (2 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/mesh/foamyQuadMesh/OpenCFD/system/decomposeParDict b/tutorials/mesh/foamyQuadMesh/OpenCFD/system/decomposeParDict
index acb913f174261c65d96ef6d3e56f5332d7e84d45..a5229e0e188e6dc16535a257fef5790bd073e7bb 100644
--- a/tutorials/mesh/foamyQuadMesh/OpenCFD/system/decomposeParDict
+++ b/tutorials/mesh/foamyQuadMesh/OpenCFD/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 8;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/decomposeParDict b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/decomposeParDict
index 938ed79f6fcc21234207006ff814afee5c986916..26d0ca5bd31ed73b9734d5cdc4e0b50791feb037 100644
--- a/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/decomposeParDict
+++ b/tutorials/mesh/moveDynamicMesh/SnakeRiverCanyon/system/decomposeParDict
@@ -10,32 +10,19 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  2;
 
 method          hierarchical;
 
-simpleCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
-}
-
-manualCoeffs
-{
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
     dataFile    "decompositionData";
 }
 
diff --git a/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/system/decomposeParDict b/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/system/decomposeParDict
index 35eae8f99c60c3e7d54b784a39e97c1d2bcc871a..f1e7dbf0bb7c5aa0d67de2061721969faa448947 100644
--- a/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/system/decomposeParDict
+++ b/tutorials/mesh/moveDynamicMesh/relativeMotion/box2D_moveDynamicMesh/system/decomposeParDict
@@ -12,18 +12,17 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-    order           xyz;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 
diff --git a/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/system/decomposeParDict b/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/system/decomposeParDict
index 35eae8f99c60c3e7d54b784a39e97c1d2bcc871a..f1e7dbf0bb7c5aa0d67de2061721969faa448947 100644
--- a/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/system/decomposeParDict
+++ b/tutorials/mesh/moveDynamicMesh/relativeMotion/box_snappyHexMesh/system/decomposeParDict
@@ -12,18 +12,17 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-    order           xyz;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 
diff --git a/tutorials/mesh/parallel/filter/system/decomposeParDict b/tutorials/mesh/parallel/filter/system/decomposeParDict
index 099ae341f54c2a368e62b2e18bb522c41b9916b2..61f2bb65241c0284d0787af0080d4bc838cf614f 100644
--- a/tutorials/mesh/parallel/filter/system/decomposeParDict
+++ b/tutorials/mesh/parallel/filter/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -25,23 +24,5 @@ preserveFaceZones
     cycRight
 );
 
-simpleCoeffs
-{
-    n               ( 2 2 1 );
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               ( 1 1 1 );
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
 
 // ************************************************************************* //
diff --git a/tutorials/mesh/snappyHexMesh/flange/system/decomposeParDict b/tutorials/mesh/snappyHexMesh/flange/system/decomposeParDict
index 37e6377198c64a0b191d2570c7b6661269ebec3d..e2e3c3f1b2b93f077cadc09bd0e3362e55703236 100644
--- a/tutorials/mesh/snappyHexMesh/flange/system/decomposeParDict
+++ b/tutorials/mesh/snappyHexMesh/flange/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,17 +18,11 @@ numberOfSubdomains 4;
 
 method          ptscotch; //simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 metisCoeffs
@@ -37,11 +30,6 @@ metisCoeffs
     processorWeights ( 1 1 1 1 );
 }
 
-manualCoeffs
-{
-    dataFile        "";
-}
-
 distributed     no;
 
 roots           ( );
diff --git a/tutorials/mesh/snappyHexMesh/gap_detection/system/decomposeParDict b/tutorials/mesh/snappyHexMesh/gap_detection/system/decomposeParDict
index bd6966b65742a22ff982a1b75500a9d9cd1c7cb5..5e433b7724344eddbdf279b4184ab23c87ab4a76 100644
--- a/tutorials/mesh/snappyHexMesh/gap_detection/system/decomposeParDict
+++ b/tutorials/mesh/snappyHexMesh/gap_detection/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                |
+|  \\    /   O peration     | Version:  plus                                  |
 |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 8;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               ( 4 1 1 );
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               ( 2 2 2 );
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
 }
 
 
diff --git a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/decomposeParDict b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/decomposeParDict
index c9e6d266a88dba71eb882695a152ea0b1f0d320a..90346c353d26558b97b82175d1cd320003bec741 100644
--- a/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/decomposeParDict
+++ b/tutorials/multiphase/MPPICInterFoam/twoPhasePachuka/system/decomposeParDict
@@ -12,18 +12,17 @@ FoamFile
     class       dictionary;
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains 4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (1 1 4);
-    delta           0.001;
-    order           xyz;
+    n           (1 1 4);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 
diff --git a/tutorials/multiphase/cavitatingFoam/LES/throttle3D/system/decomposeParDict b/tutorials/multiphase/cavitatingFoam/LES/throttle3D/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..a5c698cbb820137ca015f0fd5b990ada334710b4 100644
--- a/tutorials/multiphase/cavitatingFoam/LES/throttle3D/system/decomposeParDict
+++ b/tutorials/multiphase/cavitatingFoam/LES/throttle3D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/decomposeParDict b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/decomposeParDict
index 4b8c326537f15ea0b64d16cdabaea4e65302fae4..ca0d5710b3a331b4d98f0189a0d33b03f924d9ce 100644
--- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/decomposeParDict
+++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sloshingTank2D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 16;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/system/decomposeParDict b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/system/decomposeParDict
index c79d985331a367d854cf5e8808a4c3f0062f251a..2040beb9839624fe7e1948c43272ee6e0ecac663 100644
--- a/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/system/decomposeParDict
+++ b/tutorials/multiphase/compressibleInterDyMFoam/laminar/sphereDrop/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,10 +18,10 @@ numberOfSubdomains  2;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
+    //delta       0.001; // default=0.001
 }
 
 
diff --git a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/decomposeParDict b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/decomposeParDict
index b8678d7c9693c1161f44340ec9a890873c627548..02447c453627f75d641a548ab456bcac13fa4efb 100644
--- a/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/decomposeParDict
+++ b/tutorials/multiphase/compressibleInterFoam/laminar/depthCharge3D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (1 4 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 4 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (1 4 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..a5c698cbb820137ca015f0fd5b990ada334710b4 100644
--- a/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict
+++ b/tutorials/multiphase/compressibleMultiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/decomposeParDict
index a024bf31cbdcca4d5db40b20cbeb2c7b475e866d..efb47b5d70a896b4154952a0d9579b1a1a5e13ba 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/DTCHull/system/decomposeParDict
@@ -7,11 +7,10 @@
 \*---------------------------------------------------------------------------*/
 FoamFile
 {
-    version         2.0;
-    format          ascii;
-    class           dictionary;
-    location        "system";
-    object          decomposeParDict;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -19,33 +18,4 @@ numberOfSubdomains 8;
 
 method          scotch;
 
-simpleCoeffs
-{
-    n               (2 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-metisCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots
-(
-);
-
-
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/system/decomposeParDict
index 02a34be82be5dd5617457365e4aba606186ab65d..bfce791340ab21be81c67084f7e6cc74d014b53d 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/floatingObject/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/floatingObject/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,5 @@ numberOfSubdomains 8;
 
 method          scotch;
 
-simpleCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/system/decomposeParDict
index 07354668609524e16384c4b47dd773caff96c641..83c7978f9fdc6f02bf37035c0fc4f60178ae1dca 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/mixerVesselAMI/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/interDyMFoam/RAS/motorBike/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/RAS/motorBike/system/decomposeParDict
index 5c5ab00ebfc94484731517b280f97de5a97d5a57..5af511273b6864bd0b088b9b95ecb6c1e5b6ea77 100644
--- a/tutorials/multiphase/interDyMFoam/RAS/motorBike/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/RAS/motorBike/system/decomposeParDict
@@ -20,7 +20,6 @@ numberOfSubdomains 5;
 method          hierarchical;
 // method          ptscotch;
 
-
 // Optional decomposition constraints
 constraints
 {
@@ -33,22 +32,12 @@ constraints
 }
 
 
-simpleCoeffs
-{
-    n               (4 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (5 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
+coeffs
 {
-    dataFile        "cellDecomposition";
+    n           (5 1 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
 }
 
 
diff --git a/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/decomposeParDict
index 84b7774d501e37c6a3216a5dc80fc0630d16a3fa..aa616c6c806696a3aa3f43a74b2075d108db133b 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/laminar/damBreakWithObstacle/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,27 +18,4 @@ numberOfSubdomains  6;
 
 method              scotch;
 
-simpleCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (2 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
-}
-
-distributed     no;
-
-roots           ( );
-
-
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/decomposeParDict
index 4b8c326537f15ea0b64d16cdabaea4e65302fae4..ca0d5710b3a331b4d98f0189a0d33b03f924d9ce 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 16;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/decomposeParDict
index 4b8c326537f15ea0b64d16cdabaea4e65302fae4..ca0d5710b3a331b4d98f0189a0d33b03f924d9ce 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank2D3DoF/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 16;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/decomposeParDict
index 4b8c326537f15ea0b64d16cdabaea4e65302fae4..ca0d5710b3a331b4d98f0189a0d33b03f924d9ce 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 16;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/decomposeParDict
index 4b8c326537f15ea0b64d16cdabaea4e65302fae4..a3b79da8ff8dedb4e3ec6b43f63d003feee910fe 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D3DoF/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 16;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/decomposeParDict
index 4b8c326537f15ea0b64d16cdabaea4e65302fae4..a3b79da8ff8dedb4e3ec6b43f63d003feee910fe 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/laminar/sloshingTank3D6DoF/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 16;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/decomposeParDict b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/decomposeParDict
index 4b8c326537f15ea0b64d16cdabaea4e65302fae4..a3b79da8ff8dedb4e3ec6b43f63d003feee910fe 100644
--- a/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/decomposeParDict
+++ b/tutorials/multiphase/interDyMFoam/laminar/testTubeMixer/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 16;
 
 method          hierarchical;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (4 2 2);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (4 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interFoam/RAS/DTCHull/system/decomposeParDict b/tutorials/multiphase/interFoam/RAS/DTCHull/system/decomposeParDict
index a024bf31cbdcca4d5db40b20cbeb2c7b475e866d..db0c617244e19600132538b97bcb3919c7a04b99 100644
--- a/tutorials/multiphase/interFoam/RAS/DTCHull/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/RAS/DTCHull/system/decomposeParDict
@@ -7,11 +7,10 @@
 \*---------------------------------------------------------------------------*/
 FoamFile
 {
-    version         2.0;
-    format          ascii;
-    class           dictionary;
-    location        "system";
-    object          decomposeParDict;
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -19,26 +18,11 @@ numberOfSubdomains 8;
 
 method          scotch;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-metisCoeffs
-{
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/decomposeParDict b/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..a5c698cbb820137ca015f0fd5b990ada334710b4 100644
--- a/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/RAS/damBreak/damBreak/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..51ea6cd9f26b23636ec57f1a04bce7fc0da4eb80 100644
--- a/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/damBreak/damBreak/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,10 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/decomposeParDict
index 0573ee2a16c1350384d481bcc65d52b3a4fa4cb8..175381fc75b22977a3014f0d6935fc5b4a337a67 100644
--- a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/eulerianInjection/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,12 +18,11 @@ numberOfSubdomains  4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
     n           (2 1 2);
-    delta       0.001;
+    //delta       0.001; // default=0.001
 }
 
 
-
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianDistributionInjection/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianDistributionInjection/system/decomposeParDict
index 09cbfd15750dea37bce52a361a4d3545718c334f..175381fc75b22977a3014f0d6935fc5b4a337a67 100644
--- a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianDistributionInjection/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianDistributionInjection/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,10 +18,10 @@ numberOfSubdomains  4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
     n           (2 1 2);
-    delta       0.001;
+    //delta       0.001; // default=0.001
 }
 
 
diff --git a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianParticleInjection/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianParticleInjection/system/decomposeParDict
index 09cbfd15750dea37bce52a361a4d3545718c334f..b2b80856503e23cf2796314a530e222c196cf72c 100644
--- a/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianParticleInjection/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/vofToLagrangian/lagrangianParticleInjection/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
     n           (2 1 2);
-    delta       0.001;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
-
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/decomposeParDict
index 301d97027b8aa1815be46c6525b8a54c5f6b6de1..1af1406f9577d50b307a78dc8075ee9aabd8998e 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/decomposeParDict
@@ -19,11 +19,11 @@ numberOfSubdomains 2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/decomposeParDict
index 301d97027b8aa1815be46c6525b8a54c5f6b6de1..1af1406f9577d50b307a78dc8075ee9aabd8998e 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/decomposeParDict
@@ -19,11 +19,11 @@ numberOfSubdomains 2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict
index 301d97027b8aa1815be46c6525b8a54c5f6b6de1..1af1406f9577d50b307a78dc8075ee9aabd8998e 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryGrimshaw/system/decomposeParDict
@@ -19,11 +19,11 @@ numberOfSubdomains 2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict
index 301d97027b8aa1815be46c6525b8a54c5f6b6de1..1af1406f9577d50b307a78dc8075ee9aabd8998e 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitaryMcCowan/system/decomposeParDict
@@ -19,11 +19,11 @@ numberOfSubdomains 2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/decomposeParDict
index 301d97027b8aa1815be46c6525b8a54c5f6b6de1..1af1406f9577d50b307a78dc8075ee9aabd8998e 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/decomposeParDict
@@ -19,11 +19,11 @@ numberOfSubdomains 2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/decomposeParDict
index 301d97027b8aa1815be46c6525b8a54c5f6b6de1..1af1406f9577d50b307a78dc8075ee9aabd8998e 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/decomposeParDict
@@ -19,11 +19,11 @@ numberOfSubdomains 2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/decomposeParDict b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/decomposeParDict
index 57c7bea5e33d5df6b8b44bd1f87c1a5d95fcbf79..1af1406f9577d50b307a78dc8075ee9aabd8998e 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/decomposeParDict
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/decomposeParDict
@@ -1,7 +1,7 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                    |
+|  \\    /   O peration     | Version:  plus                                  |
 |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
@@ -19,11 +19,11 @@ numberOfSubdomains 2;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 1 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interIsoFoam/damBreak/system/decomposeParDict b/tutorials/multiphase/interIsoFoam/damBreak/system/decomposeParDict
index b2904624d351c464ff314a3e2e57f6dfde1176b9..a5c698cbb820137ca015f0fd5b990ada334710b4 100644
--- a/tutorials/multiphase/interIsoFoam/damBreak/system/decomposeParDict
+++ b/tutorials/multiphase/interIsoFoam/damBreak/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               ( 2 2 1 );
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               ( 1 1 1 );
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interIsoFoam/discInReversedVortexFlow/system/decomposeParDict b/tutorials/multiphase/interIsoFoam/discInReversedVortexFlow/system/decomposeParDict
index 70dd6defca7ea929fb855c912d35f28633bd8d49..bfec08236bf40a28008650857b5a955dfc9fee31 100644
--- a/tutorials/multiphase/interIsoFoam/discInReversedVortexFlow/system/decomposeParDict
+++ b/tutorials/multiphase/interIsoFoam/discInReversedVortexFlow/system/decomposeParDict
@@ -1,17 +1,15 @@
-/*---------------------------------------------------------------------------*\
+/*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
 |  \\    /   O peration     | Version:  plus                                  |
 |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
 FoamFile
 {
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 
@@ -21,10 +19,10 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 1 2);
-    delta           0.001;
+    n           (2 1 2);
+    //delta       0.001; // default=0.001
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interIsoFoam/sphereInReversedVortexFlow/system/decomposeParDict b/tutorials/multiphase/interIsoFoam/sphereInReversedVortexFlow/system/decomposeParDict
index b8a6f06f4f58af0561a4a1d43652fbd6ba348b8c..16bd8f8975d32a5005f6c8729201b6138ead975a 100644
--- a/tutorials/multiphase/interIsoFoam/sphereInReversedVortexFlow/system/decomposeParDict
+++ b/tutorials/multiphase/interIsoFoam/sphereInReversedVortexFlow/system/decomposeParDict
@@ -1,31 +1,28 @@
-/*---------------------------------------------------------------------------*\
+/*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  plus                                    |
+|  \\    /   O peration     | Version:  plus                                  |
 |   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
-
 FoamFile
 {
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-
 numberOfSubdomains 8;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 2);
-    delta           0.001;
+    n           (2 2 2);
+    //delta       0.001; // default=0.001
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interIsoFoam/standingWave/system/decomposeParDict b/tutorials/multiphase/interIsoFoam/standingWave/system/decomposeParDict
index 28839d76e1c3259378a8a35330871cb3f7c06947..7ef82657522c4dbcfc91e4be1ea510e02f9ecc01 100644
--- a/tutorials/multiphase/interIsoFoam/standingWave/system/decomposeParDict
+++ b/tutorials/multiphase/interIsoFoam/standingWave/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 1;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               ( 2 1 2 );
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               ( 1 1 1 );
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 1 2);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/decomposeParDict b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..a5c698cbb820137ca015f0fd5b990ada334710b4 100644
--- a/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/decomposeParDict
+++ b/tutorials/multiphase/interMixingFoam/laminar/damBreak/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,11 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/decomposeParDict b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/decomposeParDict
index 85ea74b3b7994d01f27d4fd5b7253b2581c3a013..dd28232901931cc5151baa9826227133a5998e96 100644
--- a/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/decomposeParDict
+++ b/tutorials/multiphase/interPhaseChangeDyMFoam/propeller/system/decomposeParDict
@@ -19,11 +19,11 @@ numberOfSubdomains 4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
-    n               (1 4 1);
-    delta           0.001;
-    order           xyz;
+    n           (1 4 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 
diff --git a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/decomposeParDict b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..52a9b4bbef1d32a6cead7071a1e6ce448cbb70f0 100644
--- a/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/decomposeParDict
+++ b/tutorials/multiphase/interPhaseChangeFoam/cavitatingBullet/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/decomposeParDict b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..52a9b4bbef1d32a6cead7071a1e6ce448cbb70f0 100644
--- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/decomposeParDict
+++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phase/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/decomposeParDict b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..52a9b4bbef1d32a6cead7071a1e6ce448cbb70f0 100644
--- a/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/decomposeParDict
+++ b/tutorials/multiphase/multiphaseEulerFoam/damBreak4phaseFine/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict
index 441b8bdbbb42b1fdb606b8f5be42a7ac0a22a3b2..a57967483dc6872a5c674b5be9ddff964267c235 100644
--- a/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict
+++ b/tutorials/multiphase/multiphaseInterDyMFoam/laminar/mixerVesselAMI2D/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..52a9b4bbef1d32a6cead7071a1e6ce448cbb70f0 100644
--- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict
+++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phase/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/decomposeParDict b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/decomposeParDict
index 61f7f8c0dd831d296986030ff9e8c44bf3540e2a..52a9b4bbef1d32a6cead7071a1e6ce448cbb70f0 100644
--- a/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/decomposeParDict
+++ b/tutorials/multiphase/multiphaseInterFoam/laminar/damBreak4phaseFine/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,22 +18,12 @@ numberOfSubdomains 4;
 
 method          simple;
 
-simpleCoeffs
+coeffs
 {
-    n               (2 2 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (1 1 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "";
+    n           (2 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "";
 }
 
 distributed     no;
diff --git a/tutorials/multiphase/overInterDyMFoam/floatingBody/background/system/decomposeParDict b/tutorials/multiphase/overInterDyMFoam/floatingBody/background/system/decomposeParDict
index ede2181dfeeee7a102669796ed3d681ebe89b00d..415cda309aa944f386298d23cc12e32169f872b7 100644
--- a/tutorials/multiphase/overInterDyMFoam/floatingBody/background/system/decomposeParDict
+++ b/tutorials/multiphase/overInterDyMFoam/floatingBody/background/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  4;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict
index df31c866a549ef1ecc8d135176e33fb22b99dadf..d2300c105f8399f515e194313664a54b93c6a595 100644
--- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/RAS/bubbleColumnEvaporatingReacting/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  6;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (1 6 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict
index df31c866a549ef1ecc8d135176e33fb22b99dadf..d2300c105f8399f515e194313664a54b93c6a595 100644
--- a/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict
+++ b/tutorials/multiphase/reactingTwoPhaseEulerFoam/laminar/bubbleColumnEvaporating/system/decomposeParDict
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
     object      decomposeParDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -19,11 +18,11 @@ numberOfSubdomains  6;
 
 method          hierarchical;
 
-hierarchicalCoeffs
+coeffs
 {
     n           (1 6 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
 }
 
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/motorBike/system/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/motorBike/system/decomposeParDict
index eb9bb3ad5e9eb308ebcceb21be97e305af2ea724..6836cf8888946495126761343c7d63cb102d9c46 100644
--- a/tutorials/preProcessing/createZeroDirectory/motorBike/system/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/motorBike/system/decomposeParDict
@@ -20,22 +20,12 @@ numberOfSubdomains 6;
 method          hierarchical;
 // method          ptscotch;
 
-simpleCoeffs
+coeffs
 {
-    n               (4 1 1);
-    delta           0.001;
-}
-
-hierarchicalCoeffs
-{
-    n               (3 2 1);
-    delta           0.001;
-    order           xyz;
-}
-
-manualCoeffs
-{
-    dataFile        "cellDecomposition";
+    n           (3 2 1);
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "cellDecomposition";
 }
 
 
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..7263dc66d4ab81b8564c66f1ab7dfdeb659e9260 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/bottomAir/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict
index 742a2495dfc905d4656c9dcbfdae184dd421e8de..747b5114b73dac97b0632688eea1e670ee4bbe30 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          hierarchical;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..7263dc66d4ab81b8564c66f1ab7dfdeb659e9260 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/heater/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..7263dc66d4ab81b8564c66f1ab7dfdeb659e9260 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..7263dc66d4ab81b8564c66f1ab7dfdeb659e9260 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //
diff --git a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict
index 1a49f7a69bed1efebdb77131e1ec3ecd9c743fb0..7263dc66d4ab81b8564c66f1ab7dfdeb659e9260 100644
--- a/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict
+++ b/tutorials/preProcessing/createZeroDirectory/snappyMultiRegionHeater/system/topAir/decomposeParDict
@@ -10,11 +10,8 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    note        "mesh decomposition control dictionary";
-    location    "system";
     object      decomposeParDict;
 }
-
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 numberOfSubdomains  4;
@@ -27,17 +24,12 @@ method          scotch;
 // method          simple;
 // method          manual;
 
-simpleCoeffs
+coeffs
 {
     n           (2 2 1);
-    delta       0.001;
-}
-
-hierarchicalCoeffs
-{
-    n           (2 2 1);
-    delta       0.001;
-    order       xyz;
+    //delta       0.001; // default=0.001
+    //order       xyz;   // default=xzy
+    dataFile    "decompositionData";
 }
 
 scotchCoeffs
@@ -53,20 +45,4 @@ scotchCoeffs
     //strategy "b";
 }
 
-manualCoeffs
-{
-    dataFile    "decompositionData";
-}
-
-
-//// Is the case distributed
-//distributed     yes;
-//// Per slave (so nProcs-1 entries) the directory above the case.
-//roots
-//(
-//    "/tmp"
-//    "/tmp"
-//);
-
-
 // ************************************************************************* //