diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
index 80a4dc58e8ef8da4e481630185f6319600829108..42752388157aabe26cf316b9419bb15f544371d3 100644
--- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
+++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMesh.C
@@ -1111,6 +1111,11 @@ int main(int argc, char *argv[])
             cellProcAddressing.writeOpt() = IOobject::NO_WRITE;
         }
     }
+    else
+    {
+        cellProcAddressing.writeOpt() = IOobject::NO_WRITE;
+    }
+
     if (faceProcAddressing.headerOk())
     {
         if (faceProcAddressing.size() == mesh.nFaces())
@@ -1146,6 +1151,11 @@ int main(int argc, char *argv[])
             faceProcAddressing.writeOpt() = IOobject::NO_WRITE;
         }
     }
+    else
+    {
+        faceProcAddressing.writeOpt() = IOobject::NO_WRITE;
+    }
+
     if (pointProcAddressing.headerOk())
     {
         if (pointProcAddressing.size() == mesh.nPoints())
@@ -1160,20 +1170,30 @@ int main(int argc, char *argv[])
         }
         else
         {
-            Info<< "Not writing consistent processor point decomposition"
+            Info<< "Not writing inconsistent processor point decomposition"
                 << " map " << pointProcAddressing.filePath() << endl;
             pointProcAddressing.writeOpt() = IOobject::NO_WRITE;
         }
     }
+    else
+    {
+        pointProcAddressing.writeOpt() = IOobject::NO_WRITE;
+    }
+
     if (boundaryProcAddressing.headerOk())
     {
         if (boundaryProcAddressing.size() != mesh.boundaryMesh().size())
         {
-            Info<< "Not writing consistent processor patch decomposition"
+            Info<< "Not writing inconsistent processor patch decomposition"
                 << " map " << boundaryProcAddressing.filePath() << endl;
             boundaryProcAddressing.writeOpt() = IOobject::NO_WRITE;
         }
     }
+    else
+    {
+        boundaryProcAddressing.writeOpt() = IOobject::NO_WRITE;
+    }
+
 
 
 
diff --git a/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict b/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict
index c6321991cc8ce301ac84b6dc3a732689044db4ba..886285c9524ee6cf5e61e6ab2a4688247657bbab 100644
--- a/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict
+++ b/applications/utilities/mesh/manipulation/renumberMesh/renumberMeshDict
@@ -16,7 +16,7 @@ FoamFile
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 // Write maps from renumbered back to original mesh
-writeMaps true;
+writeMaps false;
 
 // Optional entry: sort cells on coupled boundaries to last for use with
 // e.g. nonBlockingGaussSeidel.
diff --git a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
index aee47e55fd4ad525053f67a3965e8d180c182323..3c53c60c6a83fd05cecf8a10a33091944b5109b9 100644
--- a/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
+++ b/applications/utilities/parallelProcessing/redistributePar/redistributePar.C
@@ -2532,14 +2532,40 @@ int main(int argc, char *argv[])
             bool haveAddressing = false;
             if (haveMesh[Pstream::myProcNo()])
             {
-                haveAddressing = IOobject
+                // Read faces (just to know their size)
+                faceCompactIOList faces
                 (
-                    "faceProcAddressing",
-                    facesInstance,
-                    meshSubDir,
-                    runTime,
-                    IOobject::READ_IF_PRESENT
-                ).typeHeaderOk<labelIOList>(true);
+                    IOobject
+                    (
+                        "faces",
+                        facesInstance,
+                        meshSubDir,
+                        runTime,
+                        IOobject::MUST_READ
+                    )
+                );
+
+                // Check faceProcAddressing
+                labelIOList faceProcAddressing
+                (
+                    IOobject
+                    (
+                        "faceProcAddressing",
+                        facesInstance,
+                        meshSubDir,
+                        runTime,
+                        IOobject::READ_IF_PRESENT
+                    ),
+                    labelList(0)
+                );
+                if
+                (
+                    faceProcAddressing.headerOk()
+                 && faceProcAddressing.size() == faces.size()
+                )
+                {
+                    haveAddressing = true;
+                }
             }
             else
             {
diff --git a/bin/tools/foamConfigurePaths b/bin/tools/foamConfigurePaths
index a85cff83f8b3f68d20dd7ea2c4e7995fdcd326a9..442eaf83e178b0f2826e3dd7d5cbe02e6e113927 100755
--- a/bin/tools/foamConfigurePaths
+++ b/bin/tools/foamConfigurePaths
@@ -1,5 +1,5 @@
 #!/bin/sh
-#---------------------------------*- sh -*-------------------------------------
+#------------------------------------------------------------------------------
 # =========                 |
 # \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
 #  \\    /   O peration     |
@@ -26,7 +26,7 @@
 #     foamConfigurePaths
 #
 # Description
-#     Adjust hardcoded installation paths and versions
+#     Adjust hardcoded versions and installation paths (for bash, POSIX shell).
 #
 #------------------------------------------------------------------------------
 usage() {
@@ -35,47 +35,93 @@ usage() {
     cat<<USAGE
 
 usage: ${0##*/}
-  -foamInstall dir        specify installation directory (e.g. /opt)
-  -projectName name       specify project name (e.g. openfoam220)
-  -projectVersion ver     specify project version (e.g. 2.2.0)
-  -archOption 32|64       specify architecture option
-  -label 32|64            specify label size
+  -foamInstall dir        specify installation directory (eg, /opt)
+  -foamVersion ver        specify project version (eg, 1612)
+  -projectName name       specify project directory name (eg, openfoam1612)
+  -archOption 32|64       specify 'WM_ARCH_OPTION' architecture option
+  -int32  | -int64        specify 'WM_LABEL_SIZE'
+  -SP     | -DP           specify 'WM_PRECISION_OPTION'
   -system name            specify 'system' compiler to be used
-  -thirdParty name        specify 'ThirdParty' compiler to be used
-
-  -boost ver              specify boost_version
-  -boostArchPath dir      specify BOOST_ARCH_PATH
-  -cgal ver               specify cgal_version
-  -cgalArchPath dir       specify CGAL_ARCH_PATH
-  -clang ver              specify clang_version for ThirdParty Clang
-  -cmake ver              specify cmake_version
-  -fftw ver               specify fffw_version
-  -fftwArchPath dir       specify FFTW_ARCH_PATH
-  -metis ver              specify METIS_VERSION
-  -metisArchPath dir      specify METIS_ARCH_PATH
-  -paraview ver           specify ParaView_VERSION (e.g. 3.12.0)
-  -paraviewInstall dir    specify ParaView_DIR (e.g. /opt/paraviewopenfoam3120)
-  -scotch ver             specify SCOTCH_VERSION (e.g. 6.0.0)
-  -scotchArchPath dir     specify SCOTCH_ARCH_PATH (e.g. /opt/OpenFOAM-scotch-6.0.0/)
-
-* Adjust hardcoded installation paths and versions
+  -third  name            specify 'ThirdParty' compiler to be used
+  -boost ver              specify 'boost_version'
+  -boost-path dir         specify 'BOOST_ARCH_PATH'
+  -cgal ver               specify 'cgal_version'
+  -cgal-path dir          specify 'CGAL_ARCH_PATH'
+  -clang ver              specify 'clang_version' for ThirdParty Clang
+  -cmake ver              specify 'cmake_version'
+  -fftw ver               specify 'fffw_version'
+  -fftw-path dir          specify 'FFTW_ARCH_PATH'
+  -metis ver              specify 'METIS_VERSION'
+  -metis-path dir         specify 'METIS_ARCH_PATH'
+  -paraview ver           specify 'ParaView_VERSION' (eg, 5.0.1)
+  -paraview-path dir      specify 'ParaView_DIR' (eg, /opt/paraviewopenfoam3120)
+  -openmpi ver            specify ThirdParty openmpi version for 'FOAM_MPI'
+  -openmpi-system         activate system openmpi
+  -openmpi-third          activate ThirdParty openmpi (using default version)
+  -scotch ver             specify 'SCOTCH_VERSION' (eg, scotch_6.0.4)
+  -scotch-path dir        specify 'SCOTCH_ARCH_PATH' (eg, /opt/OpenFOAM-scotch_6.0.4)
+  -vtk  ver               specify 'vtk_version' (eg, VTK-7.1.0)
+  -mesa ver               specify 'mesa_version' (eg, mesa-13.0.1)
+  -sigfpe | -no-sigfpe    activate/deactivate FOAM_SIGFPE handling
+  gmp-VERSION             for ThirdParty gcc (gmp-system for system library)
+  mpfr-VERSION            for ThirdParty gcc (mpfr-system for system library)
+  mpc-VERSION             for ThirdParty gcc (mpc-system for system library)
+
+* Adjust hardcoded versions and installation paths (for bash, POSIX shell).
+
+Equivalent options:
+  -foamInstall          --foamInstall
+  -foamVersion          --projectVersion
+  -projectName          --projectName
+  -archOption           --archOption
+  -third                -ThirdParty
+  -paraview             --paraviewVersion | -paraviewVersion
+  -paraview-path        --paraviewInstall | -paraviewInstall
+  -scotch               --scotchVersion | -scotchVersion
+  -scotch-path          --scotchArchPath | -scotchArchPath
 
 USAGE
     exit 1
 }
 
+# Check that it appears to be an OpenFOAM installation
+[ -f etc/bashrc -a -d etc/config.sh ] || \
+    usage "Please run from top-level directory of installation"
+
+
 # Report error and exit
 die()
 {
     exec 1>&2
     echo
-    echo "Error: see '${0##*/} -help' for usage"
+    echo "Error encountered:"
     while [ "$#" -ge 1 ]; do echo "    $1"; shift; done
     echo
+    echo "See '${0##*/} -help' for usage"
+    echo
     exit 1
 }
 
 
+# Check if argument matches the expected input. Respects case.
+# Uses sed for consistency with the replacement routines.
+#
+# _matches <arg> <matcher> [... <matcherN>]
+#
+_matches()
+{
+    local input="$1"
+    shift
+    local result
+    for regexp
+    do
+        result=$(echo "$input" | sed -n -e "/^$regexp"'$/p')
+        test -n "$result" && return 0  # successful match
+    done
+    return 1
+}
+
+
 # Function to do replacement on file. Checks if any replacement has been done.
 # _inlineSed <file> <regexp> <replacement> <msg>
 _inlineSed()
@@ -96,7 +142,7 @@ _inlineSed()
         return 1
     }
 
-    echo "Okay: $msg in $file"
+    echo "    $msg  ($file)"
     return 0
 }
 
@@ -122,16 +168,13 @@ replace()
             $file \
             "$key=.*" \
             "$key=$val" \
-            "Replacing $key setting by '$val'"
+            "Replaced $key setting by '$val'"
     done
 }
 
