diff --git a/.gitmodules b/.gitmodules
index d0186d99a381d60766ed4a7b4336c037f273062f..866de836a44e740afb48fd9a0b6ed358ba0397b0 100644
--- a/.gitmodules
+++ b/.gitmodules
@@ -4,6 +4,6 @@
 [submodule "avalanche"]
 	path = modules/avalanche
 	url = https://develop.openfoam.com/Community/avalanche.git
-[submodule "modules/catalyst"]
+[submodule "catalyst"]
 	path = modules/catalyst
 	url = https://develop.openfoam.com/Community/catalyst.git
diff --git a/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/compressibleInterPhaseTransportModel.H b/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/compressibleInterPhaseTransportModel.H
index b758ce3f9ad19b5339144c9528f713d0b64ce34f..72eabf12d1e9542e336ade32fa905c3d801910a3 100644
--- a/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/compressibleInterPhaseTransportModel.H
+++ b/applications/solvers/multiphase/compressibleInterFoam/VoFphaseCompressibleTurbulenceModels/compressibleInterPhaseTransportModel.H
@@ -92,14 +92,14 @@ class compressibleInterPhaseTransportModel
 
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
+        //- No copy construct
         compressibleInterPhaseTransportModel
         (
             const compressibleInterPhaseTransportModel&
-        );
+        ) = delete;
 
-        //- Disallow default bitwise assignment
-        void operator=(const compressibleInterPhaseTransportModel&);
+        //- No copy assignment
+        void operator=(const compressibleInterPhaseTransportModel&) = delete;
 
 
 public:
diff --git a/applications/test/Random/Test-Random.C b/applications/test/Random/Test-Random.C
index b4bd2f25522fb8579fb2114cef856967d33ac83e..a724fe835770d781b5ff56f9555f2299832f370d 100644
--- a/applications/test/Random/Test-Random.C
+++ b/applications/test/Random/Test-Random.C
@@ -174,7 +174,21 @@ int main(int argc, char *argv[])
         }
     }
 
-    cout<< nl << "Done." << endl;
+    // Test uniformity of random
+    {
+        List<label> samples(20, Zero);
+
+        Random rnd(123456);
+        for (label i=0; i < 1000*samples.size(); ++i)
+        {
+            ++samples[rnd.position<label>(0,19)];
+        }
+
+        Info<< nl << "uniform [0,20)" << nl << "  "
+            << flatOutput(samples) << nl;
+    }
+
+    Info<< nl << "Done." << endl;
 
     return 0;
 }
diff --git a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
index 0a6129c501f2431edac9fea57b1e0d4f3511fd65..67bcf4e67e5cd60e7961679d14319165ddd4ee0c 100644
--- a/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
+++ b/etc/codeTemplates/dynamicCode/codedPoints0MotionSolverTemplate.H
@@ -54,11 +54,14 @@ class ${typeName}Points0MotionSolver
 {
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
-        ${typeName}Points0MotionSolver(const ${typeName}Points0MotionSolver&);
+        //- No copy construct
+        ${typeName}Points0MotionSolver
+        (
+            const ${typeName}Points0MotionSolver&
+        ) = delete;
 
-        //- Disallow default bitwise assignment
-        void operator=(const ${typeName}Points0MotionSolver&);
+        //- No copy assignment
+        void operator=(const ${typeName}Points0MotionSolver&) = delete;
 
 
 public:
@@ -88,7 +91,7 @@ public:
 
         //- Solve for motion
         virtual void solve()
-        {};
+        {}
 };
 
 
