From a9ffcab5af8df06e5e4af1cac326a1cda7c02316 Mon Sep 17 00:00:00 2001
From: Mark Olesen <Mark.Olesen@esi-group.com>
Date: Thu, 9 Nov 2017 12:30:24 +0100
Subject: [PATCH] ENH: region-wise decomposition specification for
 decomposeParDict

  Within decomposeParDict, it is now possible to specify a different
  decomposition method, methods coefficients or number of subdomains
  for each region individually.

  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.

  Any optional method coefficients can be specified in a general
  "coeffs" entry or a method-specific one, eg "metisCoeffs".

  For multiLevel, only the method-specific "multiLevelCoeffs" dictionary
  is used, and is also mandatory.

----

ENH: shortcut specification for multiLevel.

  In addition to the longer dictionary form, it is also possible to
  use a shorter notation for multiLevel decomposition when the same
  decomposition method applies to each level.
---
 .../decomposePar/decomposePar.C               |  10 +-
 .../decomposePar/decomposeParDict             | 245 +++++++-----
 .../decomposePar/domainDecomposition.C        |   9 +-
 .../domainDecompositionDistribute.C           |   6 +-
 .../preProcessing/mapFields/mapFields.C       |   4 +-
 .../kahipDecomp/dummyKahipDecomp.C            |  14 +-
 .../metisDecomp/dummyMetisDecomp.C            |  14 +-
 .../ptscotchDecomp/dummyPtscotchDecomp.C      |  16 +-
 .../scotchDecomp/dummyScotchDecomp.C          |  14 +-
 .../decompose/decompose/decompositionModel.C  |   1 +
 .../decompose/decompose/decompositionModel.H  |  39 +-
 src/parallel/decompose/decomposition.dox      | 282 +++++++++++++
 .../decompositionMethod/decompositionMethod.C | 370 ++++++++++++++----
 .../decompositionMethod/decompositionMethod.H | 135 ++++++-
 .../geomDecomp/geomDecomp.C                   |  70 +++-
 .../geomDecomp/geomDecomp.H                   |  41 +-
 .../hierarchGeomDecomp/hierarchGeomDecomp.C   |  84 ++--
 .../hierarchGeomDecomp/hierarchGeomDecomp.H   |  32 +-
 .../manualDecomp/manualDecomp.C               |  43 +-
 .../manualDecomp/manualDecomp.H               |  26 +-
 .../metisLikeDecomp/metisLikeDecomp.C         |  23 +-
 .../metisLikeDecomp/metisLikeDecomp.H         |  31 +-
 .../multiLevelDecomp/multiLevelDecomp.C       | 268 +++++++++++--
 .../multiLevelDecomp/multiLevelDecomp.H       |  22 +-
 .../decompositionMethods/noDecomp/noDecomp.C  |  24 +-
 .../decompositionMethods/noDecomp/noDecomp.H  |  32 +-
 .../simpleGeomDecomp/simpleGeomDecomp.C       |  24 +-
 .../simpleGeomDecomp/simpleGeomDecomp.H       |  25 +-
 .../structuredDecomp/structuredDecomp.C       |  22 +-
 .../structuredDecomp/structuredDecomp.H       |  10 +-
 .../decompose/kahipDecomp/kahipDecomp.C       | 170 ++++----
 .../decompose/kahipDecomp/kahipDecomp.H       |  21 +-
 .../decompose/metisDecomp/metisDecomp.C       |  37 +-
 .../decompose/metisDecomp/metisDecomp.H       |  25 +-
 .../decompose/ptscotchDecomp/ptscotchDecomp.C | 159 ++++----
 .../decompose/ptscotchDecomp/ptscotchDecomp.H |  16 +-
 .../decompose/scotchDecomp/scotchDecomp.C     |  54 +--
 .../decompose/scotchDecomp/scotchDecomp.H     |  14 +-
 .../IO/fileHandler/system/decomposeParDict    |  21 +-
 .../heatTransfer/system/decomposeParDict      |   7 +-
 .../system/decomposeParDict                   |  25 +-
 .../system/decomposeParDict                   |   9 +-
 .../compartmentFire/system/decomposeParDict   |  24 --
 .../system/panelRegion/decomposeParDict       |  23 +-
 .../system/decomposeParDict                   |  25 +-
 .../system/panelRegion/decomposeParDict       |  21 +-
 .../smallPoolFire3D/system/decomposeParDict   |  22 +-
 .../RAS/DLR_A_LTS/system/decomposeParDict     |  26 +-
 .../system/decomposeParDict                   |   7 +-
 .../system/decomposeParDict                   |   9 +-
 .../system/decomposeParDict                   |   7 +-
 .../LadenburgJet60psi/system/decomposeParDict |  25 +-
 .../rutlandVortex2D/system/decomposeParDict   |   9 +-
 .../RAS/squareBendLiq/system/decomposeParDict |   9 -
 .../system/decomposeParDict                   |   1 -
 .../injectorPipe/system/decomposeParDict      |   9 +-
 .../squareBend/system/decomposeParDict        |  11 -
 .../squareBendLiq/system/decomposeParDict     |  11 -
 .../RAS/nacaAirfoil/system/decomposeParDict   |  16 +-
 .../freeSpacePeriodic/system/decomposeParDict |  24 +-
 .../freeSpaceStream/system/decomposeParDict   |  24 +-
 .../supersonicCorner/system/decomposeParDict  |  25 +-
 .../wedge15Ma5/system/decomposeParDict        |  25 +-
 .../periodicCubeArgon/system/decomposeParDict |  27 +-
 .../periodicCubeWater/system/decomposeParDict |  26 +-
 .../mdFoam/nanoNozzle/system/decomposeParDict |  27 +-
 .../iglooWithFridges/system/decomposeParDict  |  25 +-
 .../system/bottomWater/decomposeParDict       |  73 +---
 .../system/decomposeParDict                   |  31 +-
 .../system/heater/decomposeParDict            |  45 +--
 .../system/leftSolid/decomposeParDict         |  45 +--
 .../system/rightSolid/decomposeParDict        |  45 +--
 .../system/topAir/decomposeParDict            |  73 +---
 .../system/air/decomposeParDict               |  45 +--
 .../externalSolarLoad/system/decomposeParDict |  22 +-
 .../system/floor/decomposeParDict             |  45 +--
 .../system/solid/decomposeParDict             |  45 +--
 .../multiRegionHeater/Allmesh                 |  26 ++
 .../multiRegionHeater/Allrun                  |  23 +-
 .../multiRegionHeater/README.txt              |   8 +-
 .../system/bottomWater/decomposeParDict       |  73 +---
 .../multiRegionHeater/system/decomposeParDict |  42 +-
 .../system/heater/decomposeParDict            |  45 +--
 .../system/leftSolid/decomposeParDict         |  45 +--
 .../system/rightSolid/decomposeParDict        |  45 +--
 .../system/topAir/decomposeParDict            |  73 +---
 .../system/bottomAir/decomposeParDict         |  32 +-
 .../system/decomposeParDict                   |  32 +-
 .../system/heater/decomposeParDict            |  31 +-
 .../system/leftSolid/decomposeParDict         |  73 +---
 .../system/rightSolid/decomposeParDict        |  73 +---
 .../system/topAir/decomposeParDict            |  73 +---
 .../system/cabin/decomposeParDict             |  26 +-
 .../system/decomposeParDict                   |   4 -
 .../system/windshield/decomposeParDict        |  26 +-
 .../system/cabin/decomposeParDict             |  30 +-
 .../windshieldDefrost/system/decomposeParDict |   5 +-
 .../system/exterior/decomposeParDict          |  30 +-
 .../system/ice/decomposeParDict               |  30 +-
 .../heatExchanger/system/air/decomposeParDict |  25 +-
 .../heatExchanger/system/decomposeParDict     |  25 +-
 .../system/porous/decomposeParDict            |  25 +-
 .../jouleHeatingSolid/system/decomposeParDict |   2 -
 .../system/bottomAir/decomposeParDict         |  45 +--
 .../system/decomposeParDict                   |  36 +-
 .../system/heater/decomposeParDict            |  47 +--
 .../system/leftSolid/decomposeParDict         |  47 +--
 .../system/rightSolid/decomposeParDict        |  47 +--
 .../system/topAir/decomposeParDict            |  45 +--
 .../system/coarseMesh/decomposeParDict        |   2 -
 .../cavityMappingTest/system/decomposeParDict |   2 -
 .../building/steady/system/decomposeParDict   |   9 +-
 .../system/decomposeParDict                   |   8 +-
 .../simpleRotor/system/decomposeParDict       |   7 +-
 .../twoSimpleRotors/system/decomposeParDict   |   8 +-
 .../system/decomposeParDict                   |  19 +-
 .../system/decomposeParDict                   |  19 +-
 .../mixerVesselAMI2D/system/decomposeParDict  |   1 -
 .../system/decomposeParDict                   |  10 +-
 .../propeller/system/decomposeParDict         |  10 +-
 .../system/decomposeParDict                   |  16 +-
 .../system/decomposeParDict                   |  20 +-
 .../LES/channel395/system/decomposeParDict    | 112 +-----
 .../channel395DFSEM/system/decomposeParDict   |   7 +-
 .../LES/vortexShed/system/decomposeParDict    |   7 +-
 .../motorBike/system/decomposeParDict         |  21 +-
 .../system/decomposeParDict.hierarchical      |  20 +-
 .../system/decomposeParDict.ptscotch          |  21 +-
 .../pitzDailyMapped/system/decomposeParDict   |  24 --
 .../system/decomposeParDict                   |  20 +-
 .../motorBike/system/decomposeParDict.6       |  22 +-
 .../pipeCyclic/system/decomposeParDict        |   1 -
 .../system/decomposeParDict                   |  21 +-
 .../system/decomposeParDict.hierarchical      |   6 +-
 .../Goldschmidt/system/decomposeParDict       |   7 +-
 .../Goldschmidt/system/decomposeParDict       |   7 +-
 .../MPPICFoam/cyclone/system/decomposeParDict |   8 +-
 .../simplifiedSiwek/system/decomposeParDict   |  20 +-
 .../hopperEmptying/system/decomposeParDict    |  19 +-
 .../system/decomposeParDict                   |  20 +-
 .../cylinder/system/decomposeParDict          |  21 +-
 .../filter/system/decomposeParDict            |  22 +-
 .../hotBoxes/system/decomposeParDict          |   1 -
 .../wallFilmRegion.orig/decomposeParDict      |   1 -
 .../rivuletPanel/system/decomposeParDict      |  21 +-
 .../splashPanel/system/decomposeParDict       |  21 +-
 .../decomposeParDict                          |  21 +-
 .../foamyHexMesh/blob/system/decomposeParDict |  25 +-
 .../decomposeParDict                          |  21 +-
 .../flange/system/decomposeParDict            |  21 +-
 .../constant/triSurface/surfaceProcess.sh     |   5 +-
 .../mixerVessel/system/decomposeParDict       |  25 +-
 .../OpenCFD/system/decomposeParDict           |  20 +-
 .../SnakeRiverCanyon/system/decomposeParDict  |  19 +-
 .../system/decomposeParDict                   |   9 +-
 .../box_snappyHexMesh/system/decomposeParDict |   9 +-
 .../parallel/filter/system/decomposeParDict   |  19 -
 .../flange/system/decomposeParDict            |  20 +-
 .../gap_detection/system/decomposeParDict     |  23 +-
 .../twoPhasePachuka/system/decomposeParDict   |   9 +-
 .../LES/throttle3D/system/decomposeParDict    |  20 +-
 .../sloshingTank2D/system/decomposeParDict    |  20 +-
 .../sphereDrop/system/decomposeParDict        |   5 +-
 .../depthCharge3D/system/decomposeParDict     |  20 +-
 .../damBreak4phase/system/decomposeParDict    |  20 +-
 .../RAS/DTCHull/system/decomposeParDict       |  38 +-
 .../floatingObject/system/decomposeParDict    |  23 --
 .../mixerVesselAMI/system/decomposeParDict    |   1 -
 .../RAS/motorBike/system/decomposeParDict     |  21 +-
 .../system/decomposeParDict                   |  24 --
 .../sloshingTank2D/system/decomposeParDict    |  20 +-
 .../system/decomposeParDict                   |  20 +-
 .../sloshingTank3D/system/decomposeParDict    |  20 +-
 .../system/decomposeParDict                   |  21 +-
 .../system/decomposeParDict                   |  21 +-
 .../testTubeMixer/system/decomposeParDict     |  21 +-
 .../RAS/DTCHull/system/decomposeParDict       |  32 +-
 .../damBreak/damBreak/system/decomposeParDict |  20 +-
 .../damBreak/damBreak/system/decomposeParDict |  19 +-
 .../eulerianInjection/system/decomposeParDict |   6 +-
 .../system/decomposeParDict                   |   5 +-
 .../system/decomposeParDict                   |   7 +-
 .../system/decomposeParDict                   |   6 +-
 .../system/decomposeParDict                   |   6 +-
 .../system/decomposeParDict                   |   6 +-
 .../system/decomposeParDict                   |   6 +-
 .../system/decomposeParDict                   |   6 +-
 .../system/decomposeParDict                   |   6 +-
 .../system/decomposeParDict                   |   8 +-
 .../damBreak/system/decomposeParDict          |  20 +-
 .../system/decomposeParDict                   |  10 +-
 .../system/decomposeParDict                   |  13 +-
 .../standingWave/system/decomposeParDict      |  20 +-
 .../laminar/damBreak/system/decomposeParDict  |  20 +-
 .../propeller/system/decomposeParDict         |   8 +-
 .../cavitatingBullet/system/decomposeParDict  |  21 +-
 .../damBreak4phase/system/decomposeParDict    |  21 +-
 .../system/decomposeParDict                   |  21 +-
 .../mixerVesselAMI2D/system/decomposeParDict  |   1 -
 .../damBreak4phase/system/decomposeParDict    |  21 +-
 .../system/decomposeParDict                   |  21 +-
 .../background/system/decomposeParDict        |   7 +-
 .../system/decomposeParDict                   |   7 +-
 .../system/decomposeParDict                   |   7 +-
 .../motorBike/system/decomposeParDict         |  20 +-
 .../system/bottomAir/decomposeParDict         |  32 +-
 .../system/decomposeParDict                   |  32 +-
 .../system/heater/decomposeParDict            |  32 +-
 .../system/leftSolid/decomposeParDict         |  32 +-
 .../system/rightSolid/decomposeParDict        |  32 +-
 .../system/topAir/decomposeParDict            |  32 +-
 211 files changed, 2399 insertions(+), 3916 deletions(-)
 create mode 100644 src/parallel/decompose/decomposition.dox
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/bottomWater/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/heater/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/leftSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/rightSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalCoupledMultiRegionHeater/system/topAir/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/air/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/floor/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/externalSolarLoad/system/solid/decomposeParDict
 create mode 100755 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/bottomWater/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/heater/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/leftSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/rightSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/system/topAir/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/leftSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/rightSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/system/topAir/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/cabin/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/windshieldCondensation/system/windshield/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/cabin/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/exterior/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionFoam/windshieldDefrost/system/ice/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/bottomAir/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/heater/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/leftSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/rightSolid/decomposeParDict
 mode change 100644 => 120000 tutorials/heatTransfer/chtMultiRegionSimpleFoam/multiRegionHeaterRadiation/system/topAir/decomposeParDict