-
-[ -f etc/bashrc ] || usage "Please run from top-level directory of installation"
-
 #------------------------------------------------------------------------------
 
-unset adjusted
+unset adjusted optMpi
 # Parse options
 while [ "$#" -gt 0 ]
 do
@@ -139,6 +182,9 @@ do
     -h | -help | --help)
         usage
         ;;
+    '')
+        # Discard empty arguments
+        ;;
 
     -foamInstall | --foamInstall)
         # Replace FOAM_INST_DIR=...
@@ -148,7 +194,7 @@ do
             etc/bashrc \
             '\(.*BASH_SOURCE.*\)' \
             '##\1' \
-            "Removing default FOAM_INST_DIR setting"
+            "Removed default FOAM_INST_DIR setting"
         _inlineSed \
             etc/bashrc \
             '^ *FOAM_INST_DIR=.*' \
@@ -167,13 +213,13 @@ do
             etc/bashrc \
             'WM_PROJECT_DIR=.*' \
             'WM_PROJECT_DIR=$WM_PROJECT_INST_DIR/'"$projectName" \
-            "Replacing WM_PROJECT_DIR setting by $projectName"
+            "Replaced WM_PROJECT_DIR setting by $projectName"
 
         adjusted=true
         shift
         ;;
 
-   -projectVersion | --projectVersion)
+   -foamVersion | --projectVersion)
         # Replace WM_PROJECT_VERSION=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/bashrc  WM_PROJECT_VERSION "$2"
@@ -184,24 +230,32 @@ do
     -archOption | --archOption)
         # Replace WM_ARCH_OPTION=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
-        archOption="$2"
-        current="$(sed -ne '/^[^#]/s/^.* WM_ARCH_OPTION=//p' etc/bashrc)"
-        if [ "$archOption" = "$current" ]
+        _matches "$2" 32 64 || die "'$1' option has bad value: '$2'"
+
+        optionValue="$2"
+        if [ "$optionValue" = "$(sed -ne '/^[^#]/s/^.* WM_ARCH_OPTION=//p' etc/bashrc)" ]
         then
-            echo "WM_ARCH_OPTION already set to $archOption"
+            echo "WM_ARCH_OPTION already set to $optionValue"
+            : ${adjusted:=false}
         else
-            replace etc/bashrc  WM_ARCH_OPTION "$2"
+            replace etc/bashrc  WM_ARCH_OPTION "$optionValue"
+            adjusted=true
         fi
-        adjusted=true
         shift
         ;;
 
-    -label)
+    -int32 | -int64)
         # Replace WM_LABEL_SIZE=...
-        [ "$#" -ge 2 ] || die "'$1' option requires an argument"
-        replace etc/bashrc  WM_LABEL_SIZE "$2"
+        optionValue="${1#-int}"
+        replace etc/bashrc  WM_LABEL_SIZE "$optionValue"
+        adjusted=true
+        ;;
+
+    -SP | -DP)
+        # Replace WM_PRECISION_OPTION=...
+        optionValue="${1#-}"
+        replace etc/bashrc  WM_PRECISION_OPTION "$optionValue"
         adjusted=true
-        shift
         ;;
 
     -system)
@@ -212,7 +266,7 @@ do
         shift
         ;;
 
-    -third[Pp]arty)
+    -third | -ThirdParty)
         # Replace WM_COMPILER_TYPE=... and WM_COMPILER=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/bashrc  WM_COMPILER_TYPE ThirdParty  WM_COMPILER "$2"
@@ -220,7 +274,6 @@ do
         shift
         ;;
 
-
     -boost)
         # Replace boost_version=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
@@ -229,7 +282,7 @@ do
         shift
         ;;
 
-    -boostArchPath)
+    -boost-path)
         # Replace BOOST_ARCH_PATH=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/config.sh/CGAL  BOOST_ARCH_PATH "$2"
@@ -245,7 +298,7 @@ do
         shift
         ;;
 
-    -cgalArchPath)
+    -cgal-path)
         # Replace CGAL_ARCH_PATH=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/config.sh/CGAL  CGAL_ARCH_PATH "$2"
@@ -261,7 +314,7 @@ do
         shift
         ;;
 
-    -fftwArchPath)
+    -fftw-path)
         # Replace FFTW_ARCH_PATH=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/config.sh/FFTW  FFTW_ARCH_PATH "$2"
@@ -285,15 +338,50 @@ do
         shift
         ;;
 
+    -openmpi)
+        # Replace FOAM_MPI=openmpi-<digits>.. and set to use third-party
+        #  The edit is slightly fragile, but works
+        expected="openmpi-[1-9][.0-9]*"
+        [ "$#" -ge 2 ] || die "'$1' option requires an argument"
+        optMpi="$2"
+        _matches "$optMpi" "$expected" || die "'$1' option has bad value: '$optMpi'"
+
+        _inlineSed etc/config.sh/mpi \
+            "FOAM_MPI=$expected" \
+            "FOAM_MPI=$optMpi" \
+            "Replaced 'FOAM_MPI=$expected' setting by 'FOAM_MPI=$optMpi'"
+
+        replace etc/bashrc  WM_MPLIB OPENMPI
+        adjusted=true
+        shift
+        ;;
+
+    -openmpi-system)
+        # Explicitly set WM_MPLIB=SYSTEMOPENMPI
+        replace etc/bashrc  WM_MPLIB SYSTEMOPENMPI
+        optMpi=system
+        adjusted=true
+        ;;
+
+    -openmpi-third)
+        # Explicitly set WM_MPLIB=OPENMPI, using default setting for openmpi
+        replace etc/bashrc  WM_MPLIB OPENMPI
+        optMpi=third
+        adjusted=true
+        ;;
+
     -paraview | -paraviewVersion | --paraviewVersion)
         # Replace ParaView_VERSION=...
+        expected="[5-9][.0-9]*"
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
+        _matches "$2" "$expected" || die "'$1' option has bad value: '$2'"
+
         replace etc/config.sh/paraview  ParaView_VERSION "$2"
         adjusted=true
         shift
         ;;
 
-    -paraviewInstall | --paraviewInstall)
+    -paraview-path | -paraviewInstall | --paraviewInstall)
         # Replace ParaView_DIR=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/config.sh/paraview  ParaView_DIR "$2"
@@ -309,7 +397,7 @@ do
         shift
         ;;
 
-    -metisArchPath)
+    -metis-path)
         # Replace METIS_ARCH_PATH=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/config.sh/metis  METIS_ARCH_PATH "$2"
@@ -325,7 +413,7 @@ do
         shift
         ;;
 