diff --git a/modules/avalanche b/modules/avalanche
new file mode 160000
index 0000000000000000000000000000000000000000..6e6e105844897d4bf780bbc8d14031bc827e4b04
--- /dev/null
+++ b/modules/avalanche
@@ -0,0 +1 @@
+Subproject commit 6e6e105844897d4bf780bbc8d14031bc827e4b04
diff --git a/modules/catalyst b/modules/catalyst
new file mode 160000
index 0000000000000000000000000000000000000000..eaa7f6836a1950fe8d40c13952aa85a1062f7f91
--- /dev/null
+++ b/modules/catalyst
@@ -0,0 +1 @@
+Subproject commit eaa7f6836a1950fe8d40c13952aa85a1062f7f91
diff --git a/modules/cfmesh b/modules/cfmesh
new file mode 160000
index 0000000000000000000000000000000000000000..288f05e08f07e693d4222e7b84ea12430947e5bf
--- /dev/null
+++ b/modules/cfmesh
@@ -0,0 +1 @@
+Subproject commit 288f05e08f07e693d4222e7b84ea12430947e5bf
diff --git a/src/OpenFOAM/containers/Circulators/CirculatorBase/CirculatorBase.H b/src/OpenFOAM/containers/Circulators/CirculatorBase/CirculatorBase.H
index d1ab166bab32a4414308cf06057d80d8196ceb24..e9d503c6e532823ec8b5bd676d189d9661f23e03 100644
--- a/src/OpenFOAM/containers/Circulators/CirculatorBase/CirculatorBase.H
+++ b/src/OpenFOAM/containers/Circulators/CirculatorBase/CirculatorBase.H
@@ -60,7 +60,8 @@ public:
     // Constructors
 
         //- Construct null
-        CirculatorBase(){};
+        CirculatorBase()
+        {}
 
 };
 
diff --git a/src/OpenFOAM/global/debug/simpleRegIOobject.H b/src/OpenFOAM/global/debug/simpleRegIOobject.H
index c7ede5e8183de983e7e23d9775b45da67ffca474..f1530ab244748a79fd687bf8e0bd097250295a48 100644
--- a/src/OpenFOAM/global/debug/simpleRegIOobject.H
+++ b/src/OpenFOAM/global/debug/simpleRegIOobject.H
@@ -66,8 +66,7 @@ public:
 
 
     //- Destructor
-    virtual ~simpleRegIOobject()
-    {};
+    virtual ~simpleRegIOobject() = default;
 
 
     // Member Functions
diff --git a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C
index e66c6fc019fa8700a0cf6a6d38d27ec8521e9cc4..d9f25fd2e27e7770ed01989cd120778d9f2f2006 100644
--- a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C
+++ b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.C
@@ -43,43 +43,39 @@ namespace Foam
     defineTypeNameAndDebug(fileOperation, 0);
     defineRunTimeSelectionTable(fileOperation, word);
 
-    template<>
-    const char* Foam::NamedEnum
-    <
-        fileOperation::pathType,
-        12
-    >::names[] =
-    {
-        "notFound",
-        "absolute",
-        "objectPath",
-        "writeObject",
-        "uncollatedProc",
-        "globalProc",
-        "localProc",
-        "parentObjectPath",
-        "findInstance",
-        "uncollatedProcInstance",
-        "globalProcInstance",
-        "localProcInstance"
-    };
-    const NamedEnum<fileOperation::pathType, 12> fileOperation::pathTypeNames_;
-
     word fileOperation::defaultFileHandler
     (
-        debug::optimisationSwitches().lookupOrAddDefault
+        debug::optimisationSwitches().lookupOrAddDefault<word>
         (
             "fileHandler",
             //Foam::fileOperations::uncollatedFileOperation::typeName,
-            word("uncollated"),
+            "uncollated",
             false,
             false
         )
     );
 }
 
+
 Foam::word Foam::fileOperation::processorsBaseDir = "processors";
 
+const Foam::Enum<Foam::fileOperation::pathType>
+Foam::fileOperation::pathTypeNames_
+({
+    { fileOperation::NOTFOUND, "notFound" },
+    { fileOperation::ABSOLUTE, "absolute" },
+    { fileOperation::OBJECT, "objectPath" },
+    { fileOperation::WRITEOBJECT, "writeObject" },
+    { fileOperation::PROCUNCOLLATED, "uncollatedProc" },
+    { fileOperation::PROCBASEOBJECT, "globalProc" },
+    { fileOperation::PROCOBJECT, "localProc" },
+    { fileOperation::PARENTOBJECT, "parentObjectPath" },
+    { fileOperation::FINDINSTANCE, "findInstance" },
+    { fileOperation::PROCUNCOLLATEDINSTANCE, "uncollatedProcInstance" },
+    { fileOperation::PROCBASEINSTANCE, "globalProcInstance" },
+    { fileOperation::PROCINSTANCE, "localProcInstance" }
+});
+
 
 // * * * * * * * * * * * * * Private Member Functions  * * * * * * * * * * * //
 