diff --git a/applications/utilities/parallelProcessing/decomposePar/decomposePar.C b/applications/utilities/parallelProcessing/decomposePar/decomposePar.C
index b06da4f4a72..d1b9b58a7de 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 cb061078b7d..2ad99e2ea5f 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 bf722cfbae3..0cc795761c8 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),
diff --git a/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C b/applications/utilities/parallelProcessing/decomposePar/domainDecompositionDistribute.C
index 371f44f73ef..472077a709a 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 93ba3164126..be6261d3f0b 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/dummyThirdParty/kahipDecomp/dummyKahipDecomp.C b/src/dummyThirdParty/kahipDecomp/dummyKahipDecomp.C
index 96e0bdc16b9..6e147e26265 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 3743cc1bae6..c5f8e3ba9a5 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 decacb6c10c..5a756b477ff 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 582c7702537..9aa8e20ec0f 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/parallel/decompose/decompose/decompositionModel.C b/src/parallel/decompose/decompose/decompositionModel.C
index dbcb023af19..8f156c64b55 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 7ed6bd3fa2b..2cbfa4d2496 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 00000000000..0256b48e4a4
--- /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 c17958367a3..69bc26b4d3d 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 75a797e1aee..96ad3afc982 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 6f741b09598..1c2df26498a 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 e1538356ee7..7684a2ef4ee 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 658ae83058a..486a29ea04e 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 2df6080f5b5..91fbf6d8770 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 0c42d691f6c..23cbd33e311 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 c453bcf73d6..ac97c4dbb32 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 02d283c5482..7c3b6bb7fee 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 27b81bf3e68..69af7acd3ca 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 1bdc02aea9d..3b72aa6d888 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 d11f14280b0..dcc40cd8dad 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 e62e588b9ec..9c4606fce56 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 5c3459f16fa..74169998d27 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 a91b743a18e..ece25f250f8 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 9b32d1c5084..c5abc336d9c 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 2d9dbeff3fa..a2a68a871ec 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 a2374f40a05..171a51be01c 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 2bf6d884057..7774934163e 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 c399a68e010..7084836a166 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 efd0d64b1fa..d6a4f5ea983 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 d037fab95fe..65e8f75182f 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 610de99d68a..08a146053e2 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 a9146ae9e6f..9d613cd9280 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 88f14fac7ca..a29ecc63f76 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 ca182253d7c..a32a682f30d 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 341581df062..df7138cff9f 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 138625c7da8..47cf5911d3c 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 f6b97abcd50..e62ff29c034 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 3f544b27384..a5b0041fbf3 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 9a3167e3401..1aa2fb3b07a 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 183eff948af..2f9021fa9e3 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 b1c15391bc7..7182f3d1a1e 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 c08a60ec1da..8428f9470d5 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 a2496cc2234..58435778b83 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 5126da72cdc..84dc5aecf54 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 ede2181dfee..415cda309aa 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 02feb195c5e..415cda309aa 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 ede2181dfee..415cda309aa 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 86fb26d3803..56c4070c754 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 20edb36158f..87f1a305f0d 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 d34bb5a0262..b27efc23b92 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 0903cf53158..2ccf121cd38 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 8427b2c142c..7e1f9ae4302 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 0ab23bff191..b27efc23b92 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 0ab23bff191..b27efc23b92 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 a456e9fc859..86086b49129 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 0c9252b9ad3..6cf530be19d 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 0c9252b9ad3..6cf530be19d 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 61f7f8c0dd8..50920452090 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 61f7f8c0dd8..50920452090 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 fb9d7877dc2..3bac4854f0b 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 c4d7c417233..55b2a30194c 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 e1dbbc6af0f..ce2d6502b1d 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 5c21df91e4f..079c1974676 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 1a49f7a69be..00000000000
--- 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 00000000000..46638e60f61
--- /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 916ce1f4e20..bc03b02cb93 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 91ef8baa9e4..00000000000
--- 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 00000000000..46638e60f61
--- /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 91ef8baa9e4..00000000000
--- 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 00000000000..46638e60f61
--- /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 91ef8baa9e4..00000000000
--- 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 00000000000..46638e60f61
--- /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 1a49f7a69be..00000000000
--- 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 00000000000..46638e60f61
--- /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 ffe8be78e47..00000000000
--- 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 00000000000..46638e60f61
--- /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 1bdeb6b7ad9..c1498e9029e 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 ffe8be78e47..00000000000
--- 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 00000000000..46638e60f61
--- /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 ffe8be78e47..00000000000
--- 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 00000000000..46638e60f61
--- /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 00000000000..7f27e81ea3b
--- /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 5cf86d4458f..efb377ca892 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 647f11981d3..a50b770783c 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 1a49f7a69be..00000000000
--- 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 00000000000..46638e60f61
--- /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 916ce1f4e20..e630d521198 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 91ef8baa9e4..00000000000
--- 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 00000000000..46638e60f61
--- /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 91ef8baa9e4..00000000000
--- 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 00000000000..46638e60f61
--- /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 91ef8baa9e4..00000000000
--- 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 00000000000..46638e60f61
--- /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 1a49f7a69be..00000000000
--- 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 00000000000..46638e60f61
--- /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 1a49f7a69be..7263dc66d4a 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 742a2495dfc..747b5114b73 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 1a49f7a69be..6f60341487a 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 1a49f7a69be..00000000000
--- 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 00000000000..d6dd0b5c063
--- /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 1a49f7a69be..00000000000
--- 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 00000000000..d6dd0b5c063
--- /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 1a49f7a69be..00000000000
--- 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 00000000000..3523816fd8c
--- /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 0d50f520e43..00000000000
--- 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 00000000000..46638e60f61
--- /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 0d50f520e43..2ccf121cd38 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 0d50f520e43..00000000000
--- 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 00000000000..46638e60f61
--- /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 e0a1bb5397a..00000000000
--- 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 00000000000..46638e60f61
--- /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 e0a1bb5397a..93b519fc7d1 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 e0a1bb5397a..00000000000
--- 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 00000000000..46638e60f61
--- /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 e0a1bb5397a..00000000000
--- 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 00000000000..46638e60f61
--- /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 d7b4b378864..fbeb943163d 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 d7b4b378864..fbeb943163d 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 61f7f8c0dd8..50920452090 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 5448946b393..22490ad0e50 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 ffe8be78e47..00000000000
--- 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 00000000000..46638e60f61
--- /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 1a49f7a69be..b3f8705217e 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 222243ec950..00000000000
--- 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 00000000000..46638e60f61
--- /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 222243ec950..00000000000
--- 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 00000000000..46638e60f61
--- /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 222243ec950..00000000000
--- 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 00000000000..46638e60f61
--- /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 ffe8be78e47..00000000000
--- 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 00000000000..46638e60f61
--- /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 cf5823a268b..2ccf121cd38 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 cf5823a268b..2ccf121cd38 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 e155f990eb4..9cd763c3f7e 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 29610a20d88..415cda309aa 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 805c936e877..8fa48d97e2b 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 2e73b80199c..8fa48d97e2b 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 f70b376fabb..91e32fc1521 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 5a457a75200..f1b18226f65 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 441b8bdbbb4..a57967483dc 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 82389e7cf3a..1cda0c79246 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 85ea74b3b79..a967dc8e37a 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 f6b939ebccf..50920452090 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 6202e242f50..91e32fc1521 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 064765b0d0a..4ec2ca98ac4 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 0a7cc129c12..a027d1dbe9d 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 d429acabdf6..db26a8c487f 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 0be1973c5f5..c8d493ee987 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 0be1973c5f5..349b598d3ee 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 59fee527f04..f3d9d8baf90 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 880edbdd8d7..efb47b5d70a 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 2fd87ad2ac5..fdf2b548b49 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 db5f0cd2c28..72ccf6fe1e1 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 8eef9939739..22d0a558b3d 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 d2ba4aab9fc..eb1dcb53fa5 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 0ec2cc47f72..f9bc71739dc 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 a7f9749028c..0ad5e3237fa 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 60a43cac788..9a39c07902c 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 7990b000489..1561b79e382 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 d7b4b378864..12a2e8b434d 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 341581df062..5539e64d77b 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 341581df062..a0bc43d99a8 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 35ee29db3d0..4e024e7a6c0 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 f50ab8d7166..549f7540a53 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 547c0a1e4d3..ae9f4ce2922 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 547c0a1e4d3..ae9f4ce2922 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 35ee29db3d0..7ebff6fbccb 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 35ee29db3d0..4e024e7a6c0 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 4051a535300..dfcc2d40e86 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 4051a535300..a1ba0095f6b 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 552d5ce1ccd..f5d7a5b3881 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 552d5ce1ccd..f5d7a5b3881 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 2e97357bc22..d5d581ca741 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 33bdcf393fb..ab5a462de87 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 acb913f1742..a5229e0e188 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 938ed79f6fc..26d0ca5bd31 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 35eae8f99c6..f1e7dbf0bb7 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 35eae8f99c6..f1e7dbf0bb7 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 099ae341f54..61f2bb65241 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 37e6377198c..e2e3c3f1b2b 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 bd6966b6574..5e433b77243 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 c9e6d266a88..90346c353d2 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 61f7f8c0dd8..a5c698cbb82 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 4b8c326537f..ca0d5710b3a 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 c79d985331a..2040beb9839 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 b8678d7c969..02447c45362 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 61f7f8c0dd8..a5c698cbb82 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 a024bf31cbd..efb47b5d70a 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 02a34be82be..bfce791340a 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 07354668609..83c7978f9fd 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 5c5ab00ebfc..5af511273b6 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 84b7774d501..aa616c6c806 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 4b8c326537f..ca0d5710b3a 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 4b8c326537f..ca0d5710b3a 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 4b8c326537f..ca0d5710b3a 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 4b8c326537f..a3b79da8ff8 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 4b8c326537f..a3b79da8ff8 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 4b8c326537f..a3b79da8ff8 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 a024bf31cbd..db0c617244e 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 61f7f8c0dd8..a5c698cbb82 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 61f7f8c0dd8..51ea6cd9f26 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 0573ee2a16c..175381fc75b 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 09cbfd15750..175381fc75b 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 09cbfd15750..b2b80856503 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 301d97027b8..1af1406f957 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 301d97027b8..1af1406f957 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 301d97027b8..1af1406f957 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 301d97027b8..1af1406f957 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 301d97027b8..1af1406f957 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 301d97027b8..1af1406f957 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 57c7bea5e33..1af1406f957 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 b2904624d35..a5c698cbb82 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 70dd6defca7..bfec08236bf 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 b8a6f06f4f5..16bd8f8975d 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 28839d76e1c..7ef82657522 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 61f7f8c0dd8..a5c698cbb82 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 85ea74b3b79..dd282329019 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 61f7f8c0dd8..52a9b4bbef1 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 61f7f8c0dd8..52a9b4bbef1 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 61f7f8c0dd8..52a9b4bbef1 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 441b8bdbbb4..a57967483dc 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 61f7f8c0dd8..52a9b4bbef1 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 61f7f8c0dd8..52a9b4bbef1 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 ede2181dfee..415cda309aa 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 df31c866a54..d2300c105f8 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 df31c866a54..d2300c105f8 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 eb9bb3ad5e9..6836cf88889 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 1a49f7a69be..7263dc66d4a 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 742a2495dfc..747b5114b73 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 1a49f7a69be..7263dc66d4a 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 1a49f7a69be..7263dc66d4a 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 1a49f7a69be..7263dc66d4a 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 1a49f7a69be..7263dc66d4a 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"
-//);
-
-
 // ************************************************************************* //
-- 
GitLab