-    -scotchArchPath | --scotchArchPath)
+    -scotch-path | -scotchArchPath | --scotchArchPath)
         # Replace SCOTCH_ARCH_PATH=...
         [ "$#" -ge 2 ] || die "'$1' option requires an argument"
         replace etc/config.sh/scotch  SCOTCH_ARCH_PATH "$2"
@@ -333,6 +421,56 @@ do
         shift
         ;;
 
+    -vtk)
+        # Replace vtk_version=...
+        [ "$#" -ge 2 ] || die "'$1' option requires an argument"
+        replace etc/config.sh/vtk  vtk_version "$2"
+        adjusted=true
+        shift
+        ;;
+
+    -mesa)
+        # Replace mesa_version=...
+        [ "$#" -ge 2 ] || die "'$1' option requires an argument"
+        replace etc/config.sh/vtk  mesa_version "$2"
+        adjusted=true
+        shift
+        ;;
+
+    gmp-[4-9]* | gmp-system)
+        # gcc-related package
+        replace etc/config.sh/compiler  gmp_version "$1"
+        adjusted=true
+        ;;
+
+    mpfr-[2-9]* | mpfr-system)
+        # gcc-related package
+        replace etc/config.sh/compiler  mpfr_version "$1"
+        adjusted=true
+        ;;
+
+    mpc-[0-9]* | mpc-system)
+        # gcc-related package
+        replace etc/config.sh/compiler  mpc_version "$1"
+        adjusted=true
+        ;;
+
+    -sigfpe)
+        # Enable FOAM_SIGFPE handling
+        _inlineSed etc/bashrc \
+            "[a-z][a-z]* FOAM_SIGFPE.*" \
+            "export FOAM_SIGFPE=" \
+            "Activate FOAM_SIGFPE handling"
+        ;;
+
+    -no-sigfpe)
+        # Disable FOAM_SIGFPE handling
+        _inlineSed etc/bashrc \
+            "[a-z][a-z]* FOAM_SIGFPE.*" \
+            "unset FOAM_SIGFPE" \
+            "Deactivate FOAM_SIGFPE handling"
+        ;;
+
     *)
         die "unknown option/argument: '$1'"
         ;;
@@ -340,12 +478,13 @@ do
     shift
 done
 
-[ -n "$adjusted" ] || die "Please specify at least one configure option"
-
-# Set WM_MPLIB=SYSTEMOPENMPI always
-replace etc/bashrc  WM_MPLIB SYSTEMOPENMPI
-
-## Set WM_COMPILER_TYPE=system always
-# replace etc/bashrc  WM_COMPILER_TYPE system
+if [ "$adjusted" = false ]
+then
+    echo "Nothing adjusted"
+    exit 0
+elif [ -z "$adjusted" ]
+then
+    die "Please specify at least one configure option"
+fi
 
 #------------------------------------------------------------------------------