diff --git a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H
index 6f1f2c64f06e6be0db9aad00cfbd0ceb0e7638d1..971cf72853b252b905a09cb9cd6a39cddcae4eeb 100644
--- a/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H
+++ b/src/OpenFOAM/global/fileOperations/fileOperation/fileOperation.H
@@ -47,7 +47,7 @@ Description
 #include "labelList.H"
 #include "Switch.H"
 #include "tmpNrc.H"
-#include "NamedEnum.H"
+#include "Enum.H"
 #include "Tuple2.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -93,7 +93,7 @@ public:
             PROCBASEINSTANCE,       // as PROCBASEOBJECT but with instance
             PROCINSTANCE            // as PROCOBJECT but with instance
         };
-        static const NamedEnum<pathType, 12> pathTypeNames_;
+        static const Enum<pathType> pathTypeNames_;
 
         typedef Tuple2<fileName, Tuple2<pathType, label>> dirIndex;
         typedef List<dirIndex> dirIndexList;
diff --git a/src/OpenFOAM/meshes/polyMesh/syncTools/dummyTransform.H b/src/OpenFOAM/meshes/polyMesh/syncTools/dummyTransform.H
index 18aff56892e3a980fbd3a06a8e9165d55b3043c4..c7e54bdf53015b1a8fecf8a4ec1fa4197b20611b 100644
--- a/src/OpenFOAM/meshes/polyMesh/syncTools/dummyTransform.H
+++ b/src/OpenFOAM/meshes/polyMesh/syncTools/dummyTransform.H
@@ -51,10 +51,12 @@ public:
         const bool forward,
         List<T>& fld
     ) const
-    {};
+    {}
+
     template<class T>
     void operator()(const coupledPolyPatch& cpp, Field<T>& fld) const
     {}
+
     template<class T, template<class> class Container>
     void operator()(const coupledPolyPatch& cpp, Container<T>& map) const
     {}
diff --git a/src/OpenFOAM/primitives/random/Random/Random.C b/src/OpenFOAM/primitives/random/Random/Random.C
index 307fcb0eb1b0d42e5644d1780f638c1b14b41deb..ed09267b126e677d16575747219bc922c2c80a3a 100644
--- a/src/OpenFOAM/primitives/random/Random/Random.C
+++ b/src/OpenFOAM/primitives/random/Random/Random.C
@@ -121,14 +121,16 @@ Foam::scalar Foam::Random::position
 template<>
 Foam::label Foam::Random::position(const label& start, const label& end)
 {
-    return start + round(scalar01()*(end - start));
+    // Extend range from [0, N-1] to (-0.5, N-0.5) to ensure that round()
+    // results in the same number density at the ends.
+    return start + round(scalar01()*((end - start) + 0.998) - 0.499);
 }
 
 
 template<>
 Foam::scalar Foam::Random::globalSample01()
 {
-    scalar value = -GREAT;
+    scalar value(-GREAT);
 
     if (Pstream::master())
     {
@@ -144,7 +146,7 @@ Foam::scalar Foam::Random::globalSample01()
 template<>
 Foam::label Foam::Random::globalSample01()
 {
-    label value = labelMin;
+    label value(labelMin);
 
     if (Pstream::master())
     {
@@ -160,7 +162,7 @@ Foam::label Foam::Random::globalSample01()
 template<>
 Foam::scalar Foam::Random::globalGaussNormal()
 {
-    scalar value = -GREAT;
+    scalar value(-GREAT);
 
     if (Pstream::master())
     {
@@ -176,16 +178,16 @@ Foam::scalar Foam::Random::globalGaussNormal()
 template<>
 Foam::label Foam::Random::globalGaussNormal()
 {
-    scalar value = -GREAT;
+    label value(labelMin);
 
     if (Pstream::master())
     {
-        value = GaussNormal<scalar>();
+        value = GaussNormal<label>();
     }
 
     Pstream::scatter(value);
 
-    return round(value);
+    return value;
 }
 
 
@@ -196,16 +198,16 @@ Foam::scalar Foam::Random::globalPosition
     const scalar& end
 )
 {
-    scalar value = -GREAT;
+    scalar value(-GREAT);
 
     if (Pstream::master())
     {
-        value = scalar01()*(end - start);
+        value = position<scalar>(start, end);
     }
 
     Pstream::scatter(value);
 
-    return start + value;
+    return value;
 }
 
 
@@ -216,16 +218,16 @@ Foam::label Foam::Random::globalPosition
     const label& end
 )
 {
-    label value = labelMin;
+    label value(labelMin);
 
     if (Pstream::master())
     {
-        value = round(scalar01()*(end - start));
+        value = position<label>(start, end);
     }
 
     Pstream::scatter(value);
 
-    return start + value;
+    return value;
 }
 
 
diff --git a/src/atmosphericModels/kEpsilonLopesdaCosta/kEpsilonLopesdaCosta.H b/src/atmosphericModels/kEpsilonLopesdaCosta/kEpsilonLopesdaCosta.H
index a9f2affd6baf5fd206af7e52bb1a18fc34a17498..d1366d26eef1f2be826fb7ed75022ab3e0a8275a 100644
--- a/src/atmosphericModels/kEpsilonLopesdaCosta/kEpsilonLopesdaCosta.H
+++ b/src/atmosphericModels/kEpsilonLopesdaCosta/kEpsilonLopesdaCosta.H
@@ -84,9 +84,11 @@ class kEpsilonLopesdaCosta
 {
     // Private Member Functions
 
-        // Disallow default bitwise copy construct and assignment
-        kEpsilonLopesdaCosta(const kEpsilonLopesdaCosta&);
-        void operator=(const kEpsilonLopesdaCosta&);
+        //- No copy construct
+        kEpsilonLopesdaCosta(const kEpsilonLopesdaCosta&) = delete;
+
+        //- No copy assignment
+        void operator=(const kEpsilonLopesdaCosta&) = delete;
 
 
 protected:
@@ -175,8 +177,7 @@ public:
 
 
     //- Destructor
-    virtual ~kEpsilonLopesdaCosta()
-    {}
+    virtual ~kEpsilonLopesdaCosta() = default;
 
 
     // Member Functions
diff --git a/src/atmosphericModels/porosityModels/powerLawLopesdaCosta/powerLawLopesdaCosta.H b/src/atmosphericModels/porosityModels/powerLawLopesdaCosta/powerLawLopesdaCosta.H
index f19677c808e2aaba6be2ffadc16957ffb5f9c0da..4957f2641b3bea951e81a885aaa88af82e584b75 100644
--- a/src/atmosphericModels/porosityModels/powerLawLopesdaCosta/powerLawLopesdaCosta.H
+++ b/src/atmosphericModels/porosityModels/powerLawLopesdaCosta/powerLawLopesdaCosta.H
@@ -146,11 +146,12 @@ class powerLawLopesdaCosta
             const vectorField& U
         ) const;
 
-        //- Disallow default bitwise copy construct
-        powerLawLopesdaCosta(const powerLawLopesdaCosta&);
 
-        //- Disallow default bitwise assignment
-        void operator=(const powerLawLopesdaCosta&);
+        //- No copy construct
+        powerLawLopesdaCosta(const powerLawLopesdaCosta&) = delete;
+
+        //- No copy assignment
+        void operator=(const powerLawLopesdaCosta&) = delete;
 
 
 public:
diff --git a/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.H b/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.H
index 20beb790e49be40d2ad2605557d6feb78791bcd6..8a1d78aca1b0389e5cc951bb3723e7011d550d2c 100644
--- a/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.H
+++ b/src/combustionModels/CombustionModel/ChemistryCombustion/ChemistryCombustion.H
@@ -56,8 +56,10 @@ class ChemistryCombustion
     // Private Member Functions
 
         //- Construct as copy (not implemented)
-        ChemistryCombustion(const ChemistryCombustion<ReactionThermo>&) =
-            delete;
+        ChemistryCombustion
+        (
+            const ChemistryCombustion<ReactionThermo>&
+        ) = delete;
 
         //- No copy assignment
         void operator=(const ChemistryCombustion<ReactionThermo>&) = delete;
diff --git a/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H
index f8fa5e75d4dc9414d609913d835c780f4f9adc4b..d095d9481b10f8ec4a65ebbb151d373297309f62 100644
--- a/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H
+++ b/src/dynamicMesh/motionSolvers/displacement/codedPoints0/codedPoints0MotionSolver.H
@@ -117,13 +117,11 @@ protected:
         virtual const dictionary& codeDict() const;
 
 
-private:
+        //- No copy assignment construct
+        codedPoints0MotionSolver(const codedPoints0MotionSolver&) = delete;
 
-        //- Disallow default bitwise copy construct
-        codedPoints0MotionSolver(const codedPoints0MotionSolver&);
-
-        //- Disallow default bitwise assignment
-        void operator=(const codedPoints0MotionSolver&);
+        //- No copy assignment
+        void operator=(const codedPoints0MotionSolver&) = delete;
 
 
 public:
diff --git a/src/dynamicMesh/polyMeshFilter/polyMeshFilterSettings.H b/src/dynamicMesh/polyMeshFilter/polyMeshFilterSettings.H
index 93bc4bd3b911e00234ca9b83833a9cf55e21b4e9..8a0419363ec248303e724222d57d14e6ab3ccd38 100644
--- a/src/dynamicMesh/polyMeshFilter/polyMeshFilterSettings.H
+++ b/src/dynamicMesh/polyMeshFilter/polyMeshFilterSettings.H
@@ -111,7 +111,7 @@ public:
 
 
     //- Destructor
-    ~polyMeshFilterSettings(){};
+    ~polyMeshFilterSettings() = default;
 
 
     // Member Functions
diff --git a/src/engine/engineTime/freePiston/freePiston.H b/src/engine/engineTime/freePiston/freePiston.H
index 47fff4348d64f408af28d608814baaaf2526ddfb..d01ead612b7f35ef2d1fd51269ee504623019684 100644
--- a/src/engine/engineTime/freePiston/freePiston.H
+++ b/src/engine/engineTime/freePiston/freePiston.H
@@ -81,11 +81,11 @@ class freePiston
 
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
-        freePiston(const freePiston&);
+        //- No copy construct
+        freePiston(const freePiston&) = delete;
 
-        //- Disallow default bitwise assignment
-        void operator=(const freePiston&);
+        //- No copy assignment
+        void operator=(const freePiston&) = delete;
 
 
 public:
@@ -108,8 +108,7 @@ public:
         );
 
     //- Destructor
-    virtual ~freePiston()
-    {}
+    virtual ~freePiston() = default;
 
 
     // Member Functions
diff --git a/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.H b/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.H
index a066303f47dc576ce53464a091f05b95656ef184..fbde975d8476d2208e8e940d5dbd420ec1aa3a00 100644
--- a/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.H
+++ b/src/fvOptions/sources/derived/phaseLimitStabilization/PhaseLimitStabilization.H
@@ -89,11 +89,11 @@ class PhaseLimitStabilization
 
     // Private Member Functions
 
-        //- Disallow default bitwise copy construct
-        PhaseLimitStabilization(const PhaseLimitStabilization&);
+        //- No copy construct
+        PhaseLimitStabilization(const PhaseLimitStabilization&) = delete;
 
-        //- Disallow default bitwise assignment
-        void operator=(const PhaseLimitStabilization&);
+        //- No copy assignment
+        void operator=(const PhaseLimitStabilization&) = delete;
 
 
 public:
@@ -115,8 +115,7 @@ public:
 
 
     //- Destructor
-    virtual ~PhaseLimitStabilization()
-    {}
+    virtual ~PhaseLimitStabilization() = default;
 
 
     // Member Functions
diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.C b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.C
index b3c4af2864e978a8a61b9ae8b61d7c3b1d3cf88a..4d4660cce7d8925fb860d66121e8e57330b5a5cb 100644
--- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.C
+++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.C
@@ -161,12 +161,6 @@ waxSolventViscosity::waxSolventViscosity
 {}
 
 
-// * * * * * * * * * * * * * * * * Destructor  * * * * * * * * * * * * * * * //
-
-waxSolventViscosity::~waxSolventViscosity()
-{}
-
-
 // * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * * //
 
 void waxSolventViscosity::correct
diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.H b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.H
index e437671772a756a6361ce89960c24fceabb9a70d..517a17452b52f7922e406d6ed6fd72b6387d5364 100644
--- a/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.H
+++ b/src/regionModels/surfaceFilmModels/submodels/thermo/filmViscosityModel/waxSolventViscosity/waxSolventViscosity.H
@@ -59,10 +59,10 @@ class waxSolventViscosity
         //- Correct the mixture viscosity
         void correctMu();
 
-        //- Disallow default bitwise copy construct
-        waxSolventViscosity(const waxSolventViscosity&);
+        //- No copy construct
+        waxSolventViscosity(const waxSolventViscosity&) = delete;
 
-        //- Disallow default bitwise assignment
+        //- No copy assignment
         void operator=(const waxSolventViscosity&) = delete;
 
 
@@ -101,7 +101,7 @@ public:
 
 
     //- Destructor
-    virtual ~waxSolventViscosity();
+    virtual ~waxSolventViscosity() = default;
 
 
     // Member Functions
diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.C b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.C
index 0228c4a54cb23f0c3979fe23fa488e409bb40e30..06d976e1b445118d43766a6eaa8ebd817fdc88d8 100644
--- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.C
+++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.C
@@ -127,7 +127,7 @@ waxSolventEvaporation::waxSolventEvaporation
     deltaMin_(readScalar(coeffDict_.lookup("deltaMin"))),
     L_(readScalar(coeffDict_.lookup("L"))),
     TbFactor_(coeffDict_.lookupOrDefault<scalar>("TbFactor", 1.1)),
-    YInfZero_(coeffDict_.lookupOrDefault<Switch>("YInfZero", false)),
+    YInfZero_(coeffDict_.lookupOrDefault("YInfZero", false)),
     activityCoeff_
     (
         Function1<scalar>::New("activityCoeff", coeffDict_)
diff --git a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.H b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.H
index 94d1a57e423b9436a659efc553b30607fd65e7aa..bec7d6e23fec27c547b86929213ebe098e2e26b0 100644
--- a/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.H
+++ b/src/regionModels/surfaceFilmModels/submodels/thermo/phaseChangeModel/waxSolventEvaporation/waxSolventEvaporation.H
@@ -58,11 +58,11 @@ class waxSolventEvaporation
 {
     // Private member functions
 
-        //- Disallow default bitwise copy construct
-        waxSolventEvaporation(const waxSolventEvaporation&);
+        //- No copy construct
+        waxSolventEvaporation(const waxSolventEvaporation&) = delete;
 
-        //- Disallow default bitwise assignment
-        void operator=(const waxSolventEvaporation&);
+        //- No copy assignment
+        void operator=(const waxSolventEvaporation&) = delete;
 
 
 protected:
@@ -92,7 +92,7 @@ protected:
         const scalar TbFactor_;
 
         //- Switch to treat YInf as zero
-        Switch YInfZero_;
+        bool YInfZero_;
 
         //- Activity coefficient as a function of solvent mole fraction
         autoPtr<Function1<scalar>> activityCoeff_;
diff --git a/src/renumber/renumberMethods/structuredRenumber/OppositeFaceCellWave.H b/src/renumber/renumberMethods/structuredRenumber/OppositeFaceCellWave.H
index 12701070822163bc433417eab95fe6584fb16cce..584361e95d8033bd6006a2b8a258d51af556cae4 100644
--- a/src/renumber/renumberMethods/structuredRenumber/OppositeFaceCellWave.H
+++ b/src/renumber/renumberMethods/structuredRenumber/OppositeFaceCellWave.H
@@ -108,8 +108,7 @@ public:
 
 
     //- Destructor
-    virtual ~OppositeFaceCellWave()
-    {};
+    virtual ~OppositeFaceCellWave() = default;
 
 
     // Member Functions
diff --git a/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.C b/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.C
index a8a18998117601a743119b7a4eff46f1ed30c539..11701aa55a7ba3e222163d5c923b49db99f55bcd 100644
--- a/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.C
+++ b/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.C
@@ -24,6 +24,7 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "ensightSurfaceReader.H"
+#include "stringOps.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -158,15 +159,21 @@ void Foam::ensightSurfaceReader::readCase(IFstream& is)
 
     debugSection("GEOMETRY", is);
     readLine(is, buffer);
-    readFromLine(2, buffer, meshFileName_); // model: 1 xxx.0000.mesh
+
+    // GEOMETRY with any of these
+    //     model: 1 xxx.0000.mesh
+    //     model: xxx.0000.mesh
+    //     model: data/directory/geometry
+    //
+    // - use the last entry
+    meshFileName_ = stringOps::splitSpace(buffer).last().str();
 
     debugSection("VARIABLE", is);
 
     // Read the field description
     DynamicList<word> fieldNames(10);
     DynamicList<string> fieldFileNames(10);
-    word fieldName;
-    string fieldFileName;
+
     while (is.good())
     {
         readLine(is, buffer);
@@ -176,31 +183,30 @@ void Foam::ensightSurfaceReader::readCase(IFstream& is)
             break;
         }
 
-        IStringStream iss(buffer);
+        // Read the field name and associated file name. Eg,
+        //     scalar per element: 1  p  data/********/p
 
-        // Read the field name, e.g. p U etc
-        readFromLine(4, iss, fieldName);
-        fieldNames.append(fieldName);
+        const auto parsed = stringOps::splitSpace(buffer);
 
-        // Field file name may contain /'s e.g.
-        //   surfaceName.****.fieldName
-        // This is not parser friendly - simply take remainder of buffer
-        label iPos = iss.stdStream().tellg();
-        fieldFileName = buffer.substr(iPos);
-        size_t p0  = fieldFileName.find_first_not_of(' ');
-        if (p0 == string::npos)
+        if (buffer.find(':') == string::npos || parsed.size() < 4)
         {
             WarningInFunction
-                << "Error reading field file name. "
-                << "Current buffer: " << buffer
-                << endl;
+                << "Error reading field file name. Current buffer: "
+                << buffer << endl;
+            continue;
         }
-        else
+        else if (debug)
         {
-            size_t p1  = fieldFileName.find_last_not_of(' ');
-            fieldFileName = fieldFileName.substr(p0, p1 - p0 + 1);
+            Info<<"variable line: " << parsed.size();
+            for (const auto& s : parsed)
+            {
+                Info<<" " << s.str();
+            }
+            Info<<nl;
         }
-        fieldFileNames.append(fieldFileName);
+
+        fieldNames.append(parsed[parsed.size()-2].str());
+        fieldFileNames.append(parsed.last().str());
     }
     fieldNames_.transfer(fieldNames);
     fieldFileNames_.transfer(fieldFileNames);
diff --git a/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.H b/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.H
index a5452c5c337cdc044d699b6854ccb302058b6862..1a71e7415026cb1f2d8e6438de398ddd1a731ba8 100644
--- a/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.H
+++ b/src/sampling/sampledSurface/readers/ensight/ensightSurfaceReader.H
@@ -63,8 +63,8 @@ protected:
         //- Base directory
         fileName baseDir_;
 
-        //- Name of mesh file
-        word meshFileName_;
+        //- Name of mesh file, including any subdirectory
+        fileName meshFileName_;
 
         //- Field names
         List<word> fieldNames_;
diff --git a/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.H b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.H
index 9fc7e43cc528555ac7202a81fa84f81744d73dbe..757498ffd061e34b5816a2112bbb6ce1774261fd 100644
--- a/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.H
+++ b/src/thermophysicalModels/chemistryModel/chemistryModel/BasicChemistryModel/BasicChemistryModel.H
@@ -60,8 +60,10 @@ class BasicChemistryModel
     // Private Member Functions
 
         //- Construct as copy (not implemented)
-        BasicChemistryModel(const BasicChemistryModel<ReactionThermo>&) =
-            delete;
+        BasicChemistryModel
+        (
+            const BasicChemistryModel<ReactionThermo>&
+        ) = delete;
 
         //- No copy assignment
         void operator=(const BasicChemistryModel<ReactionThermo>&) = delete;