diff --git a/etc/bashrc b/etc/bashrc
index 0cdf4031ba80722aabce9603d5562d83d1406b55..3f5d04e83bf773635b3dedcefc2cf66cd16c6589 100644
--- a/etc/bashrc
+++ b/etc/bashrc
@@ -170,6 +170,7 @@ _foamSource $WM_PROJECT_DIR/etc/config.sh/aliases
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/mpi`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/paraview`
+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/vtk`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/ensight`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.sh/gperftools`
 
diff --git a/etc/config.csh/unset b/etc/config.csh/unset
index 88bdd3454eff250015cf83b34161849ee94dded9..b423a53d98f3b88a6fbfa59f64454500fbb82726 100644
--- a/etc/config.csh/unset
+++ b/etc/config.csh/unset
@@ -124,6 +124,7 @@ unsetenv ParaView_INCLUDE_DIR
 unsetenv ParaView_MAJOR
 unsetenv ParaView_VERSION
 unsetenv PV_PLUGIN_PATH
+unsetenv VTK_DIR
 
 #------------------------------------------------------------------------------
 # unset other ThirdParty environment variables
@@ -136,6 +137,7 @@ unsetenv FFTW_ARCH_PATH
 unsetenv GPERFTOOLS_ARCH_PATH
 unsetenv GMP_ARCH_PATH
 unsetenv MPFR_ARCH_PATH
+unsetenv MESA_ARCH_PATH
 unsetenv METIS_ARCH_PATH
 unsetenv SCOTCH_ARCH_PATH
 
diff --git a/etc/config.csh/vtk b/etc/config.csh/vtk
new file mode 100644
index 0000000000000000000000000000000000000000..d98dfb6ddbbfa785e249b37482cea5be037518e1
--- /dev/null
+++ b/etc/config.csh/vtk
@@ -0,0 +1,67 @@
+#----------------------------------*-sh-*--------------------------------------
+# =========                 |
+# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+#  \\    /   O peration     |
+#   \\  /    A nd           | Copyright (C) 2016 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/>.
+#
+# File
+#     etc/config.csh/vtk
+#
+# Description
+#     Setup file for VTK (and MESA)
+#     Sourced from OpenFOAM-<VERSION>/etc/cshrc
+#
+#     The library path is not adjusted with the paths specified here do not exist
+#
+# Note
+#     When building OpenFOAM, any changes made here MUST be made in the
+#     equivalent config.sh version too, since that is the one which will
+#     be used during the build process.
+#
+#------------------------------------------------------------------------------
+
+set vtk_version=VTK-7.1.0
+set mesa_version=mesa-13.0.1
+
+setenv VTK_DIR $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$vtk_version
+setenv MESA_ARCH_PATH $WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mesa_version
+
+#------------------------------------------------------------------------------
+if ($?FOAM_VERBOSE && $?prompt) then
+    echo "Using vtk  ($vtk_version)  ->  $VTK_DIR"
+    echo "Using mesa ($mesa_version)  ->  $MESA_ARCH_PATH"
+endif
+
+# Set paths if binaries are present
+if ( -r $VTK_DIR ) then
+    _foamAddLib $VTK_DIR/lib$WM_COMPILER_LIB_ARCH
+else
+    unset VTK_DIR
+endif
+
+if ( -r $MESA_ARCH_PATH ) then
+    _foamAddLib $MESA_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
+else
+    unset MESA_ARCH_PATH
+endif
+
+unset vtk_version mesa_version
+
+#------------------------------------------------------------------------------
diff --git a/etc/config.sh/paraview b/etc/config.sh/paraview
index a8df5e7d9c951d955a76cccb4c16543a64b0a601..188d505b0f182ca1ea3560c5c5a42ebbfbb31cdb 100644
--- a/etc/config.sh/paraview
+++ b/etc/config.sh/paraview
@@ -119,7 +119,7 @@ then
 
     export ParaView_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$pvName
 
-    # Set paths if binaries or source are present
+    # Set paths if binaries are present
     if [ -r $ParaView_DIR ]
     then
         pvLibDir=$ParaView_DIR/lib/$pvMajor
diff --git a/etc/config.sh/unset b/etc/config.sh/unset
index e7b834baeb784621e7d34587249c79f1b2c91e7f..6bc4a517ab84376a0e0341c0124d7cc91dbb3246 100644
--- a/etc/config.sh/unset
+++ b/etc/config.sh/unset
@@ -120,6 +120,7 @@ unset ParaView_INCLUDE_DIR
 unset ParaView_MAJOR
 unset ParaView_VERSION
 unset PV_PLUGIN_PATH
+unset VTK_DIR
 
 #------------------------------------------------------------------------------
 # unset other ThirdParty environment variables
@@ -132,6 +133,7 @@ unset FFTW_ARCH_PATH
 unset GPERFTOOLS_ARCH_PATH
 unset GMP_ARCH_PATH
 unset MPFR_ARCH_PATH
+unset MESA_ARCH_PATH
 unset METIS_ARCH_PATH
 unset SCOTCH_ARCH_PATH
 
diff --git a/etc/config.sh/vtk b/etc/config.sh/vtk
new file mode 100644
index 0000000000000000000000000000000000000000..a0fa15f69311cefce498022a2835d349f6ab6d4c
--- /dev/null
+++ b/etc/config.sh/vtk
@@ -0,0 +1,72 @@
+#----------------------------------*-sh-*--------------------------------------
+# =========                 |
+# \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
+#  \\    /   O peration     |
+#   \\  /    A nd           | Copyright (C) 2016 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/>.
+#
+# File
+#     etc/config.sh/vtk
+#
+# Description
+#     Setup file for VTK (and MESA)
+#     Sourced from OpenFOAM-<VERSION>/etc/bashrc
+#
+#     The library path is not adjusted with the paths specified here do not exist
+#
+# Note
+#     When _foamAddLib is unset
+#         - the vtk_version, mesa_version variables are retained.
+#------------------------------------------------------------------------------
+
+vtk_version=VTK-7.1.0
+mesa_version=mesa-13.0.1
+
+export VTK_DIR=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$vtk_version
+export MESA_ARCH_PATH=$WM_THIRD_PARTY_DIR/platforms/$WM_ARCH$WM_COMPILER/$mesa_version
+
+#------------------------------------------------------------------------------
+if [ "$FOAM_VERBOSE" -a "$PS1" ]
+then
+    echo "Using vtk  ($vtk_version)  ->  $VTK_DIR" 1>&2
+    echo "Using mesa ($mesa_version)  ->  $MESA_ARCH_PATH" 1>&2
+fi
+
+if type _foamAddLib > /dev/null 2>&1    # normal sourcing
+then
+
+    # Set paths if binaries are present
+    if [ -r $VTK_DIR ]
+    then
+        _foamAddLib $VTK_DIR/lib$WM_COMPILER_LIB_ARCH
+    else
+        unset VTK_DIR
+    fi
+
+    if [ -r $MESA_ARCH_PATH ]
+    then
+        _foamAddLib $MESA_ARCH_PATH/lib$WM_COMPILER_LIB_ARCH
+    else
+        unset MESA_ARCH_PATH
+    fi
+
+    unset vtk_version mesa_version
+fi
+
+#------------------------------------------------------------------------------
diff --git a/etc/cshrc b/etc/cshrc
index 54c74ad3f96899fd46d511391405c2d23eb66045..d5f315ee1628761c4b0c2aed36e6c0b70c5c0ccf 100644
--- a/etc/cshrc
+++ b/etc/cshrc
@@ -215,6 +215,7 @@ _foamSource $WM_PROJECT_DIR/etc/config.csh/aliases
 # ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/mpi`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/paraview`
+_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/vtk`
 _foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/ensight`
 
 ##_foamSource `$WM_PROJECT_DIR/bin/foamEtcFile config.csh/ADIOS`
diff --git a/src/OpenFOAM/db/IOobject/IOobjectWriteHeader.C b/src/OpenFOAM/db/IOobject/IOobjectWriteHeader.C
index bb19caf668807f03e89c3e3d84d392df6205425b..82de72d3d202bf678eb6acad842f56f8ce2a4dae 100644
--- a/src/OpenFOAM/db/IOobject/IOobjectWriteHeader.C
+++ b/src/OpenFOAM/db/IOobject/IOobjectWriteHeader.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  |
+     \\/     M anipulation  | Copyright (C) 2016 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -29,11 +29,30 @@ Description
 
 #include "IOobject.H"
 #include "objectRegistry.H"
+#include "endian.H"
+#include "label.H"
+#include "scalar.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 bool Foam::IOobject::writeHeader(Ostream& os, const word& type) const
 {
+    static std::string archHint;
+
+    // Hint about machine endian, OpenFOAM label and scalar sizes
+    if (archHint.empty())
+    {
+        #ifdef WM_LITTLE_ENDIAN
+        archHint.append("LSB;");
+        #elif defined (WM_BIG_ENDIAN)
+        archHint.append("MSB;");
+        #endif
+        archHint.append("label=");
+        archHint.append(std::to_string(8*sizeof(label)));
+        archHint.append(";scalar=");
+        archHint.append(std::to_string(8*sizeof(scalar)));
+    }
+
     if (!os.good())
     {
         InfoInFunction
@@ -47,6 +66,7 @@ bool Foam::IOobject::writeHeader(Ostream& os, const word& type) const
         << "FoamFile\n{\n"
         << "    version     " << os.version() << ";\n"
         << "    format      " << os.format() << ";\n"
+        << "    arch        " << archHint << ";\n"
         << "    class       " << type << ";\n";
 
     if (note().size())
diff --git a/src/combustionModels/eddyDissipationDiffusionModel/eddyDissipationDiffusionModel.H b/src/combustionModels/eddyDissipationDiffusionModel/eddyDissipationDiffusionModel.H
index d3b1da1344d434e3d043d0d30905b29a4e1b58ec..2057adcdf401a6aa7053de05c2b8db94706c5e20 100644
--- a/src/combustionModels/eddyDissipationDiffusionModel/eddyDissipationDiffusionModel.H
+++ b/src/combustionModels/eddyDissipationDiffusionModel/eddyDissipationDiffusionModel.H
@@ -23,11 +23,14 @@ License
 Class
     Foam::combustionModels::eddyDissipationDiffusionModel
 
+Group
+    grpCombustionModels
+
 Description
     Eddy dissipation model based on the principle of mixed is burnt.
 
-    The time scale is determined by the minimum between the turbulent
-    and diffusive time scales.
+    The time scale is determined by the minimum of the turbulence
+    and diffusion time scales.
 
 
 SourceFiles
diff --git a/src/functionObjects/field/DESModelRegions/DESModelRegions.H b/src/functionObjects/field/DESModelRegions/DESModelRegions.H
index c715d3710f429c86212c5fd14baa54bc7389b4ea..c10f9f0e51502523cc303d781a2547eedfe24b25 100644
--- a/src/functionObjects/field/DESModelRegions/DESModelRegions.H
+++ b/src/functionObjects/field/DESModelRegions/DESModelRegions.H
@@ -42,7 +42,7 @@ Usage
     DESModelRegions1
     {
         type        DESModelRegions;
-        libs        ("libutilityFunctionObjects.so");
+        libs        ("libfieldFunctionObjects.so");
         ...
     }
     \endverbatim
diff --git a/src/functionObjects/field/PecletNo/PecletNo.H b/src/functionObjects/field/PecletNo/PecletNo.H
index 7e474ad07a0b20c256e18126baf330b2f400aa60..bb6bf485970f5413503d2c6715b5f44f5c0f5740 100644
--- a/src/functionObjects/field/PecletNo/PecletNo.H
+++ b/src/functionObjects/field/PecletNo/PecletNo.H
@@ -36,7 +36,7 @@ Usage
     PecletNo1
     {
         type        PecletNo;
-        libs        ("libutilityFunctionObjects.so");
+        libs        ("libfieldFunctionObjects.so");
         ...
     }
     \endverbatim
diff --git a/src/functionObjects/field/Q/Q.H b/src/functionObjects/field/Q/Q.H
index ca753f641d5e73d3f579a8e216726bd54d0e6880..ca2cc1b7445447483ff3945b7c6d6d754d52f384 100644
--- a/src/functionObjects/field/Q/Q.H
+++ b/src/functionObjects/field/Q/Q.H
@@ -46,7 +46,7 @@ Usage
     Q1
     {
         type        Q;
-        libs        ("libutilityFunctionObjects.so");
+        libs        ("libfieldFunctionObjects.so");
         ...
     }
     \endverbatim
diff --git a/src/functionObjects/field/components/componentsTemplates.C b/src/functionObjects/field/components/componentsTemplates.C
index 7d56c3c41b92bb108c8c0e340b0562ff4d697cbf..a899a293a6781ac63ca70f987168ee7f79ec5eca 100644
--- a/src/functionObjects/field/components/componentsTemplates.C
+++ b/src/functionObjects/field/components/componentsTemplates.C
@@ -57,11 +57,11 @@ bool Foam::functionObjects::components::calcComponents()
     typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
 
-    if (foundObject<VolFieldType>(fieldName_))
+    if (foundObject<VolFieldType>(fieldName_, false))
     {
         return calcFieldComponents<VolFieldType>();
     }
-    else if (foundObject<SurfaceFieldType>(fieldName_))
+    else if (foundObject<SurfaceFieldType>(fieldName_, false))
     {
         return calcFieldComponents<SurfaceFieldType>();
     }
diff --git a/src/functionObjects/field/div/divTemplates.C b/src/functionObjects/field/div/divTemplates.C
index 08d78e198fbbe801b00723955317e586240f606c..c13ec96c9fe9f3baa045621353766df788ad609d 100644
--- a/src/functionObjects/field/div/divTemplates.C
+++ b/src/functionObjects/field/div/divTemplates.C
@@ -30,7 +30,7 @@ License
 template<class FieldType>
 bool Foam::functionObjects::div::calcDiv()
 {
-    if (foundObject<FieldType>(fieldName_))
+    if (foundObject<FieldType>(fieldName_, false))
     {
         return store
         (
diff --git a/src/functionObjects/field/fieldExpression/fieldExpression.H b/src/functionObjects/field/fieldExpression/fieldExpression.H
index 0ae69f8aecceeae105e7dd749c13150b3ecfc71d..8f1e263efc9de494cfa916b9fa9424039b8660a4 100644
--- a/src/functionObjects/field/fieldExpression/fieldExpression.H
+++ b/src/functionObjects/field/fieldExpression/fieldExpression.H
@@ -77,7 +77,7 @@ protected:
         void setResultName(const word& typeName, const word& defaultArg);
 
         template<class Type>
-        bool foundObject(const word& name);
+        bool foundObject(const word& name, const bool verbose = true) const;
 
 
 private:
diff --git a/src/functionObjects/field/fieldExpression/fieldExpressionTemplates.C b/src/functionObjects/field/fieldExpression/fieldExpressionTemplates.C
index 442834b6e5d68f9d8196035dbf9729db58e10280..f2549fbf66d854fa140218ba8a16e565e26f7ff4 100644
--- a/src/functionObjects/field/fieldExpression/fieldExpressionTemplates.C
+++ b/src/functionObjects/field/fieldExpression/fieldExpressionTemplates.C
@@ -30,8 +30,9 @@ License
 template<class Type>
 bool Foam::functionObjects::fieldExpression::foundObject
 (
-    const word& name
-)
+    const word& name,
+    const bool verbose
+) const
 {
     if (fvMeshFunctionObject::foundObject<Type>(name))
     {
@@ -39,10 +40,13 @@ bool Foam::functionObjects::fieldExpression::foundObject
     }
     else
     {
-        Warning
-            << "    functionObjects::" << type() << " " << this->name()
-            << " cannot find required object " << name << " of type "
-            << Type::typeName << endl;
+        if (verbose)
+        {
+            Warning
+                << "    functionObjects::" << type() << " " << this->name()
+                << " cannot find required object " << name << " of type "
+                << Type::typeName << endl;
+        }
 
         return false;
     }
diff --git a/src/functionObjects/field/grad/gradTemplates.C b/src/functionObjects/field/grad/gradTemplates.C
index d1ad033526adcb64e4396f88eb97fc88e66d597d..e7b6b812481d9045545f283c69963e6727cdf7ba 100644
--- a/src/functionObjects/field/grad/gradTemplates.C
+++ b/src/functionObjects/field/grad/gradTemplates.C
@@ -33,7 +33,7 @@ bool Foam::functionObjects::grad::calcGrad()
     typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
 
-    if (foundObject<VolFieldType>(fieldName_))
+    if (foundObject<VolFieldType>(fieldName_, false))
     {
         return store
         (
@@ -42,7 +42,7 @@ bool Foam::functionObjects::grad::calcGrad()
             mesh_.changing() && mesh_.cache(resultName_)
         );
     }
-    else if (foundObject<SurfaceFieldType>(fieldName_))
+    else if (foundObject<SurfaceFieldType>(fieldName_, false))
     {
         return store
         (
diff --git a/src/functionObjects/field/mag/magTemplates.C b/src/functionObjects/field/mag/magTemplates.C
index dead35a360e6d65e1726e77b020f2853420872e4..a02d9a2ac67c0555815ddd4f3e124633a93acf97 100644
--- a/src/functionObjects/field/mag/magTemplates.C
+++ b/src/functionObjects/field/mag/magTemplates.C
@@ -36,7 +36,7 @@ bool Foam::functionObjects::mag::calcMag()
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
     typedef DimensionedField<Type, surfGeoMesh> SurfFieldType;
 
-    if (foundObject<VolFieldType>(fieldName_))
+    if (foundObject<VolFieldType>(fieldName_, false))
     {
         return store
         (
@@ -44,7 +44,7 @@ bool Foam::functionObjects::mag::calcMag()
             Foam::mag(lookupObject<VolFieldType>(fieldName_))
         );
     }
-    else if (foundObject<SurfaceFieldType>(fieldName_))
+    else if (foundObject<SurfaceFieldType>(fieldName_, false))
     {
         return store
         (
@@ -52,7 +52,7 @@ bool Foam::functionObjects::mag::calcMag()
             Foam::mag(lookupObject<SurfaceFieldType>(fieldName_))
         );
     }
-    else if (foundObject<SurfFieldType>(fieldName_))
+    else if (foundObject<SurfFieldType>(fieldName_, false))
     {
         return store
         (
diff --git a/src/functionObjects/field/magSqr/magSqrTemplates.C b/src/functionObjects/field/magSqr/magSqrTemplates.C
index a3fee019bb30614e410592ddd31a52919ec520ed..57a808ad9196a2ca0dbfbf477ed19d2f1fd8472d 100644
--- a/src/functionObjects/field/magSqr/magSqrTemplates.C
+++ b/src/functionObjects/field/magSqr/magSqrTemplates.C
@@ -36,7 +36,7 @@ bool Foam::functionObjects::magSqr::calcMagSqr()
     typedef GeometricField<Type, fvsPatchField, surfaceMesh> SurfaceFieldType;
     typedef DimensionedField<Type, surfGeoMesh> SurfFieldType;
 
-    if (foundObject<VolFieldType>(fieldName_))
+    if (foundObject<VolFieldType>(fieldName_, false))
     {
         return store
         (
@@ -44,7 +44,7 @@ bool Foam::functionObjects::magSqr::calcMagSqr()
             Foam::magSqr(lookupObject<VolFieldType>(fieldName_))
         );
     }
-    else if (foundObject<SurfaceFieldType>(fieldName_))
+    else if (foundObject<SurfaceFieldType>(fieldName_, false))
     {
         return store
         (
@@ -52,7 +52,7 @@ bool Foam::functionObjects::magSqr::calcMagSqr()
             Foam::magSqr(lookupObject<SurfaceFieldType>(fieldName_))
         );
     }
-    else if (foundObject<SurfFieldType>(fieldName_))
+    else if (foundObject<SurfFieldType>(fieldName_, false))
     {
         return store
         (
diff --git a/src/functionObjects/field/particleDistribution/particleDistribution.C b/src/functionObjects/field/particleDistribution/particleDistribution.C
index 441afd29e351d8ee63c831d780515bc3bf896834..71919b0933bb20a092f08de3ce27f533e476f12c 100644
--- a/src/functionObjects/field/particleDistribution/particleDistribution.C
+++ b/src/functionObjects/field/particleDistribution/particleDistribution.C
@@ -46,6 +46,7 @@ namespace functionObjects
 }
 }
 
+
 // * * * * * * * * * * * * * * * * Constructors  * * * * * * * * * * * * * * //
 
 Foam::functionObjects::particleDistribution::particleDistribution
@@ -56,12 +57,12 @@ Foam::functionObjects::particleDistribution::particleDistribution
 )
 :
     fvMeshFunctionObject(name, runTime, dict),
-    writeFile(runTime, name, typeName, dict),
+    writeFile(runTime, name),
     cloudName_("unknown-cloudName"),
-    fieldNames_(),
-    tagFieldName_("unknown-tagFieldName"),
-    distributionBinWidth_(0),
-    rndGen_(1234, -1)
+    nameVsBinWidth_(),
+    tagFieldName_("none"),
+    rndGen_(1234, -1),
+    writerPtr_(nullptr)
 {
     read(dict);
 }
@@ -80,11 +81,12 @@ bool Foam::functionObjects::particleDistribution::read(const dictionary& dict)
     if (fvMeshFunctionObject::read(dict) && writeFile::read(dict))
     {
         dict.lookup("cloud") >> cloudName_;
-        dict.lookup("fields") >> fieldNames_;
-        dict.lookup("tagField") >> tagFieldName_;
-        dict.lookup("distributionBinWidth") >> distributionBinWidth_;
+        dict.lookup("nameVsBinWidth") >> nameVsBinWidth_;
+        dict.readIfPresent("tagField", tagFieldName_);
+        word format(dict.lookup("setFormat"));
+        writerPtr_ = writer<scalar>::New(format);
 
-        Info<< type() << " " << name() << " output:"
+        Info<< type() << " " << name() << " output:" << nl
             << "    Processing cloud : " << cloudName_ << nl
             << endl;
 
@@ -107,9 +109,12 @@ bool Foam::functionObjects::particleDistribution::write()
 
     if (!mesh_.foundObject<cloud>(cloudName_))
     {
+        wordList cloudNames(mesh_.names<cloud>());
+
         WarningInFunction
             << "Unable to find cloud " << cloudName_
-            << " in the mesh database" << endl;
+            << " in the mesh database.  Available clouds include:"
+            << cloudNames << endl;
 
         return false;
     }
@@ -152,26 +157,26 @@ bool Foam::functionObjects::particleDistribution::write()
         }
     }
 
+
     bool ok = false;
-    forAll(fieldNames_, i)
+    forAll(nameVsBinWidth_, i)
     {
-        const word fName = fieldNames_[i];
-        ok = ok || processField<scalar>(cloudObr, fName, tagAddr);
-        ok = ok || processField<vector>(cloudObr, fName, tagAddr);
-        ok = ok || processField<tensor>(cloudObr, fName, tagAddr);
-        ok = ok || processField<sphericalTensor>(cloudObr, fName, tagAddr);
-        ok = ok || processField<symmTensor>(cloudObr, fName, tagAddr);
-        ok = ok || processField<tensor>(cloudObr, fName, tagAddr);
+        ok = false;
+        ok = ok || processField<scalar>(cloudObr, i, tagAddr);
+        ok = ok || processField<vector>(cloudObr, i, tagAddr);
+        ok = ok || processField<tensor>(cloudObr, i, tagAddr);
+        ok = ok || processField<sphericalTensor>(cloudObr, i, tagAddr);
+        ok = ok || processField<symmTensor>(cloudObr, i, tagAddr);
+        ok = ok || processField<tensor>(cloudObr, i, tagAddr);
 
         if (log && !ok)
         {
             WarningInFunction
-                << "Unable to find field " << fName << " in the "
-                << cloudName_ << " cloud database" << endl;
+                << "Unable to find field " << nameVsBinWidth_[i].first()
+                << " in the " << cloudName_ << " cloud database" << endl;
         }
     }
 
-
     return true;
 }
 
@@ -180,26 +185,53 @@ void Foam::functionObjects::particleDistribution::generateDistribution
 (
     const word& fieldName,
     const scalarField& field,
+    const scalar binWidth,
     const label tag
 )
 {
-    Ostream& os = file();
+    if (field.empty())
+    {
+        return;
+    }
 
+    word fName(fieldName);
     if (tag != -1)
     {
-        os  << tag << token::TAB;
+        fName = fName + '_' + Foam::name(tag);
     }
 
     distributionModels::general distribution
     (
         field,
-        distributionBinWidth_,
+        binWidth,
         rndGen_
     );
 
-    distribution.writeData(os);
+    const Field<scalar> distX(distribution.x());
+    const Field<scalar> distY(distribution.y());
+
+    pointField xBin(distX.size(), Zero);
+    xBin.replace(0, distX);
+    const coordSet coords
+    (
+        fName,
+        "x",
+        xBin,
+        distX
+    );
+
+    const wordList fieldNames(1, fName);
+
+    fileName outputPath(baseTimeDir());
+    mkDir(outputPath);
+    OFstream graphFile(outputPath/writerPtr_->getFileName(coords, fieldNames));
+
+    Log << "    Writing distribution of " << fieldName
+        << " to " << graphFile.name() << endl;
 
-    os  << endl;
+    List<const scalarField*> yPtrs(1);
+    yPtrs[0] = &distY;
+    writerPtr_->write(coords, fieldNames, yPtrs, graphFile);
 }
 
 
diff --git a/src/functionObjects/field/particleDistribution/particleDistribution.H b/src/functionObjects/field/particleDistribution/particleDistribution.H
index ea4f205a6514504cbf3530b48380e94269254ac7..fec579f1938dfe5c6f8af601f72153c3d910accc 100644
--- a/src/functionObjects/field/particleDistribution/particleDistribution.H
+++ b/src/functionObjects/field/particleDistribution/particleDistribution.H
@@ -28,7 +28,7 @@ Group
     grpFieldFunctionObjects
 
 Description
-    Generates a particle distrbution for lagrangian data.
+    Generates a particle distribution for lagrangian data at a given time.
 
 Usage
     \verbatim
@@ -38,8 +38,12 @@ Usage
         libs        ("libfieldFunctionObjects.so");
         ...
         cloud       "myCloud";
-        field       "d"
-        distributionBinWidth 0.1;
+        nameVsBinWidth
+        (
+            (d 0.1)
+            (U 10)
+        );
+        setFormat   raw;
     }
     \endverbatim
 
@@ -48,8 +52,9 @@ Usage
         Property    | Description              |  Required  | Default value
         type        | Type name: particleDistribution | yes |
         cloud       | Name of cloud to process | Yes        |
-        field       | Name of cloud field to process | Yes  |
-        distributionBinWidth | Width of distribution bins | yes |
+        nameVsBinWidth | List of cloud field vs bin width | Yes |
+        tagField    | Name of cloud field to use to group particles | no | none
+        setFormat   | Output format            | yes         |
     \endtable
 
 See also
@@ -69,6 +74,8 @@ SourceFiles
 #include "writeFile.H"
 #include "scalarField.H"
 #include "cachedRandom.H"
+#include "Tuple2.H"
+#include "writer.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -93,26 +100,27 @@ protected:
         //- Cloud name
         word cloudName_;
 
-        //- Field name
-        wordList fieldNames_;
+        //- List of field name vs. bin width
+        List<Tuple2<word, scalar>> nameVsBinWidth_;
 
         //- Tag field name - used to filter the particles into groups
         word tagFieldName_;
 
-        //- Distribution bin width
-        scalar distributionBinWidth_;
-
         //- Random number generator - used by distribution models
         cachedRandom rndGen_;
 
+        //- Writer
+        autoPtr<writer<scalar>> writerPtr_;
 
-    // Private Member Functions
+
+    // Protected Member Functions
 
         //- Generate the distribution
         void generateDistribution
         (
             const word& fieldName,
             const scalarField& field,
+            const scalar binWidth,
             const label tag = -1
         );
 
@@ -121,7 +129,7 @@ protected:
         bool processField
         (
             const objectRegistry& obr,
-            const word& fieldName,
+            const label fieldi,
             const List<DynamicList<label>>& addr
         );
 
diff --git a/src/functionObjects/field/particleDistribution/particleDistributionTemplates.C b/src/functionObjects/field/particleDistribution/particleDistributionTemplates.C
index 46cb2186933de7ed9f2b64651d404fa94519de4f..127ff11acc4a80c009246b9cf6dae6d695fa4d79 100644
--- a/src/functionObjects/field/particleDistribution/particleDistributionTemplates.C
+++ b/src/functionObjects/field/particleDistribution/particleDistributionTemplates.C
@@ -29,10 +29,13 @@ template<class Type>
 bool Foam::functionObjects::particleDistribution::processField
 (
     const objectRegistry& obr,
-    const word& fieldName,
+    const label fieldi,
     const List<DynamicList<label>>& addr
 )
 {
+    const word& fieldName = nameVsBinWidth_[fieldi].first();
+    const scalar binWidth = nameVsBinWidth_[fieldi].second();
+
     if (obr.foundObject<IOField<Type>>(fieldName))
     {
         const IOField<Type>& field =
@@ -45,7 +48,13 @@ bool Foam::functionObjects::particleDistribution::processField
                 const Field<Type> subField(field, addr[i]);
                 for (direction d = 0; d < pTraits<Type>::nComponents; ++d)
                 {
-                    generateDistribution(fieldName, subField.component(d), i);
+                    generateDistribution
+                    (
+                        fieldName,
+                        subField.component(d),
+                        binWidth,
+                        i
+                    );
                 }
             }
         }
@@ -53,7 +62,8 @@ bool Foam::functionObjects::particleDistribution::processField
         {
             for (direction d = 0; d < pTraits<Type>::nComponents; ++d)
             {
-                generateDistribution(fieldName, field.component(d));
+                const word fName = fieldName + pTraits<Type>::componentNames[d];
+                generateDistribution(fName, field.component(d), binWidth);
             }
         }
 
diff --git a/src/functionObjects/field/randomise/randomiseTemplates.C b/src/functionObjects/field/randomise/randomiseTemplates.C
index cf917c45f79c3fb86cd7f3dab46c32fa58b18c3b..a466ef3551033bdf244141de3e543421283eed63 100644
--- a/src/functionObjects/field/randomise/randomiseTemplates.C
+++ b/src/functionObjects/field/randomise/randomiseTemplates.C
@@ -33,11 +33,11 @@ bool Foam::functionObjects::randomise::calcRandomised()
 {
     typedef GeometricField<Type, fvPatchField, volMesh> VolFieldType;
 
-    if (foundObject<VolFieldType>(fieldName_))
+    if (foundObject<VolFieldType>(fieldName_, false))
     {
         const VolFieldType& field = lookupObject<VolFieldType>(fieldName_);
 
-        resultName_ = fieldName_ + "Random";
+        resultName_ = fieldName_ & "Random";
 
         tmp<VolFieldType> rfieldt(new VolFieldType(field));
         VolFieldType& rfield = rfieldt.ref();
diff --git a/src/functionObjects/field/streamLine/streamLineBase.C b/src/functionObjects/field/streamLine/streamLineBase.C
index 9b6daeee12c484a59d2d46a8b9b86e9115748915..3356524a06ef6b94167bbdb7da46e286dba5cea7 100644
--- a/src/functionObjects/field/streamLine/streamLineBase.C
+++ b/src/functionObjects/field/streamLine/streamLineBase.C
@@ -514,6 +514,8 @@ bool Foam::functionObjects::streamLineBase::read(const dictionary& dict)
     dict.lookup("fields") >> fields_;
     UName_ = dict.lookupOrDefault<word>("U", "U");
 
+    Info<< "    Employing velocity field " << UName_ << endl;
+
     if (findIndex(fields_, UName_) == -1)
     {
         FatalIOErrorInFunction(dict)
diff --git a/src/functionObjects/field/vorticity/vorticity.H b/src/functionObjects/field/vorticity/vorticity.H
index dca18276f5e6ce9b8cb0c0d20a10abfb5d2ef62c..b4c308b878239caa7e6a098d0f240c502f0c5e0c 100644
--- a/src/functionObjects/field/vorticity/vorticity.H
+++ b/src/functionObjects/field/vorticity/vorticity.H
@@ -38,7 +38,7 @@ Usage
     vorticity1
     {
         type        vorticity;
-        libs        ("libutilityFunctionObjects.so");
+        libs        ("libfieldFunctionObjects.so");
         ...
     }
     \endverbatim
diff --git a/src/functionObjects/field/yPlus/yPlus.H b/src/functionObjects/field/yPlus/yPlus.H
index 7dcd64102831abfcd87e6de772f77ea3b49d04e9..76881db50e4f02fac311504250a1de0151125f43 100644
--- a/src/functionObjects/field/yPlus/yPlus.H
+++ b/src/functionObjects/field/yPlus/yPlus.H
@@ -39,7 +39,7 @@ Usage
     yPlus1
     {
         type        yPlus;
-        libs        ("libutilityFunctionObjects.so");
+        libs        ("libfieldFunctionObjects.so");
         ...
     }
     \endverbatim
diff --git a/src/functionObjects/lagrangian/cloudInfo/postProcessingDict b/src/functionObjects/lagrangian/cloudInfo/postProcessingDict
deleted file mode 100644
index 6ee7f9b6a827d308d00cf38a672bdaddb72d5229..0000000000000000000000000000000000000000
--- a/src/functionObjects/lagrangian/cloudInfo/postProcessingDict
+++ /dev/null
@@ -1,31 +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;
-    object      postProcessingDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-functions
-{
-    cloudInfo1
-    {
-        type            cloudInfo;
-        libs            ("libcloudFunctionObjects.so");
-        enabled         true;
-        writeControl    timeStep;
-        writeInterval   1;
-
-        clouds          (myCloud1);
-    }
-}
-
-// ************************************************************************* //
diff --git a/src/functionObjects/solvers/scalarTransport/scalarTransport.H b/src/functionObjects/solvers/scalarTransport/scalarTransport.H
index b06d6e88284910b9756359c2a6999bd6f92956ff..66b8f14790d03695a49ecc9f1c9c515ccfbe0e71 100644
--- a/src/functionObjects/solvers/scalarTransport/scalarTransport.H
+++ b/src/functionObjects/solvers/scalarTransport/scalarTransport.H
@@ -49,7 +49,7 @@ Usage
         scalar1
         {
             type            scalarTransport;
-            libs            ("libutilityFunctionObjects.so");
+            libs            ("libsolverFunctionObjects.so");
 
             resetOnStartUp  no;
             region          cabin;
@@ -64,7 +64,7 @@ Usage
     }
     \endverbatim
 
-    Example of function object specification to solve a residency time
+    Example of function object specification to solve a residence time
     in a two phase flow:
     equation:
     \verbatim
@@ -117,13 +117,13 @@ Usage
         rho          | Name of density field   | no          | rho
         UPhi         | Name of U to generate phi  | no          | none
         phase        | Name of the phase name  | no          | none
-        nut          | Name of the turbulence viscocity | no | none
+        nut          | Name of the turbulence viscosity | no | none
         D            | Diffusion coefficient   | no          | auto generated
         nCorr        | Number of correctors    | no          | 0
         resetOnStartUp | Reset scalar to zero on start-up | no | no
         schemesField | Name of field to specify schemes | no | fieldName
         fvOptions    | List of scalar sources  | no          |
-        bounded01    | Bounds scalar betwee 0-1 for multiphase | no |true
+        bounded01    | Bounds scalar between 0-1 for multiphase | no |true
         phasePhiCompressed |Compressed flux for VOF | no | alphaPhiUn
     \endtable
 
diff --git a/src/functionObjects/utilities/systemCall/Make/files b/src/functionObjects/utilities/systemCall/Make/files
deleted file mode 100644
index 20bafa8dfa02102e3336118b2eeb385fff6114a5..0000000000000000000000000000000000000000
--- a/src/functionObjects/utilities/systemCall/Make/files
+++ /dev/null
@@ -1,4 +0,0 @@
-systemCall.C
-systemCallFunctionObject.C
-
-LIB = $(FOAM_LIBBIN)/libsystemCall
diff --git a/src/functionObjects/utilities/systemCall/Make/options b/src/functionObjects/utilities/systemCall/Make/options
deleted file mode 100644
index e69de29bb2d1d6434b8b29ae775ad8c2e48c5391..0000000000000000000000000000000000000000
diff --git a/src/lagrangian/distributionModels/general/general.C b/src/lagrangian/distributionModels/general/general.C
index 0cf368a6ab526e3fce455c3ec2a300ee5c01aeac..87339642bf309e78dccdf806e06b4f820acedd26 100644
--- a/src/lagrangian/distributionModels/general/general.C
+++ b/src/lagrangian/distributionModels/general/general.C
@@ -42,6 +42,8 @@ namespace distributionModels
 
 void Foam::distributionModels::general::initialise()
 {
+    static scalar eps = ROOTVSMALL;
+
     const label nEntries = xy_.size();
 
     integral_.setSize(nEntries);
@@ -50,7 +52,7 @@ void Foam::distributionModels::general::initialise()
     integral_[0] = 0.0;
     for (label i = 1; i < nEntries; i++)
     {
-        scalar k = (xy_[i][1] - xy_[i-1][1])/(xy_[i][0] - xy_[i-1][0]);
+        scalar k = (xy_[i][1] - xy_[i-1][1])/(xy_[i][0] - xy_[i-1][0] + eps);
         scalar d = xy_[i-1][1] - k*xy_[i-1][0];
         scalar y1 = xy_[i][0]*(0.5*k*xy_[i][0] + d);
         scalar y0 = xy_[i-1][0]*(0.5*k*xy_[i-1][0] + d);
@@ -61,12 +63,12 @@ void Foam::distributionModels::general::initialise()
 
     scalar sumArea = integral_.last();
 
-    meanValue_ = sumArea/(maxValue() - minValue());
+    meanValue_ = sumArea/(maxValue() - minValue() + eps);
 
     for (label i=0; i < nEntries; i++)
     {
-        xy_[i][1] /= sumArea;
-        integral_[i] /= sumArea;
+        xy_[i][1] /= sumArea + eps;
+        integral_[i] /= sumArea + eps;
     }
 }
 
@@ -243,9 +245,10 @@ Foam::dictionary Foam::distributionModels::general::writeDict
     const word& dictName
 ) const
 {
-//    dictionary dict = distributionModel::writeDict(dictName);
+    // dictionary dict = distributionModel::writeDict(dictName);
     dictionary dict(dictName);
-    dict.add("distribution", xy_);
+    dict.add("x", x());
+    dict.add("y", y());
 
     return dict;
 }
@@ -253,12 +256,49 @@ Foam::dictionary Foam::distributionModels::general::writeDict
 
 void Foam::distributionModels::general::readDict(const dictionary& dict)
 {
-//    distributionModel::readDict(dict);
-    dict.lookup("distribution") >> xy_;
+    // distributionModel::readDict(dict);
+    List<scalar> x(dict.lookup("x"));
+    List<scalar> y(dict.lookup("y"));
+
+    xy_.setSize(x.size());
+    forAll(xy_, i)
+    {
+        xy_[i][0] = x[i];
+        xy_[i][1] = y[i];
+    }
+
     initialise();
 }
 
 
+Foam::tmp<Foam::Field<Foam::scalar>>
+Foam::distributionModels::general::x() const
+{
+    tmp<Field<scalar>> tx(new Field<scalar>(xy_.size()));
+    scalarField& xi = tx.ref();
+    forAll(xy_, i)
+    {
+        xi[i] = xy_[i][0];
+    }
+
+    return tx;
+}
+
+
+Foam::tmp<Foam::Field<Foam::scalar>>
+Foam::distributionModels::general::y() const
+{
+    tmp<Field<scalar>> ty(new Field<scalar>(xy_.size()));
+    scalarField& yi = ty.ref();
+    forAll(xy_, i)
+    {
+        yi[i] = xy_[i][1];
+    }
+
+    return ty;
+}
+
+
 Foam::Ostream& Foam::operator<<
 (
     Ostream& os,
diff --git a/src/lagrangian/distributionModels/general/general.H b/src/lagrangian/distributionModels/general/general.H
index 63d5d74d8911ddf614e35ded6781b23727a73d6e..db8a18194a411783329590075d82aea4eac8a105 100644
--- a/src/lagrangian/distributionModels/general/general.H
+++ b/src/lagrangian/distributionModels/general/general.H
@@ -38,6 +38,7 @@ SourceFiles
 #include "distributionModel.H"
 #include "Vector.H"
 #include "VectorSpace.H"
+#include "Field.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
@@ -121,6 +122,12 @@ public:
 
     // Member Functions
 
+        //- Bin boundaries
+        virtual tmp<Field<scalar>> x() const;
+
+        //- Probabilities
+        virtual tmp<Field<scalar>> y() const;
+
         //- Sample the distributionModel
         virtual scalar sample() const;
 
diff --git a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
index 1ff7e53ee74de1eca1632815ee6463abef8ee5d3..faed14eea6d9cb10253b93b666237274a2446954 100644
--- a/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
+++ b/src/randomProcesses/noise/noiseModels/surfaceNoise/surfaceNoise.C
@@ -589,7 +589,7 @@ void surfaceNoise::calculate()
 
             forAll(surfPrmsf, i)
             {
-                label freqI = i*fftWriteInterval_;
+                label freqI = (i + 1)*fftWriteInterval_ - 1;
                 fOut[i] = freq1[freqI];
                 const word gName = "fft";
                 PrmsfAve[i] = writeSurfaceData
diff --git a/src/waveModels/waveModel/waveModel.C b/src/waveModels/waveModel/waveModel.C
index 01f5749b9b5ff7868ca5e2a9d2085f607a19886b..bb859aacda8463b83b65db48da9e2f3bca56e50e 100644
--- a/src/waveModels/waveModel/waveModel.C
+++ b/src/waveModels/waveModel/waveModel.C
@@ -147,8 +147,8 @@ Foam::tmp<Foam::scalarField> Foam::waveModel::waterLevel() const
         reduce(paddleMagSf[paddlei], sumOp<scalar>());
         reduce(paddleWettedMagSf[paddlei], sumOp<scalar>());
         level[paddlei] +=
-            paddleWettedMagSf[paddlei]
-           /(paddleMagSf[paddlei]*zSpan_ + ROOTVSMALL);
+            paddleWettedMagSf[paddlei]*zSpan_
+           /(paddleMagSf[paddlei] + ROOTVSMALL);
     }
 
     return tlevel;
diff --git a/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict b/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict
index 6bd47f7e0338cd3e6a53465f0d1fd49209c7b043..d9b620638ab37f052228a816de511bcbad48248b 100644
--- a/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict
+++ b/tutorials/lagrangian/sprayFoam/aachenBomb/system/controlDict
@@ -49,5 +49,22 @@ maxCo           0.1;
 
 runTimeModifiable yes;
 
+functions
+{
+    distribtion1
+    {
+        type            particleDistribution;
+        libs            ("libfieldFunctionObjects.so");
+        writeControl    writeTime;
+        cloud           sprayCloud;
+        nameVsBinWidth
+        (
+            (d 1e-5)
+            (U 10)
+        );
+        setFormat       raw;
+    }
+}
+
 
 // ************************************************************************* //
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution
index a6d6b311547cc1a5887d044ac34d0f8bfb366a1a..859308b6fabab21be628e4f49871e8e0104adbe6 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleCnoidal/system/fvSolution
@@ -22,16 +22,7 @@ solvers
     {
         nAlphaCorr      1;
         nAlphaSubCycles 3;
-        alphaOuterCorrectors yes;
         cAlpha          1;
-
-        MULESCorr       no;
-        nLimiterIter    3;
-
-        solver          smoothSolver;
-        smoother        symGaussSeidel;
-        tolerance       1e-8;
-        relTol          0;
     }
 
     pcorr
@@ -53,13 +44,7 @@ solvers
     p_rghFinal
     {
         solver          GAMG;
-        smoother        GaussSeidel;
-        nPreSweeps      0;
-        nPostSweeps     2;
-        cacheAgglomeration on;
-        agglomerator    faceAreaPair;
-        nCellsInCoarsestLevel 10;
-        mergeLevels     1;
+        smoother        DIC;
         tolerance       1e-7;
         relTol          0;
     }
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution
index a6d6b311547cc1a5887d044ac34d0f8bfb366a1a..859308b6fabab21be628e4f49871e8e0104adbe6 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleSolitary/system/fvSolution
@@ -22,16 +22,7 @@ solvers
     {
         nAlphaCorr      1;
         nAlphaSubCycles 3;
-        alphaOuterCorrectors yes;
         cAlpha          1;
-
-        MULESCorr       no;
-        nLimiterIter    3;
-
-        solver          smoothSolver;
-        smoother        symGaussSeidel;
-        tolerance       1e-8;
-        relTol          0;
     }
 
     pcorr
@@ -53,13 +44,7 @@ solvers
     p_rghFinal
     {
         solver          GAMG;
-        smoother        GaussSeidel;
-        nPreSweeps      0;
-        nPostSweeps     2;
-        cacheAgglomeration on;
-        agglomerator    faceAreaPair;
-        nCellsInCoarsestLevel 10;
-        mergeLevels     1;
+        smoother        DIC;
         tolerance       1e-7;
         relTol          0;
     }
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution
index a6d6b311547cc1a5887d044ac34d0f8bfb366a1a..859308b6fabab21be628e4f49871e8e0104adbe6 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesI/system/fvSolution
@@ -22,16 +22,7 @@ solvers
     {
         nAlphaCorr      1;
         nAlphaSubCycles 3;
-        alphaOuterCorrectors yes;
         cAlpha          1;
-
-        MULESCorr       no;
-        nLimiterIter    3;
-
-        solver          smoothSolver;
-        smoother        symGaussSeidel;
-        tolerance       1e-8;
-        relTol          0;
     }
 
     pcorr
@@ -53,13 +44,7 @@ solvers
     p_rghFinal
     {
         solver          GAMG;
-        smoother        GaussSeidel;
-        nPreSweeps      0;
-        nPostSweeps     2;
-        cacheAgglomeration on;
-        agglomerator    faceAreaPair;
-        nCellsInCoarsestLevel 10;
-        mergeLevels     1;
+        smoother        DIC;
         tolerance       1e-7;
         relTol          0;
     }
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution
index a6d6b311547cc1a5887d044ac34d0f8bfb366a1a..859308b6fabab21be628e4f49871e8e0104adbe6 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesII/system/fvSolution
@@ -22,16 +22,7 @@ solvers
     {
         nAlphaCorr      1;
         nAlphaSubCycles 3;
-        alphaOuterCorrectors yes;
         cAlpha          1;
-
-        MULESCorr       no;
-        nLimiterIter    3;
-
-        solver          smoothSolver;
-        smoother        symGaussSeidel;
-        tolerance       1e-8;
-        relTol          0;
     }
 
     pcorr
@@ -53,13 +44,7 @@ solvers
     p_rghFinal
     {
         solver          GAMG;
-        smoother        GaussSeidel;
-        nPreSweeps      0;
-        nPostSweeps     2;
-        cacheAgglomeration on;
-        agglomerator    faceAreaPair;
-        nCellsInCoarsestLevel 10;
-        mergeLevels     1;
+        smoother        DIC;
         tolerance       1e-7;
         relTol          0;
     }
diff --git a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution
index a6d6b311547cc1a5887d044ac34d0f8bfb366a1a..859308b6fabab21be628e4f49871e8e0104adbe6 100644
--- a/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution
+++ b/tutorials/multiphase/interFoam/laminar/waveExampleStokesV/system/fvSolution
@@ -22,16 +22,7 @@ solvers
     {
         nAlphaCorr      1;
         nAlphaSubCycles 3;
-        alphaOuterCorrectors yes;
         cAlpha          1;
-
-        MULESCorr       no;
-        nLimiterIter    3;
-
-        solver          smoothSolver;
-        smoother        symGaussSeidel;
-        tolerance       1e-8;
-        relTol          0;
     }
 
     pcorr
@@ -53,13 +44,7 @@ solvers
     p_rghFinal
     {
         solver          GAMG;
-        smoother        GaussSeidel;
-        nPreSweeps      0;
-        nPostSweeps     2;
-        cacheAgglomeration on;
-        agglomerator    faceAreaPair;
-        nCellsInCoarsestLevel 10;
-        mergeLevels     1;
+        smoother        DIC;
         tolerance       1e-7;
         relTol          0;
     }