diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.C
index a72e883cbbdb5fbac57da2933bc7bd445d340b74..4fbd93f87a0462d2d3a14f8645a9c55971462808 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2016-2020 OpenCFD Ltd.
+    Copyright (C) 2016-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -49,37 +49,37 @@ bool Foam::eddy::setScales
     vector& alpha
 ) const
 {
-    // Static array of gamma^2 vs c2 coefficient
+    // Static array of gamma^2 vs c2 coefficient (PCR:Table 1)
     static const scalar gamma2VsC2[8] =
         {2, 1.875, 1.737, 1.75, 0.91, 0.825, 0.806, 1.5};
 
-    scalar gamma = Foam::sqrt(scalar(gamma2));
+    const scalar gamma = Foam::sqrt(scalar(gamma2));
 
     // c2 coefficient retrieved from array
-    scalar c2 = gamma2VsC2[gamma2 - 1];
+    const scalar c2 = gamma2VsC2[gamma2 - 1];
 
-    // Length scale in largest eigenvalue direction
-    label d1 = dir1_;
-    label d2 = (d1 + 1) % 3;
-    label d3 = (d1 + 2) % 3;
+    // Length scale in the largest eigenvalue direction
+    const label d1 = dir1_;
+    const label d2 = (d1 + 1) % 3;
+    const label d3 = (d1 + 2) % 3;
 
     sigma[d1] = sigmaX;
 
     // Note: sigma_average = 1/3*(sigma_x + sigma_y + sigma_z)
     // Substituting for sigma_y = sigma_x/gamma and sigma_z = sigma_y
-    //sigma[d1] = 3*sigmaX/(1 + 2/gamma);
     // Other length scales equal, as function of major axis length and gamma
     sigma[d2] = sigma[d1]/gamma;
     sigma[d3] = sigma[d2];
 
-    vector sigma2 = cmptMultiply(sigma, sigma);
-    scalar slos2 = cmptSum(cmptDivide(lambda, sigma2));
+    // (PCR:Eq. 13)
+    const vector sigma2(cmptMultiply(sigma, sigma));
+    const scalar slos2 = cmptSum(cmptDivide(lambda, sigma2));
 
     bool ok = true;
 
-    for (label beta = 0; beta < 3; ++beta)
+    for (label beta = 0; beta < vector::nComponents; ++beta)
     {
-        scalar x = slos2 - 2*lambda[beta]/sigma2[beta];
+        const scalar x = slos2 - 2*lambda[beta]/sigma2[beta];
 
         if (x < 0)
         {
@@ -88,6 +88,7 @@ bool Foam::eddy::setScales
         }
         else
         {
+            // (SST:Eq. 23)
             alpha[beta] = e[beta]*sqrt(x/(2*c2));
         }
     }
@@ -145,7 +146,7 @@ Foam::eddy::eddy
     dir1_(0)
 {
     // Principal stresses - eigenvalues returned in ascending order
-    vector lambda(eigenValues(R));
+    const vector lambda(eigenValues(R));
 
     // Eddy rotation from principal-to-global axes
     // - given by the 3 eigenvectors of the Reynold stress tensor as rows in
@@ -174,17 +175,17 @@ Foam::eddy::eddy
     {
         // Random length scale ratio, gamma = sigmax/sigmay = sigmax/sigmaz
         // - using gamma^2 to ease lookup of c2 coefficient
-        label g2 = Gamma2[i];
+        const label gamma2 = Gamma2[i];
 
-        if (setScales(sigmaX, g2, e, lambda, sigma_, alpha_))
+        if (setScales(sigmaX, gamma2, e, lambda, sigma_, alpha_))
         {
             found = true;
             break;
         }
     }
 
-    // Normalisation coefficient (eq. 11)
-    // Note: sqrt(10*V)/sqrt(nEddy) applied outside when computing uDash
+    // Normalisation coefficient (PCR:Eq. 11)
+    // Note: sqrt(10*V)/sqrt(nEddy) applied outside when computing uPrime
     c1_ = cmptAv(sigma_)/cmptProduct(sigma_)*cmptMin(sigma_);
 
     if (found)
@@ -226,27 +227,27 @@ Foam::eddy::eddy(const eddy& e)
 
 // * * * * * * * * * * * * * * * Member Functions  * * * * * * * * * * * * * //
 
-Foam::vector Foam::eddy::uDash(const point& xp, const vector& n) const
+Foam::vector Foam::eddy::uPrime(const point& xp, const vector& n) const
 {
-    // Relative position inside eddy (global system)
-    const vector r = cmptDivide(xp - position(n), sigma_);
+    // Relative position inside eddy (global system) (PCR:p. 524)
+    const vector r(cmptDivide(xp - position(n), sigma_));
 
-    if (mag(r) > 1)
+    if (mag(r) >= scalar(1))
     {
         return vector::zero;
     }
 
     // Relative position inside eddy (eddy principal system)
-    const vector rp = Rpg_.T() & r;
+    const vector rp(Rpg_.T() & r);
 
     // Shape function (eddy principal system)
-    const vector q = cmptMultiply(sigma_, vector::one - cmptMultiply(rp, rp));
+    const vector q(cmptMultiply(sigma_, vector::one - cmptMultiply(rp, rp)));
 
-    // Fluctuating velocity (eddy principal system) (eq. 8)
-    const vector uDashp = cmptMultiply(q, rp^alpha_);
+    // Fluctuating velocity (eddy principal system) (PCR:Eq. 8)
+    const vector uPrimep(cmptMultiply(q, rp^alpha_));
 
-    // Convert into global system (eq. 10)
-    return c1_*(Rpg_ & uDashp);
+    // Convert into global system (PCR:Eq. 10)
+    return c1_*(Rpg_ & uPrimep);
 }
 
 
@@ -256,7 +257,7 @@ void Foam::eddy::writeCentreOBJ
     Ostream& os
 ) const
 {
-    point p = position(n);
+    const point p(position(n));
     os  << "v " << p.x() << " " << p.y() << " " << p.z() << nl;
 }
 
@@ -295,14 +296,14 @@ Foam::label Foam::eddy::writeSurfaceOBJ
     x[nEddyPoints - 1] = - axisDir*s[dir1_];
 
     label eddyPtI = 1;
-    for (label axisI = 1; axisI < nFaceAxis; axisI++)
+    for (label axisI = 1; axisI < nFaceAxis; ++axisI)
     {
-        scalar z = s[dir1_]*cos(axisI*dPhi);
-        scalar r = sqrt(sqr(s[dir2])*(1 - sqr(z)/sqr(s[dir1_])));
+        const scalar z = s[dir1_]*cos(axisI*dPhi);
+        const scalar r = sqrt(sqr(s[dir2])*(1 - sqr(z)/sqr(s[dir1_])));
 
-        for (label thetaI = 0; thetaI < nFaceTheta; thetaI++)
+        for (label thetaI = 0; thetaI < nFaceTheta; ++thetaI)
         {
-            scalar theta = thetaI*dTheta;
+            const scalar theta = thetaI*dTheta;
             point& p = x[eddyPtI++];
             p[dir1_] = z;
             p[dir2] = r*sin(theta);
@@ -313,33 +314,33 @@ Foam::label Foam::eddy::writeSurfaceOBJ
     // Write points
     forAll(x, i)
     {
-        point p = position(n) + (Rpg_ & x[i]);
+        const point p = position(n) + (Rpg_ & x[i]);
         os  << "v " << p.x() << " " << p.y() << " " << p.z() << nl;
     }
 
     // Write the end cap tri faces
-    for (label faceI = 0; faceI < nFaceTheta; faceI++)
+    for (label faceI = 0; faceI < nFaceTheta; ++faceI)
     {
-        label p1 = pointI + 1;
-        label p2 = p1 + faceI + 1;
+        const label p1 = pointI + 1;
+        const label p2 = p1 + faceI + 1;
         label p3 = p2 + 1;
         if (faceI == nFaceTheta - 1) p3 -= nFaceTheta;
         os  << "f " << p1 << " " << p2 << " " << p3 << nl;
 
-        label q1 = pointI + nEddyPoints;
-        label q2 = q1 - faceI - 1;
+        const label q1 = pointI + nEddyPoints;
+        const label q2 = q1 - faceI - 1;
         label q3 = q2 - 1;
         if (faceI == nFaceTheta - 1) q3 += nFaceTheta;
         os  << "f " << q1 << " " << q2 << " " << q3 << nl;
     }
 
     // Write quad faces
-    for (label axisI = 1; axisI < nFaceAxis - 1; axisI++)
+    for (label axisI = 1; axisI < nFaceAxis - 1; ++axisI)
     {
-        for (label thetaI = 0; thetaI < nFaceTheta; thetaI++)
+        for (label thetaI = 0; thetaI < nFaceTheta; ++thetaI)
         {
-            label p1 = pointI + 1 + (axisI - 1)*nFaceTheta + thetaI + 1;
-            label p2 = p1 + nFaceTheta;
+            const label p1 = pointI + 1 + (axisI - 1)*nFaceTheta + thetaI + 1;
+            const label p2 = p1 + nFaceTheta;
             label p3 = p2 + 1;
             label p4 = p1 + 1;
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.H b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.H
index ca904a4fa24b2ac0eb367eaf0000e12de865ad7e..f911e5e539a257c2b32778e2b3d57491b441432f 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddy.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -69,7 +69,7 @@ Ostream& operator<<(Ostream& os, const eddy& e);
 
 class eddy
 {
-    // Private data
+    // Private Data
 
         static label Gamma2Values[8];
         static UList<label> Gamma2;
@@ -83,7 +83,7 @@ class eddy
         //- Distance from reference position in normal direction
         scalar x_;
 
-        //- Length scales in 3-D space
+        //- Integral-length scales in 3-D space
         vector sigma_;
 
         //- Time-averaged intensity
@@ -133,14 +133,18 @@ public:
             const label patchFaceI,     // patch face index
             const point& position0,     // reference position
             const scalar x,             // distance from reference position
-            const scalar sigmaX,        // length scale
-            const symmTensor& R,        // Stress tensor
+            const scalar sigmaX,        // integral-length scale
+            const symmTensor& R,        // Reynolds stress tensor
             Random& rndGen
         );
 
-        //- Construct copy
+        //- Copy construct
         eddy(const eddy& e);
 
+
+    // Public Data
+
+        //- Flag to activate debug statements
         static int debug;
 
 
@@ -149,26 +153,26 @@ public:
         // Access
 
             //- Return the patch face index that spawned the eddy
-            inline label patchFaceI() const;
+            inline label patchFaceI() const noexcept;
 
             //- Return the reference position
-            inline const point& position0() const;
+            inline const point& position0() const noexcept;
 
             //- Return the distance from the reference position
-            inline scalar x() const;
+            inline scalar x() const noexcept;
 
-            //- Return the lLength scales in 3-D space
-            inline const vector& sigma() const;
+            //- Return the length scales in 3-D space
+            inline const vector& sigma() const noexcept;
 
             //- Return the time-averaged intensity
-            inline const vector& alpha() const;
+            inline const vector& alpha() const noexcept;
 
             //- Return the coordinate system transformation from local
-            //  principal to global axes
-            inline const tensor& Rpg() const;
+            //- principal to global axes
+            inline const tensor& Rpg() const noexcept;
 
             //- Return the model coefficient c1
-            inline scalar c1() const;
+            inline scalar c1() const noexcept;
 
             //- Return the eddy position
             inline point position(const vector& n) const;
@@ -192,10 +196,10 @@ public:
             inline boundBox bounds(const bool global = true) const;
 
 
-        // Evaluate
+        // Evaluation
 
             //- Return the fluctuating velocity contribution at local point xp
-            vector uDash(const point& xp, const vector& n) const;
+            vector uPrime(const point& xp, const vector& n) const;
 
 
         // Writing
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyI.H b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyI.H
index e158a394a2c9657c6fa95f387476d4343a98c65e..c31011def8cc0446251bff2fefbd539878be7811 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyI.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/eddy/eddyI.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2016 OpenCFD Ltd.
+    Copyright (C) 2016-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -39,51 +39,51 @@ Foam::scalar Foam::eddy::epsi(Random& rndGen) const
 }
 
 
-inline Foam::label Foam::eddy::patchFaceI() const
+inline Foam::label Foam::eddy::patchFaceI() const noexcept
 {
     return patchFaceI_;
 }
 
 
-inline const Foam::point& Foam::eddy::position0() const
+inline const Foam::point& Foam::eddy::position0() const noexcept
 {
     return position0_;
 }
 
 
-inline Foam::scalar Foam::eddy::x() const
+inline Foam::scalar Foam::eddy::x() const noexcept
 {
     return x_;
 }
 
 
-inline const Foam::vector& Foam::eddy::sigma() const
+inline const Foam::vector& Foam::eddy::sigma() const noexcept
 {
     return sigma_;
 }
 
 
-inline const Foam::vector& Foam::eddy::alpha() const
+inline const Foam::vector& Foam::eddy::alpha() const noexcept
 {
     return alpha_;
 }
 
 
-inline const Foam::tensor& Foam::eddy::Rpg() const
+inline const Foam::tensor& Foam::eddy::Rpg() const noexcept
 {
     return Rpg_;
 }
 
 
-inline Foam::point Foam::eddy::position(const vector& n) const
+inline Foam::scalar Foam::eddy::c1() const noexcept
 {
-    return position0_ + n*x_;
+    return c1_;
 }
 
 
-inline Foam::scalar Foam::eddy::c1() const
+inline Foam::point Foam::eddy::position(const vector& n) const
 {
-    return c1_;
+    return position0_ + n*x_;
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
index 4a5a681a7d1593751a0276dd06ff488661a50eb0..2cfa15b8fdfcffb59671d7ca5e723ee16432a63e 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.C
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2016-2020 OpenCFD Ltd.
+    Copyright (C) 2016-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,13 +27,9 @@ License
 \*---------------------------------------------------------------------------*/
 
 #include "turbulentDFSEMInletFvPatchVectorField.H"
-#include "volFields.H"
 #include "addToRunTimeSelectionTable.H"
-#include "fvPatchFieldMapper.H"
 #include "momentOfInertia.H"
 #include "OFstream.H"
-#include "globalIndex.H"
-#include "rawIOField.H"
 
 // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * //
 
@@ -51,7 +47,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::writeEddyOBJ() const
         const labelList& boundaryPoints = pp.boundaryPoints();
         const pointField& localPoints = pp.localPoints();
 
-        vector offset = patchNormal_*maxSigmaX_;
+        const vector offset(patchNormal_*maxSigmaX_);
         forAll(boundaryPoints, i)
         {
             point p = localPoints[boundaryPoints[i]];
@@ -65,24 +61,6 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::writeEddyOBJ() const
             p -= offset;
             os  << "v " << p.x() << " " << p.y() << " " << p.z() << nl;
         }
-
-        // Draw lines between points
-        // Note: need to order to avoid crossing patch
-        //const label nPoint = boundaryPoints.size();
-        //
-        //forAll(boundaryPoints, i)
-        //{
-        //    label i1 = i;
-        //    label i2 = (i + 1) % nPoint;
-        //    os  << "l " << i1 << " " << i2 << nl;
-        //}
-        //
-        //forAll(boundaryPoints, i)
-        //{
-        //    label i1 = i + nPoint;
-        //    label i2 = ((i + 1) % nPoint) + nPoint;
-        //    os  << "l " << i1 << " " << i2 << nl;
-        //}
     }
 
     {
@@ -106,144 +84,34 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::writeLumleyCoeffs() const
 {
     // Output list of xi vs eta
 
-    // Before interpolation/raw data
-    if (interpolateR_)
-    {
-        const fileName valsFile
-        (
-            fileName
-            (
-                this->db().time().globalPath()
-               /this->db().time().constant()
-               /"boundaryData"
-               /this->patch().name()
-               /"0"
-               /"R"
-            )
-        );
+    OFstream os(db().time().path()/"lumley_interpolated.out");
 
-        IOobject io
-        (
-            valsFile,   // absolute path
-            this->db().time(),
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE,
-            false,              // no need to register
-            true                // is global object (currently not used)
-        );
-
-        const rawIOField<symmTensor> Rexp(io, false);
+    os  << "# xi" << token::TAB << "eta" << endl;
 
-        OFstream os(db().time().path()/"lumley_input.out");
+    const scalar t = db().time().timeOutputValue();
+    const symmTensorField R(R_->value(t)/sqr(Uref_));
 
-        os  << "# xi" << token::TAB << "eta" << endl;
-
-        forAll(Rexp, faceI)
-        {
-            // Normalised anisotropy tensor
-            symmTensor devR = dev(Rexp[faceI]/(tr(Rexp[faceI])));
-
-            // Second tensor invariant
-            scalar ii = min(0, invariantII(devR));
-
-            // Third tensor invariant
-            scalar iii = invariantIII(devR);
-
-            // xi, eta
-            // See Pope - characterization of Reynolds-stress anisotropy
-            scalar xi = cbrt(0.5*iii);
-            scalar eta = sqrt(-ii/3.0);
-            os  << xi << token::TAB << eta << token::TAB
-                << ii << token::TAB << iii << endl;
-        }
-    }
-
-    // After interpolation
+    forAll(R, faceI)
     {
-        OFstream os(db().time().path()/"lumley_interpolated.out");
-
-        os  << "# xi" << token::TAB << "eta" << endl;
-
-        forAll(R_, faceI)
-        {
-            // Normalised anisotropy tensor
-            symmTensor devR = dev(R_[faceI]/(tr(R_[faceI])));
+        // Normalised anisotropy tensor
+        const symmTensor devR(dev(R[faceI]/(tr(R[faceI]))));
 
-            // Second tensor invariant
-            scalar ii = min(0, invariantII(devR));
+        // Second tensor invariant
+        const scalar ii = min(0, invariantII(devR));
 
-            // Third tensor invariant
-            scalar iii = invariantIII(devR);
+        // Third tensor invariant
+        const scalar iii = invariantIII(devR);
 
-            // xi, eta
-            // See Pope - characterization of Reynolds-stress anisotropy
-            scalar xi = cbrt(0.5*iii);
-            scalar eta = sqrt(-ii/3.0);
-            os  << xi << token::TAB << eta << token::TAB
-                << ii << token::TAB << iii << endl;
-        }
+        // xi, eta
+        // See Pope - characterization of Reynolds-stress anisotropy
+        const scalar xi = cbrt(0.5*iii);
+        const scalar eta = sqrt(-ii/3.0);
+        os  << xi << token::TAB << eta << token::TAB
+            << ii << token::TAB << iii << endl;
     }
 }
 
 
-const Foam::pointToPointPlanarInterpolation&
-Foam::turbulentDFSEMInletFvPatchVectorField::patchMapper() const
-{
-    // Initialise interpolation (2D planar interpolation by triangulation)
-    if (!mapperPtr_)
-    {
-        const fileName samplePointsFile
-        (
-            this->db().time().globalPath()
-           /this->db().time().constant()
-           /"boundaryData"
-           /this->patch().name()
-           /"points"
-        );
-
-        IOobject io
-        (
-            samplePointsFile,   // absolute path
-            this->db().time(),
-            IOobject::MUST_READ,
-            IOobject::NO_WRITE,
-            false,              // no need to register
-            true                // is global object (currently not used)
-        );
-
-        // Read data
-        const rawIOField<point> samplePoints(io, false);
-
-
-        DebugInFunction
-            << " Read " << samplePoints.size() << " sample points from "
-            << samplePointsFile << endl;
-
-
-        // tbd: run-time selection
-        bool nearestOnly =
-        (
-           !mapMethod_.empty()
-         && mapMethod_ != "planarInterpolation"
-        );
-
-        // Allocate the interpolator
-        mapperPtr_.reset
-        (
-            new pointToPointPlanarInterpolation
-            (
-                samplePoints,
-                this->patch().patch().faceCentres(),
-                perturb_,
-                nearestOnly
-            )
-        );
-    }
-
-    return *mapperPtr_;
-}
-
-
 void Foam::turbulentDFSEMInletFvPatchVectorField::initialisePatch()
 {
     const vectorField nf(patch().nf());
@@ -252,7 +120,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialisePatch()
     patchNormal_ = -gAverage(nf);
 
     // Check that patch is planar
-    scalar error = max(magSqr(patchNormal_ + nf));
+    const scalar error = max(magSqr(patchNormal_ + nf));
 
     if (error > SMALL)
     {
@@ -293,9 +161,9 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialisePatch()
         }
     }
 
-    forAll(sumTriMagSf_, i)
+    for (auto& s : sumTriMagSf_)
     {
-        sumTriMagSf_[i] = 0.0;
+        s = 0.0;
     }
 
     sumTriMagSf_[Pstream::myProcNo() + 1] = sum(triMagSf);
@@ -303,7 +171,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialisePatch()
     Pstream::listCombineGather(sumTriMagSf_, maxEqOp<scalar>());
     Pstream::listCombineScatter(sumTriMagSf_);
 
-    for (label i = 1; i < triMagSf.size(); i++)
+    for (label i = 1; i < triMagSf.size(); ++i)
     {
         triMagSf[i] += triMagSf[i-1];
     }
@@ -314,7 +182,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialisePatch()
     triCumulativeMagSf_.transfer(triMagSf);
 
     // Convert sumTriMagSf_ into cumulative sum of areas per proc
-    for (label i = 1; i < sumTriMagSf_.size(); i++)
+    for (label i = 1; i < sumTriMagSf_.size(); ++i)
     {
         sumTriMagSf_[i] += sumTriMagSf_[i-1];
     }
@@ -336,7 +204,9 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialiseEddyBox()
 {
     const scalarField& magSf = patch().magSf();
 
-    //const scalarField cellDx(Foam::sqrt(magSf));
+    const scalarField L(L_->value(db().time().timeOutputValue())/Lref_);
+
+    // (PCF:Eq. 14)
     const scalarField cellDx(max(Foam::sqrt(magSf), 2/patch().deltaCoeffs()));
 
     // Inialise eddy box extents
@@ -344,13 +214,10 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialiseEddyBox()
     {
         scalar& s = sigmax_[faceI];
 
-        // Length scale in x direction (based on eq. 14)
-        s = mag(L_[faceI]);
-        s = min(s, kappa_*delta_);
-
-        // Allow eddies to be smaller than the mesh scale as suggested by
-        // the reference?
-        // s = min(s, nCellPerEddy_*cellDx[faceI]);
+        // Average length scale (SST:Eq. 24)
+        // Personal communication regarding (PCR:Eq. 14)
+        //  - the min operator in Eq. 14 is a typo, and should be a max operator
+        s = min(mag(L[faceI]), kappa_*delta_);
         s = max(s, nCellPerEddy_*cellDx[faceI]);
     }
 
@@ -383,7 +250,8 @@ Foam::pointIndexHit Foam::turbulentDFSEMInletFvPatchVectorField::setNewPosition
 
     if (global)
     {
-        scalar areaFraction = rndGen_.globalPosition<scalar>(0, patchArea_);
+        const scalar areaFraction =
+            rndGen_.globalPosition<scalar>(0, patchArea_);
 
         // Determine which processor to use
         label procI = 0;
@@ -400,7 +268,7 @@ Foam::pointIndexHit Foam::turbulentDFSEMInletFvPatchVectorField::setNewPosition
         {
             // Find corresponding decomposed face triangle
             label triI = 0;
-            scalar offset = sumTriMagSf_[procI];
+            const scalar offset = sumTriMagSf_[procI];
             forAllReverse(triCumulativeMagSf_, i)
             {
                 if (areaFraction > triCumulativeMagSf_[i] + offset)
@@ -423,8 +291,8 @@ Foam::pointIndexHit Foam::turbulentDFSEMInletFvPatchVectorField::setNewPosition
     {
         // Find corresponding decomposed face triangle on local processor
         label triI = 0;
-        scalar maxAreaLimit = triCumulativeMagSf_.last();
-        scalar areaFraction = rndGen_.position<scalar>(0, maxAreaLimit);
+        const scalar maxAreaLimit = triCumulativeMagSf_.last();
+        const scalar areaFraction = rndGen_.position<scalar>(0, maxAreaLimit);
 
         forAllReverse(triCumulativeMagSf_, i)
         {
@@ -450,6 +318,9 @@ Foam::pointIndexHit Foam::turbulentDFSEMInletFvPatchVectorField::setNewPosition
 
 void Foam::turbulentDFSEMInletFvPatchVectorField::initialiseEddies()
 {
+    const scalar t = db().time().timeOutputValue();
+    const symmTensorField R(R_->value(t)/sqr(Uref_));
+
     DynamicList<eddy> eddies(size());
 
     // Initialise eddy properties
@@ -465,18 +336,18 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialiseEddies()
         {
             // Get new parallel consistent position
             pointIndexHit pos(setNewPosition(true));
-            label faceI = pos.index();
+            const label patchFaceI = pos.index();
 
             // Note: only 1 processor will pick up this face
-            if (faceI != -1)
+            if (patchFaceI != -1)
             {
                 eddy e
                 (
-                    faceI,
+                    patchFaceI,
                     pos.hitPoint(),
                     rndGen_.position<scalar>(-maxSigmaX_, maxSigmaX_),
-                    sigmax_[faceI],
-                    R_[faceI],
+                    sigmax_[patchFaceI],
+                    R[patchFaceI],
                     rndGen_
                 );
 
@@ -526,16 +397,21 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::initialiseEddies()
         WarningInFunction
             << "Patch: " << patch().patch().name()
             << " on field " << internalField().name()
-            << ": No eddies seeded - please check your set-up" << endl;
+            << ": No eddies seeded - please check your set-up"
+            << endl;
     }
 }
 
 
 void Foam::turbulentDFSEMInletFvPatchVectorField::convectEddies
 (
+    const vector& UBulk,
     const scalar deltaT
 )
 {
+    const scalar t = db().time().timeOutputValue();
+    const symmTensorField R(R_->value(t)/sqr(Uref_));
+
     // Note: all operations applied to local processor only
 
     label nRecycled = 0;
@@ -543,7 +419,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::convectEddies
     forAll(eddies_, eddyI)
     {
         eddy& e = eddies_[eddyI];
-        e.move(deltaT*(UMean_ & patchNormal_));
+        e.move(deltaT*(UBulk & patchNormal_));
 
         const scalar position0 = e.x();
 
@@ -555,17 +431,17 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::convectEddies
 
             while (search && iter++ < seedIterMax_)
             {
-               // Spawn new eddy with new random properties (intensity etc)
-               pointIndexHit pos(setNewPosition(false));
-               label faceI = pos.index();
+                // Spawn new eddy with new random properties (intensity etc)
+                pointIndexHit pos(setNewPosition(false));
+                const label patchFaceI = pos.index();
 
-               e = eddy
+                e = eddy
                     (
-                        faceI,
+                        patchFaceI,
                         pos.hitPoint(),
                         position0 - floor(position0/maxSigmaX_)*maxSigmaX_,
-                        sigmax_[faceI],
-                        R_[faceI],
+                        sigmax_[patchFaceI],
+                        R[patchFaceI],
                         rndGen_
                     );
 
@@ -583,27 +459,28 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::convectEddies
 
     if (debug && nRecycled > 0)
     {
-        Info<< "Patch: " << patch().patch().name() << " recycled "
-            << nRecycled << " eddies" << endl;
+        Info<< "Patch: " << patch().patch().name()
+            << " recycled " << nRecycled << " eddies"
+            << endl;
     }
 }
 
 
-Foam::vector Foam::turbulentDFSEMInletFvPatchVectorField::uDashEddy
+Foam::vector Foam::turbulentDFSEMInletFvPatchVectorField::uPrimeEddy
 (
     const List<eddy>& eddies,
     const point& patchFaceCf
 ) const
 {
-    vector uDash(Zero);
+    vector uPrime(Zero);
 
     forAll(eddies, k)
     {
         const eddy& e = eddies[k];
-        uDash += e.uDash(patchFaceCf, patchNormal_);
+        uPrime += e.uPrime(patchFaceCf, patchNormal_);
     }
 
-    return uDash;
+    return uPrime;
 }
 
 
@@ -629,8 +506,8 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::calcOverlappingProcEddies
         const eddy& e = eddies_[i];
 
         // Eddy bounds
-        point x = e.position(patchNormal_);
-        boundBox ebb = e.bounds();
+        const point x(e.position(patchNormal_));
+        boundBox ebb(e.bounds());
         ebb.min() += x;
         ebb.max() += x;
 
@@ -678,10 +555,10 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::calcOverlappingProcEddies
         if (procI != Pstream::myProcNo())
         {
             // What I need to receive is what other processor is sending to me
-            label nRecv = sendSizes[procI][Pstream::myProcNo()];
+            const label nRecv = sendSizes[procI][Pstream::myProcNo()];
             constructMap[procI].setSize(nRecv);
 
-            for (label i = 0; i < nRecv; i++)
+            for (label i = 0; i < nRecv; ++i)
             {
                 constructMap[procI][i] = segmentI++;
             }
@@ -738,37 +615,33 @@ turbulentDFSEMInletFvPatchVectorField
 )
 :
     fixedValueFvPatchField<vector>(p, iF),
-    delta_(Zero),
-    d_(Zero),
-    kappa_(Zero),
-
-    perturb_(1e-5),
-    mapMethod_("nearestCell"),
-    mapperPtr_(nullptr),
-    interpolateR_(false),
-    interpolateL_(false),
-    interpolateU_(false),
-    R_(),
-    L_(),
-    U_(),
-    UMean_(Zero),
+    U_(nullptr),
+    R_(nullptr),
+    L_(nullptr),
+    delta_(1.0),
+    d_(1.0),
+    kappa_(0.41),
+    Uref_(1.0),
+    Lref_(1.0),
+    scale_(1.0),
+    m_(0.5),
+    nCellPerEddy_(5),
 
     patchArea_(-1),
     triFace_(),
     triToFace_(),
     triCumulativeMagSf_(),
     sumTriMagSf_(Pstream::nProcs() + 1, Zero),
+    patchNormal_(Zero),
+    patchBounds_(boundBox::invertedBox),
 
     eddies_(Zero),
-    nCellPerEddy_(5),
-    patchNormal_(Zero),
     v0_(Zero),
     rndGen_(Pstream::myProcNo()),
     sigmax_(size(), Zero),
     maxSigmaX_(Zero),
-    nEddy_(Zero),
+    nEddy_(0),
     curTimeIndex_(-1),
-    patchBounds_(boundBox::invertedBox),
     singleProc_(false),
     writeEddies_(false)
 {}
@@ -784,37 +657,33 @@ turbulentDFSEMInletFvPatchVectorField
 )
 :
     fixedValueFvPatchField<vector>(ptf, p, iF, mapper),
+    U_(ptf.U_.clone(patch().patch())),
+    R_(ptf.R_.clone(patch().patch())),
+    L_(ptf.L_.clone(patch().patch())),
     delta_(ptf.delta_),
     d_(ptf.d_),
     kappa_(ptf.kappa_),
-
-    perturb_(ptf.perturb_),
-    mapMethod_(ptf.mapMethod_),
-    mapperPtr_(nullptr),
-    interpolateR_(ptf.interpolateR_),
-    interpolateL_(ptf.interpolateL_),
-    interpolateU_(ptf.interpolateU_),
-    R_(ptf.R_, mapper),
-    L_(ptf.L_, mapper),
-    U_(ptf.U_, mapper),
-    UMean_(ptf.UMean_),
+    Uref_(ptf.Uref_),
+    Lref_(ptf.Lref_),
+    scale_(ptf.scale_),
+    m_(ptf.m_),
+    nCellPerEddy_(ptf.nCellPerEddy_),
 
     patchArea_(ptf.patchArea_),
     triFace_(ptf.triFace_),
     triToFace_(ptf.triToFace_),
     triCumulativeMagSf_(ptf.triCumulativeMagSf_),
     sumTriMagSf_(ptf.sumTriMagSf_),
+    patchNormal_(ptf.patchNormal_),
+    patchBounds_(ptf.patchBounds_),
 
     eddies_(ptf.eddies_),
-    nCellPerEddy_(ptf.nCellPerEddy_),
-    patchNormal_(ptf.patchNormal_),
     v0_(ptf.v0_),
     rndGen_(ptf.rndGen_),
     sigmax_(ptf.sigmax_, mapper),
     maxSigmaX_(ptf.maxSigmaX_),
-    nEddy_(Zero),
+    nEddy_(ptf.nEddy_),
     curTimeIndex_(-1),
-    patchBounds_(ptf.patchBounds_),
     singleProc_(ptf.singleProc_),
     writeEddies_(ptf.writeEddies_)
 {}
@@ -829,46 +698,42 @@ turbulentDFSEMInletFvPatchVectorField
 )
 :
     fixedValueFvPatchField<vector>(p, iF, dict),
-    delta_(dict.get<scalar>("delta")),
-    d_(dict.getOrDefault<scalar>("d", 1)),
-    kappa_(dict.getOrDefault<scalar>("kappa", 0.41)),
-
-    perturb_(dict.getOrDefault<scalar>("perturb", 1e-5)),
-    mapMethod_(dict.getOrDefault<word>("mapMethod", "nearestCell")),
-    mapperPtr_(nullptr),
-    interpolateR_(dict.getOrDefault("interpolateR", false)),
-    interpolateL_(dict.getOrDefault("interpolateL", false)),
-    interpolateU_(dict.getOrDefault("interpolateU", false)),
-    R_(interpolateOrRead<symmTensor>("R", dict, interpolateR_)),
-    L_(interpolateOrRead<scalar>("L", dict, interpolateL_)),
-    U_(interpolateOrRead<vector>("U", dict, interpolateU_)),
-    UMean_(Zero),
+    U_(PatchFunction1<vector>::New(patch().patch(), "U", dict)),
+    R_(PatchFunction1<symmTensor>::New(patch().patch(), "R", dict)),
+    L_(PatchFunction1<scalar>::New(patch().patch(), "L", dict)),
+    delta_(dict.getCheck<scalar>("delta", scalarMinMax::ge(0))),
+    d_(dict.getCheckOrDefault<scalar>("d", 1, scalarMinMax::ge(SMALL))),
+    kappa_(dict.getCheckOrDefault<scalar>("kappa", 0.41, scalarMinMax::ge(0))),
+    Uref_(dict.getCheckOrDefault<scalar>("Uref", 1, scalarMinMax::ge(SMALL))),
+    Lref_(dict.getCheckOrDefault<scalar>("Lref", 1, scalarMinMax::ge(SMALL))),
+    scale_(dict.getCheckOrDefault<scalar>("scale", 1, scalarMinMax::ge(0))),
+    m_(dict.getCheckOrDefault<scalar>("m", 0.5, scalarMinMax::ge(0))),
+    nCellPerEddy_(dict.getOrDefault<label>("nCellPerEddy", 5)),
 
     patchArea_(-1),
     triFace_(),
     triToFace_(),
     triCumulativeMagSf_(),
     sumTriMagSf_(Pstream::nProcs() + 1, Zero),
+    patchNormal_(Zero),
+    patchBounds_(boundBox::invertedBox),
 
     eddies_(),
-    nCellPerEddy_(dict.getOrDefault<label>("nCellPerEddy", 5)),
-    patchNormal_(Zero),
     v0_(Zero),
     rndGen_(),
     sigmax_(size(), Zero),
     maxSigmaX_(Zero),
-    nEddy_(Zero),
+    nEddy_(0),
     curTimeIndex_(-1),
-    patchBounds_(boundBox::invertedBox),
     singleProc_(false),
     writeEddies_(dict.getOrDefault("writeEddies", false))
 {
     eddy::debug = debug;
 
-    checkStresses(R_);
+    const scalar t = db().time().timeOutputValue();
+    const symmTensorField R(R_->value(t)/sqr(Uref_));
 
-    // Set UMean as patch area average value
-    UMean_ = gSum(U_*patch().magSf())/(gSum(patch().magSf()) + ROOTVSMALL);
+    checkStresses(R);
 }
 
 
@@ -879,37 +744,33 @@ turbulentDFSEMInletFvPatchVectorField
 )
 :
     fixedValueFvPatchField<vector>(ptf),
+    U_(ptf.U_.clone(patch().patch())),
+    R_(ptf.R_.clone(patch().patch())),
+    L_(ptf.L_.clone(patch().patch())),
     delta_(ptf.delta_),
     d_(ptf.d_),
     kappa_(ptf.kappa_),
-
-    perturb_(ptf.perturb_),
-    mapMethod_(ptf.mapMethod_),
-    mapperPtr_(nullptr),
-    interpolateR_(ptf.interpolateR_),
-    interpolateL_(ptf.interpolateL_),
-    interpolateU_(ptf.interpolateU_),
-    R_(ptf.R_),
-    L_(ptf.L_),
-    U_(ptf.U_),
-    UMean_(ptf.UMean_),
+    Uref_(ptf.Uref_),
+    Lref_(ptf.Lref_),
+    scale_(ptf.scale_),
+    m_(ptf.m_),
+    nCellPerEddy_(ptf.nCellPerEddy_),
 
     patchArea_(ptf.patchArea_),
     triFace_(ptf.triFace_),
     triToFace_(ptf.triToFace_),
     triCumulativeMagSf_(ptf.triCumulativeMagSf_),
     sumTriMagSf_(ptf.sumTriMagSf_),
+    patchNormal_(ptf.patchNormal_),
+    patchBounds_(ptf.patchBounds_),
 
     eddies_(ptf.eddies_),
-    nCellPerEddy_(ptf.nCellPerEddy_),
-    patchNormal_(ptf.patchNormal_),
     v0_(ptf.v0_),
     rndGen_(ptf.rndGen_),
     sigmax_(ptf.sigmax_),
     maxSigmaX_(ptf.maxSigmaX_),
-    nEddy_(Zero),
+    nEddy_(ptf.nEddy_),
     curTimeIndex_(-1),
-    patchBounds_(ptf.patchBounds_),
     singleProc_(ptf.singleProc_),
     writeEddies_(ptf.writeEddies_)
 {}
@@ -923,37 +784,33 @@ turbulentDFSEMInletFvPatchVectorField
 )
 :
     fixedValueFvPatchField<vector>(ptf, iF),
+    U_(ptf.U_.clone(patch().patch())),
+    R_(ptf.R_.clone(patch().patch())),
+    L_(ptf.L_.clone(patch().patch())),
     delta_(ptf.delta_),
     d_(ptf.d_),
     kappa_(ptf.kappa_),
-
-    perturb_(ptf.perturb_),
-    mapMethod_(ptf.mapMethod_),
-    mapperPtr_(nullptr),
-    interpolateR_(ptf.interpolateR_),
-    interpolateL_(ptf.interpolateL_),
-    interpolateU_(ptf.interpolateU_),
-    R_(ptf.R_),
-    L_(ptf.L_),
-    U_(ptf.U_),
-    UMean_(ptf.UMean_),
+    Uref_(ptf.Uref_),
+    Lref_(ptf.Lref_),
+    scale_(ptf.scale_),
+    m_(ptf.m_),
+    nCellPerEddy_(ptf.nCellPerEddy_),
 
     patchArea_(ptf.patchArea_),
     triFace_(ptf.triFace_),
     triToFace_(ptf.triToFace_),
     triCumulativeMagSf_(ptf.triCumulativeMagSf_),
     sumTriMagSf_(ptf.sumTriMagSf_),
+    patchNormal_(ptf.patchNormal_),
+    patchBounds_(ptf.patchBounds_),
 
     eddies_(ptf.eddies_),
-    nCellPerEddy_(ptf.nCellPerEddy_),
-    patchNormal_(ptf.patchNormal_),
     v0_(ptf.v0_),
     rndGen_(ptf.rndGen_),
     sigmax_(ptf.sigmax_),
     maxSigmaX_(ptf.maxSigmaX_),
-    nEddy_(Zero),
+    nEddy_(ptf.nEddy_),
     curTimeIndex_(-1),
-    patchBounds_(ptf.patchBounds_),
     singleProc_(ptf.singleProc_),
     writeEddies_(ptf.writeEddies_)
 {}
@@ -981,11 +838,11 @@ bool Foam::turbulentDFSEMInletFvPatchVectorField::checkStresses
                 << exit(FatalError);
         }
 
-        scalar a_xx = sqrt(R.xx());
+        const scalar a_xx = sqrt(R.xx());
 
-        scalar a_xy = R.xy()/a_xx;
+        const scalar a_xy = R.xy()/a_xx;
 
-        scalar a_yy_2 = R.yy() - sqr(a_xy);
+        const scalar a_yy_2 = R.yy() - sqr(a_xy);
 
         if (a_yy_2 < 0)
         {
@@ -996,13 +853,13 @@ bool Foam::turbulentDFSEMInletFvPatchVectorField::checkStresses
                 << exit(FatalError);
         }
 
-        scalar a_yy = Foam::sqrt(a_yy_2);
+        const scalar a_yy = Foam::sqrt(a_yy_2);
 
-        scalar a_xz = R.xz()/a_xx;
+        const scalar a_xz = R.xz()/a_xx;
 
-        scalar a_yz = (R.yz() - a_xy*a_xz)*a_yy;
+        const scalar a_yz = (R.yz() - a_xy*a_xz)/a_yy;
 
-        scalar a_zz_2 = R.zz() - sqr(a_xz) - sqr(a_yz);
+        const scalar a_zz_2 = R.zz() - sqr(a_xz) - sqr(a_yz);
 
         if (a_zz_2 < 0)
         {
@@ -1013,7 +870,7 @@ bool Foam::turbulentDFSEMInletFvPatchVectorField::checkStresses
                 << exit(FatalError);
         }
 
-        scalar a_zz = Foam::sqrt(a_zz_2);
+        const scalar a_zz = Foam::sqrt(a_zz_2);
 
         if (debug)
         {
@@ -1036,11 +893,18 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::autoMap
 {
     fixedValueFvPatchField<vector>::autoMap(m);
 
-    // Clear interpolator
-    mapperPtr_.clear();
-    R_.autoMap(m);
-    L_.autoMap(m);
-    U_.autoMap(m);
+    if (U_)
+    {
+        U_->autoMap(m);
+    }
+    if (R_)
+    {
+        R_->autoMap(m);
+    }
+    if (L_)
+    {
+        L_->autoMap(m);
+    }
 
     sigmax_.autoMap(m);
 }
@@ -1054,15 +918,21 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::rmap
 {
     fixedValueFvPatchField<vector>::rmap(ptf, addr);
 
-    const turbulentDFSEMInletFvPatchVectorField& dfsemptf =
+    const auto& dfsemptf =
         refCast<const turbulentDFSEMInletFvPatchVectorField>(ptf);
 
-    R_.rmap(dfsemptf.R_, addr);
-    L_.rmap(dfsemptf.L_, addr);
-    U_.rmap(dfsemptf.U_, addr);
-
-    // Clear interpolator
-    mapperPtr_.clear();
+    if (U_)
+    {
+        U_->rmap(dfsemptf.U_(), addr);
+    }
+    if (R_)
+    {
+        R_->rmap(dfsemptf.R_(), addr);
+    }
+    if (L_)
+    {
+        L_->rmap(dfsemptf.L_(), addr);
+    }
 
     sigmax_.rmap(dfsemptf.sigmax_, addr);
 }
@@ -1087,38 +957,38 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::updateCoeffs()
 
     if (curTimeIndex_ != db().time().timeIndex())
     {
-        if (debug)
-        {
-            label n = eddies_.size();
-            Info<< "Number of eddies: " << returnReduce(n, sumOp<label>())
-                << endl;
-        }
+        tmp<vectorField> UMean =
+            U_->value(db().time().timeOutputValue())/Uref_;
 
-        const scalar deltaT = db().time().deltaTValue();
+        // (PCR:p. 522)
+        const vector UBulk
+        (
+            gSum(UMean()*patch().magSf())
+           /(gSum(patch().magSf()) + ROOTVSMALL)
+        );
 
-        // Move eddies using mean velocity
-        convectEddies(deltaT);
+        // Move eddies using bulk velocity
+        const scalar deltaT = db().time().deltaTValue();
+        convectEddies(UBulk, deltaT);
 
-        // Set velocity
+        // Set mean velocity
         vectorField& U = *this;
-        //U = UMean_;
-        U = U_;
-
-        const pointField& Cf = patch().Cf();
+        U = UMean;
 
         // Apply second part of normalisation coefficient
-        // Note: factor of 2 required to match reference stresses?
-        const scalar FACTOR = 2;
-        const scalar c = FACTOR*Foam::sqrt(10*v0_)/Foam::sqrt(scalar(nEddy_));
+        const scalar c =
+            scale_*Foam::pow(10*v0_, m_)/Foam::sqrt(scalar(nEddy_));
 
         // In parallel, need to collect all eddies that will interact with
         // local faces
 
+        const pointField& Cf = patch().Cf();
+
         if (singleProc_ || !Pstream::parRun())
         {
             forAll(U, faceI)
             {
-                U[faceI] += c*uDashEddy(eddies_, Cf[faceI]);
+                U[faceI] += c*uPrimeEddy(eddies_, Cf[faceI]);
             }
         }
         else
@@ -1126,7 +996,7 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::updateCoeffs()
             // Process local eddy contributions
             forAll(U, faceI)
             {
-                U[faceI] += c*uDashEddy(eddies_, Cf[faceI]);
+                U[faceI] += c*uPrimeEddy(eddies_, Cf[faceI]);
             }
 
             // Add contributions from overlapping eddies
@@ -1139,30 +1009,21 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::updateCoeffs()
 
                 if (eddies.size())
                 {
-                    //Pout<< "Applying " << eddies.size()
-                    //    << " eddies from processor " << procI << endl;
-
                     forAll(U, faceI)
                     {
-                        U[faceI] += c*uDashEddy(eddies, Cf[faceI]);
+                        U[faceI] += c*uPrimeEddy(eddies, Cf[faceI]);
                     }
                 }
             }
         }
 
         // Re-scale to ensure correct flow rate
-        scalar fCorr =
-            gSum((UMean_ & patchNormal_)*patch().magSf())
+        const scalar fCorr =
+            gSum((UBulk & patchNormal_)*patch().magSf())
            /gSum(U & -patch().Sf());
 
         U *= fCorr;
 
-        if (debug)
-        {
-            Info<< "Patch:" << patch().patch().name()
-                << " min/max(U):" << gMin(U) << ", " << gMax(U) << endl;
-        }
-
         curTimeIndex_ = db().time().timeIndex();
 
         if (writeEddies_)
@@ -1170,9 +1031,22 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::updateCoeffs()
             writeEddyOBJ();
         }
 
-        if (debug && db().time().writeTime())
+        if (debug)
         {
-            writeLumleyCoeffs();
+            Info<< "Magnitude of bulk velocity: " << UBulk << endl;
+
+            label n = eddies_.size();
+            Info<< "Number of eddies: " << returnReduce(n, sumOp<label>())
+                << endl;
+
+            Info<< "Patch:" << patch().patch().name()
+                << " min/max(U):" << gMin(U) << ", " << gMax(U)
+                << endl;
+
+            if (db().time().writeTime())
+            {
+                writeLumleyCoeffs();
+            }
         }
     }
 
@@ -1183,38 +1057,28 @@ void Foam::turbulentDFSEMInletFvPatchVectorField::updateCoeffs()
 void Foam::turbulentDFSEMInletFvPatchVectorField::write(Ostream& os) const
 {
     fvPatchField<vector>::write(os);
-    writeEntry("value", os);
     os.writeEntry("delta", delta_);
     os.writeEntryIfDifferent<scalar>("d", 1.0, d_);
     os.writeEntryIfDifferent<scalar>("kappa", 0.41, kappa_);
-    os.writeEntryIfDifferent<scalar>("perturb", 1e-5, perturb_);
+    os.writeEntryIfDifferent<scalar>("Uref", 1.0, Uref_);
+    os.writeEntryIfDifferent<scalar>("Lref", 1.0, Lref_);
+    os.writeEntryIfDifferent<scalar>("scale", 1.0, scale_);
+    os.writeEntryIfDifferent<scalar>("m", 0.5, m_);
     os.writeEntryIfDifferent<label>("nCellPerEddy", 5, nCellPerEddy_);
     os.writeEntryIfDifferent("writeEddies", false, writeEddies_);
-
-    if (!interpolateR_)
+    if (U_)
     {
-        R_.writeEntry("R", os);
+        U_->writeData(os);
     }
-
-    if (!interpolateL_)
-    {
-        L_.writeEntry("L", os);
-    }
-
-    if (!interpolateU_)
+    if (R_)
     {
-        U_.writeEntry("U", os);
+        R_->writeData(os);
     }
-
-    if (!mapMethod_.empty())
+    if (L_)
     {
-        os.writeEntryIfDifferent<word>
-        (
-            "mapMethod",
-            "nearestCell",
-            mapMethod_
-        );
+        L_->writeData(os);
     }
+    writeEntry("value", os);
 }
 
 
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.H b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.H
index 3284b5bd88121289dc03b618ec41fdd34afdbbf0..624f3354bf21c306e1737cc561ab3c4b34ee558e 100644
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.H
+++ b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorField.H
@@ -6,7 +6,7 @@
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
     Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2016-2019 OpenCFD Ltd.
+    Copyright (C) 2016-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -31,56 +31,107 @@ Group
     grpInletBoundaryConditions
 
 Description
-    Velocity boundary condition including synthesised eddies for use with LES
-    and DES turbulent flows.
+    The \c turbulentDFSEMInlet is a synthesised-eddy based velocity inlet
+    boundary condition to generate synthetic turbulence-alike time-series
+    from a given set of turbulence statistics for LES and hybrid RANS-LES
+    computations.
 
     Reference:
     \verbatim
-        Poletto, R., Craft, T., & Revell, A. (2013).
-        A new divergence free synthetic eddy method for
-        the reproduction of inlet flow conditions for LES.
-        Flow, turbulence and combustion, 91(3), 519-539.
-        DOI:10.1007/s10494-013-9488-2
+        Standard model (tag:PCR):
+            Poletto, R., Craft, T., & Revell, A. (2013).
+            A new divergence free synthetic eddy method for
+            the reproduction of inlet flow conditions for LES.
+            Flow, turbulence and combustion, 91(3), 519-539.
+            DOI:10.1007/s10494-013-9488-2
+
+        Expression for the average length scale (tag:SST):
+            Shur, M., Strelets, M., Travin, A.,
+            Probst, A., Probst, S., Schwamborn, D., ... & Revell, A. (2018).
+            Improved embedded approaches.
+            In: Mockett C., Haase W., Schwamborn D. (eds)
+            Go4Hybrid: Grey area mitigation for hybrid RANS-LES methods.
+            Notes on Numerical Fluid Mechanics and Multidisciplinary Design.
+            p. 51-87. Springer, Cham.
+            DOI:10.1007/978-3-319-52995-0_3
     \endverbatim
 
-    Reynolds stress, velocity and turbulence length scale values can either
-    be specified directly, or mapped.  If mapping, the values should be
-    entered in the same form as the \c timeVaryingMappedFixedValue condition,
-    except that no interpolation in time is supported.  These should be
-    located in the directory:
-
+Usage
+    Example of the boundary condition specification:
     \verbatim
-        \$FOAM_CASE/constant/boundaryData/\<patchName\>/points
-        \$FOAM_CASE/constant/boundaryData/\<patchName\>/0/\{R|U|L\}
+    <patchName>
+    {
+        // Mandatory entries
+        type            turbulentDFSEMInlet;
+        delta           <scalar>;
+        R               <PatchFunction1>;
+        U               <PatchFunction1>;
+        L               <PatchFunction1>;
+
+            // e.g.
+            // R        uniform (<Rxx> <Rxy> <Rxz> <Ryy> <Ryz> <Rzz>);
+            // U        uniform (<Ux> <Uy> <Uz>);
+            // L        uniform <L>;
+
+        // Optional entries
+        d               <scalar>;
+        nCellPerEddy    <label>;
+        kappa           <scalar>;
+        Uref            <scalar>;
+        Lref            <scalar>;
+        scale           <scalar>;
+        m               <scalar>;
+        writeEddies     <bool>;
+
+        // Inherited entries
+        ...
+    }
     \endverbatim
 
-Usage
+    where the entries mean:
     \table
-        Property  | Description         | Required             | Default value
-        value     | Restart value       | yes                  |
-        delta     | Local limiting length scale          | yes |
-        R         | Reynolds stress field                | no  |
-        U         | Velocity field                       | no  |
-        L         | Turbulence length scale field        | no  |
-        d         | Eddy density (fill fraction)         | no  | 1
-        kappa     | Von Karman constant                  | no  | 0.41
-        mapMethod | Method to map reference values       | no  | nearestCell
-        perturb   | Point perturbation for interpolation | no  | 1e-5
-        interpolateR | Flag to interpolate the R field   | no  | false
-        interpolateL | Flag to interpolate the L field   | no  | false
-        interpolateU | Flag to interpolate the U field   | no  | false
-        writeEddies | Flag to write eddies as OBJ file   | no  | no
+      Property | Description                         | Type       | Reqd | Deflt
+      type     | Type name: turbulentDFSEMInlet      | word       | yes  | -
+      delta    | Characteristic length scale         | scalar     | yes  | -
+      R        | Reynolds-stress tensor field        <!--
+               -->                 | PatchFunction1\<symmTensor\> | yes  | -
+      U        | Mean velocity field                 <!--
+               -->                 | PatchFunction1<vector>       | yes  | -
+      L        | Integral-length scale field         <!--
+               -->                 | PatchFunction1<scalar>       | yes  | -
+      d        | Ratio of sum of eddy volumes to eddy box volume  <!--
+               --> i.e. eddy density (fill fraction) | scalar     | no   | 1.0
+      nCellPerEddy | Minimum eddy length in units of number of cells     <!--
+               -->                                   | label      | no   | 5
+      kappa    | von Karman constant                 | scalar     | no   | 0.41
+      Uref     | Normalisation factor for Reynolds-stress         <!--
+               --> tensor and mean velocity          | scalar     | no   | 1.0
+      Lref     | Normalisation factor for integral-length scale   <!--
+               -->                                   | scalar     | no   | 1.0
+      scale    | Heuristic scaling factor being applied           <!--
+               --> on the normalisation factor C1    | scalar     | no   | 1.0
+      m        | The power of V defined in C1        | scalar     | no   | 0.5
+      writeEddies  | Flag to write eddies as OBJ file  | bool     | no   | false
     \endtable
 
-Note
-    - The \c delta value typically represents the characteristic scale of flow
-      or flow domain, e.g. a channel half-height
-    - For \c R, \c U and \c L specification: if the entry is not user input,
-      it is assumed that the data will be mapped
+    The inherited entries are elaborated in:
+      - \link fixedValueFvPatchFields.H \endlink
+      - \link PatchFunction1.H \endlink
+      - \link MappedFile.H \endlink
 
-SeeAlso
-    timeVaryingMappedFixedValueFvPatchField
-    turbulentDigitalFilterInlet
+Note
+  - The \c delta value typically represents the characteristic scale of flow
+    or flow domain, e.g. a channel half height for plane channel flows.
+  - \c nCellPerEddy and \c scale entries are heuristic entries
+    which do not exist in the standard method, yet are necessary
+    to reproduce the results published in the original journal paper.
+  - In the original journal paper, \c C1 in Eq. 11 is not dimensionless.
+    It is not clear whether this dimensionality issue was intentional.
+    To alleviate this matter, users can alter the input entry \c m, which is
+    the power of the eddy-box volume defined in the \c C1, to obtain a
+    dimensionless \c C1 coefficient. The default value of \c m is 0.5,
+    which is the value stated in the original journal paper,
+    and \c m=1/3 leads to a dimensionless \c C1.
 
 SourceFiles
     turbulentDFSEMInletFvPatchVectorField.C
@@ -94,15 +145,13 @@ SourceFiles
 #include "Random.H"
 #include "eddy.H"
 #include "pointIndexHit.H"
-#include "instantList.H"
+#include "PatchFunction1.H"
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 namespace Foam
 {
 
-class pointToPointPlanarInterpolation;
-
 /*---------------------------------------------------------------------------*\
            Class turbulentDFSEMInletFvPatchVectorField Declaration
 \*---------------------------------------------------------------------------*/
@@ -116,50 +165,38 @@ class turbulentDFSEMInletFvPatchVectorField
         //- Maximum number of attempts when seeding eddies
         static label seedIterMax_;
 
-        //- Characteristic length scale, e.g. half channel height
-        const scalar delta_;
-
-        //- Ratio of sum of eddy volumes to eddy box volume; default = 1
-        const scalar d_;
-
-        //- Von Karman constant
-        const scalar kappa_;
+        //- Mean velocity field
+        autoPtr<PatchFunction1<vector>> U_;
 
-        //- Global numbering for faces
-        mutable autoPtr<globalIndex> globalFacesPtr_;
+        //- Reynolds stress tensor field
+        autoPtr<PatchFunction1<symmTensor>> R_;
 
+        //- Integral-length scale field
+        autoPtr<PatchFunction1<scalar>> L_;
 
-        // Table reading for patch inlet flow properties
-
-            //- Fraction of perturbation (fraction of bounding box) to add
-            scalar perturb_;
-
-            //- Interpolation scheme to use (nearestCell | planarInterpolation)
-            word mapMethod_;
-
-            //- 2D interpolation (for 'planarInterpolation' mapMethod)
-            mutable autoPtr<pointToPointPlanarInterpolation> mapperPtr_;
+        //- Characteristic length scale
+        const scalar delta_;
 
-            //- Flag to identify to interpolate the R field
-            bool interpolateR_;
+        //- Ratio of sum of eddy volumes to eddy box volume, i.e. eddy density
+        const scalar d_;
 
-            //- Flag to identify to interpolate the L field
-            bool interpolateL_;
+        //- von Karman constant
+        const scalar kappa_;
 
-            //- Flag to identify to interpolate the U field
-            bool interpolateU_;
+        //- Normalisation factor for Reynolds-stress tensor and mean velocity
+        const scalar Uref_;
 
-            //- Reynolds stress tensor
-            symmTensorField R_;
+        //- Normalisation factor for integral-length scale
+        const scalar Lref_;
 
-            //- Length scale
-            scalarField L_;
+        //- Heuristic scaling factor being applied on the normalisation factor
+        const scalar scale_;
 
-            //- Inlet velocity
-            vectorField U_;
+        //- The power of V defined in C1
+        const scalar m_;
 
-            //- Mean inlet velocity
-            vector UMean_;
+        //- Minimum eddy length in units of number of cells
+        const label nCellPerEddy_;
 
 
         // Patch information
@@ -179,46 +216,51 @@ class turbulentDFSEMInletFvPatchVectorField
             //- Cumulative area fractions per processor
             scalarList sumTriMagSf_;
 
+            //- Patch normal into the domain
+            vector patchNormal_;
 
-        //- List of eddies
-        List<eddy> eddies_;
+            //- Patch bounds (local processor)
+            boundBox patchBounds_;
 
-        //- Minimum number of cells required to resolve an eddy
-        label nCellPerEddy_;
 
-        //- Patch normal into the domain
-        vector patchNormal_;
+        // Eddy information
 
-        //- Eddy box volume
-        scalar v0_;
+            //- List of eddies
+            List<eddy> eddies_;
 
-        //- Random number generator
-        Random rndGen_;
+            //- Eddy box volume
+            scalar v0_;
 
-        //- Length scale per patch face
-        scalarField sigmax_;
+            //- Random number generator
+            Random rndGen_;
 
-        //- Maximum length scale (across all processors)
-        scalar maxSigmaX_;
+            //- Integral-length scale per patch face
+            scalarField sigmax_;
 
-        //- Global number of eddies
-        label nEddy_;
+            //- Maximum integral-length scale (across all processors)
+            scalar maxSigmaX_;
 
-        //- Current time index (used for updating)
-        label curTimeIndex_;
+            //- Global number of eddies
+            label nEddy_;
 
-        //- Patch bounds (local processor)
-        boundBox patchBounds_;
+            //- Current time index (used for updating)
+            label curTimeIndex_;
 
-        //- Single processor contains all eddies (flag)
-        bool singleProc_;
+            //- Single processor contains all eddies (flag)
+            bool singleProc_;
 
-        //- Flag to write the eddies to file
-        bool writeEddies_;
+            //- Flag to write the eddies to file
+            bool writeEddies_;
 
 
     // Private Member Functions
 
+        //- Write Lumley coefficients to file
+        void writeLumleyCoeffs() const;
+
+        //- Write eddy info in OBJ format
+        void writeEddyOBJ() const;
+
         //- Initialise info for patch point search
         void initialisePatch();
 
@@ -231,37 +273,11 @@ class turbulentDFSEMInletFvPatchVectorField
         //- Initialise eddies
         void initialiseEddies();
 
-        //- Convect the eddies
-        void convectEddies(const scalar deltaT);
-
-        //- Calculate the velocity fluctuation at a point
-        vector uDashEddy(const List<eddy>& eddies, const point& globalX) const;
-
-        //- Helper function to interpolate values from the boundary data or
-        //- read from dictionary
-        template<class Type>
-        tmp<Field<Type>> interpolateOrRead
-        (
-            const word& fieldName,
-            const dictionary& dict,
-            bool& interpolateField
-        ) const;
-
-        //- Helper function to interpolate values from the boundary data
-        template<class Type>
-        tmp<Field<Type>> interpolateBoundaryData
-        (
-            const word& fieldName
-        ) const;
-
-        //- Write Lumley coefficients to file
-        void writeLumleyCoeffs() const;
-
-        //- Write eddy info in OBJ format
-        void writeEddyOBJ() const;
+        //- Convect the eddies with the bulk velocity
+        void convectEddies(const vector& UBulk, const scalar deltaT);
 
-        //- Return a reference to the patch mapper object
-        const pointToPointPlanarInterpolation& patchMapper() const;
+        //- Return velocity fluctuation vector at a given point
+        vector uPrimeEddy(const List<eddy>& eddies, const point& globalX) const;
 
         //- Return eddies from remote processors that interact with local
         //- processor
@@ -345,11 +361,11 @@ public:
 
     // Member Functions
 
-        //- Helper function to check that Reynold stresses are valid
+        //- Return true if input Reynold stresses are valid
         static bool checkStresses(const symmTensorField& Rf);
 
 
-        // Mapping functions
+        // Mapping
 
             //- Map (and resize as needed) from self given a mapping object
             virtual void autoMap(const fvPatchFieldMapper& m);
@@ -362,14 +378,16 @@ public:
             );
 
 
-        // Evaluation functions
+        // Evaluation
 
             //- Update the coefficients associated with the patch field
             virtual void updateCoeffs();
 
 
-        //- Write
-        virtual void write(Ostream&) const;
+        // IO
+
+            //- Write
+            virtual void write(Ostream&) const;
 };
 
 
@@ -379,12 +397,6 @@ public:
 
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-#ifdef NoRepository
-    #include "turbulentDFSEMInletFvPatchVectorFieldTemplates.C"
-#endif
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
 #endif
 
 // ************************************************************************* //
diff --git a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorFieldTemplates.C b/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorFieldTemplates.C
deleted file mode 100644
index 4bf5477d8493238b1fcc3e224d7a71722ea81657..0000000000000000000000000000000000000000
--- a/src/finiteVolume/fields/fvPatchFields/derived/turbulentDFSEMInlet/turbulentDFSEMInletFvPatchVectorFieldTemplates.C
+++ /dev/null
@@ -1,109 +0,0 @@
-/*---------------------------------------------------------------------------*\
-  =========                 |
-  \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox
-   \\    /   O peration     |
-    \\  /    A nd           | www.openfoam.com
-     \\/     M anipulation  |
--------------------------------------------------------------------------------
-    Copyright (C) 2015 OpenFOAM Foundation
-    Copyright (C) 2016-2020 OpenCFD Ltd
--------------------------------------------------------------------------------
-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/>.
-
-\*---------------------------------------------------------------------------*/
-
-#include "pointToPointPlanarInterpolation.H"
-#include "Time.H"
-#include "rawIOField.H"
-
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-template<class Type>
-Foam::tmp<Foam::Field<Type>>
-Foam::turbulentDFSEMInletFvPatchVectorField::interpolateOrRead
-(
-    const word& fieldName,
-    const dictionary& dict,
-    bool& interpolateField
-) const
-{
-    if (dict.found(fieldName))
-    {
-        tmp<Field<Type>> tFld
-        (
-            new Field<Type>
-            (
-                fieldName,
-                dict,
-                this->patch().size()
-            )
-        );
-
-        interpolateField = false;
-        return tFld;
-    }
-    else
-    {
-        interpolateField = true;
-        return interpolateBoundaryData<Type>(fieldName);
-    }
-}
-
-
-template<class Type>
-Foam::tmp<Foam::Field<Type>>
-Foam::turbulentDFSEMInletFvPatchVectorField::interpolateBoundaryData
-(
-    const word& fieldName
-) const
-{
-    const word& patchName = this->patch().name();
-
-    const fileName valsFile
-    (
-        fileName
-        (
-            this->db().time().globalPath()
-           /this->db().time().constant()
-           /"boundaryData"
-           /patchName
-           /"0"
-           /fieldName
-        )
-    );
-
-    IOobject io
-    (
-        valsFile,   // absolute path
-        this->db().time(),
-        IOobject::MUST_READ,
-        IOobject::NO_WRITE,
-        false,              // no need to register
-        true                // is global object (currently not used)
-    );
-
-    const rawIOField<Type> vals(io, false);
-
-    Info<< "Turbulent DFSEM patch " << patchName
-        << ": interpolating field " << fieldName
-        << " from " << valsFile << endl;
-
-    return patchMapper().interpolate(vals);
-}
-
-
-// ************************************************************************* //
diff --git a/src/meshTools/PatchFunction1/MappedFile/MappedFile.C b/src/meshTools/PatchFunction1/MappedFile/MappedFile.C
index 3a1b28f19e910e0598f87448278fd03364d835e5..787cde62b5eb0533f09136ae5a96fc1bcd8204f2 100644
--- a/src/meshTools/PatchFunction1/MappedFile/MappedFile.C
+++ b/src/meshTools/PatchFunction1/MappedFile/MappedFile.C
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2018-2020 OpenCFD Ltd.
+    Copyright (C) 2018-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -175,8 +175,13 @@ void Foam::PatchFunction1Types::MappedFile<Type>::autoMap
     if (startSampledValues_.size())
     {
         startSampledValues_.autoMap(mapper);
+    }
+
+    if (endSampledValues_.size())
+    {
         endSampledValues_.autoMap(mapper);
     }
+
     // Clear interpolator
     mapperPtr_.clear();
     startSampleTime_ = -1;
@@ -196,8 +201,17 @@ void Foam::PatchFunction1Types::MappedFile<Type>::rmap
     const PatchFunction1Types::MappedFile<Type>& tiptf =
         refCast<const PatchFunction1Types::MappedFile<Type>>(pf1);
 
-    startSampledValues_.rmap(tiptf.startSampledValues_, addr);
-    endSampledValues_.rmap(tiptf.endSampledValues_, addr);
+    if (tiptf.startSampledValues_.size())
+    {
+        startSampledValues_.setSize(this->size());
+        startSampledValues_.rmap(tiptf.startSampledValues_, addr);
+    }
+
+    if (tiptf.endSampledValues_.size())
+    {
+        endSampledValues_.setSize(this->size());
+        endSampledValues_.rmap(tiptf.endSampledValues_, addr);
+    }
 
     // Clear interpolator
     mapperPtr_.clear();
@@ -584,27 +598,11 @@ Foam::PatchFunction1Types::MappedFile<Type>::integrate
 
 
 template<class Type>
-void Foam::PatchFunction1Types::MappedFile<Type>::writeData
+void Foam::PatchFunction1Types::MappedFile<Type>::writeEntries
 (
     Ostream& os
 ) const
 {
-    PatchFunction1<Type>::writeData(os);
-
-    // Check if field name explicitly provided
-    // (e.g. through timeVaryingMapped bc)
-    if (dictConstructed_)
-    {
-        os.writeEntry(this->name(), type());
-
-        os.writeEntryIfDifferent
-        (
-            "fieldTable",
-            this->name(),
-            fieldTableName_
-        );
-    }
-
     if (setAverage_)
     {
         os.writeEntry("setAverage", setAverage_);
@@ -628,4 +626,36 @@ void Foam::PatchFunction1Types::MappedFile<Type>::writeData
 }
 
 
+template<class Type>
+void Foam::PatchFunction1Types::MappedFile<Type>::writeData
+(
+    Ostream& os
+) const
+{
+    PatchFunction1<Type>::writeData(os);
+
+    // Check if field name explicitly provided
+    // (e.g. through timeVaryingMapped bc)
+    if (dictConstructed_)
+    {
+        os.writeEntry(this->name(), type());
+
+        os.writeEntryIfDifferent
+        (
+            "fieldTable",
+            this->name(),
+            fieldTableName_
+        );
+
+        os.beginBlock(word(this->name() + "Coeffs"));
+        writeEntries(os);
+        os.endBlock();
+    }
+    else
+    {
+        writeEntries(os);
+    }
+}
+
+
 // ************************************************************************* //
diff --git a/src/meshTools/PatchFunction1/MappedFile/MappedFile.H b/src/meshTools/PatchFunction1/MappedFile/MappedFile.H
index 79adeb448ec775ac84130068b289aec928d255f1..4ac1fc917f8d88b3bcf8284c546802db3909b31a 100644
--- a/src/meshTools/PatchFunction1/MappedFile/MappedFile.H
+++ b/src/meshTools/PatchFunction1/MappedFile/MappedFile.H
@@ -5,7 +5,7 @@
     \\  /    A nd           | www.openfoam.com
      \\/     M anipulation  |
 -------------------------------------------------------------------------------
-    Copyright (C) 2018-2020 OpenCFD Ltd.
+    Copyright (C) 2018-2021 OpenCFD Ltd.
 -------------------------------------------------------------------------------
 License
     This file is part of OpenFOAM.
@@ -27,19 +27,34 @@ Class
     Foam::PatchFunction1Types::MappedFile
 
 Description
-    Patch value mapping from file
+    Patch value mapping from a set of values stored in a file and
+    a set of unstructured points using the following directory structure:
+
+    \verbatim
+        constant/boundaryData/\<patchName\>/points
+        constant/boundaryData/\<patchName\>/\<time\>/\<field\>
+    \endverbatim
 
     Options:
     \table
-        Property | Description                              | Required | Default
-        mapMethod | (nearest/planarInterpolation)    | no | planarInterpolation
-        offset   | Time-varying offset values to interpolated data | no |
-        fieldTable | Name of field data table               | no  | field-name
-        points   | The name of the points file              | no  | points
-        perturb  | Perturbation fraction of bounding box    | no  | 1e-5
-        setAverage | adjust mapped field to maintain average value | no  | false
+      Property  | Description                       | Type  | Reqd | Deflt
+      mapMethod | Mapping method                    | word  | no   <!--
+                -->                                 | planarInterpolation
+      offset    | Time-varying offset values to interpolated data  <!--
+                -->                    | Function1\<Type\>  | no   | -
+      fieldTable | Name of field data table         | word  | no   | field-name
+      points   | Name of the points file            | word  | no   | points
+      perturb  | Perturbation fraction of bounding box | scalar    | no  | 1e-5
+      setAverage | Adjust mapped field to maintain average value   <!--
+                -->                                 | scalar | no  | false
     \endtable
 
+    Options for the \c mapMethod entry:
+    \verbatim
+      nearest               | Use nearest points only (avoids triangulation)
+      planarInterpolation   | Interpolation using 2D Delaunay triangulation
+    \endverbatim
+
 SourceFiles
     MappedFile.C
 
@@ -229,6 +244,9 @@ public:
 
         // I-O
 
+            //- Write coefficient entries in dictionary format
+            void writeEntries(Ostream& os) const;
+
             //- Write in dictionary format
             virtual void writeData(Ostream& os) const;
 };
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/Allrun b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/Allrun
deleted file mode 100755
index 044ebd37095d7a7e615dd936fc20032e2f8f4289..0000000000000000000000000000000000000000
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/Allrun
+++ /dev/null
@@ -1,16 +0,0 @@
-#!/bin/sh
-cd "${0%/*}" || exit                                # Run from this directory
-. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
-#------------------------------------------------------------------------------
-
-runApplication blockMesh
-
-#- Run serial
-#runApplication $(getApplication)
-
-#- Run parallel
-runApplication decomposePar -cellDist
-runParallel $(getApplication)
-#runApplication reconstructPar -latestTime
-
-#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/README b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/README
deleted file mode 100644
index 5763359c07b25ba617509f51e15b742ae72b1fed..0000000000000000000000000000000000000000
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/README
+++ /dev/null
@@ -1,18 +0,0 @@
-Channel test case for ReTau=395,based on the reference:
-
-    Poletto, R., Craft, T., and Revell, A.,
-    "A New Divergence Free Synthetic Eddy Method for the
-    Reproduction of Inlet Flow Conditions for LES",
-    Flow Turbulence Combust (2013) 91:519-539
-
-
-Inlet patch Reynolds stress, velocity and turbulence length scale data has been
-extracted from DNS data of:
-
-    Moser, Kim & Mansour
-    "DNS of Turbulent Channel Flow up to Re_tau=590",
-    Physics of Fluids (1999) vol 11, 943-945.
-
-Data available from (last checked 28 June 2016)
-
-    http://turbulence.ices.utexas.edu/MKM_1999.html
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/0/L b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/0/L
deleted file mode 100644
index 9c6e3ab67d541f7b64a113dcdafdf89d88f6c5d4..0000000000000000000000000000000000000000
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/0/L
+++ /dev/null
@@ -1,259 +0,0 @@
-(
-0
-1.76693e-06
-1.06447e-07
-2.85582e-08
-1.73393e-08
-3.56243e-08
-3.79499e-08
-1.50479e-07
-1.55614e-07
-1.93408e-07
-4.50118e-08
-2.6295e-10
-6.18128e-08
-4.4709e-08
-5.98657e-07
-2.25711e-06
-4.20946e-06
-6.292e-06
-7.5414e-06
-9.02814e-06
-1.04737e-05
-1.25187e-05
-1.37559e-05
-1.40338e-05
-1.24681e-05
-1.08272e-05
-9.10144e-06
-7.81661e-06
-6.08627e-06
-4.68729e-06
-3.01241e-06
-1.93855e-06
-1.03945e-06
-2.49601e-07
-2.33919e-07
-3.47823e-08
-3.05604e-06
-8.25413e-06
-1.04748e-05
-1.36651e-05
-2.35252e-05
-3.87371e-05
-5.21582e-05
-6.71737e-05
-6.89399e-05
-4.57512e-05
-1.94891e-05
-9.7778e-06
-1.47858e-05
-3.40409e-05
-6.06823e-05
-8.59513e-05
-8.29571e-05
-5.42278e-05
-3.46015e-05
-2.20432e-05
-1.73878e-05
-1.05749e-05
-4.67814e-06
-8.66793e-06
-1.79361e-05
-1.22464e-05
-3.93103e-06
-1.00778e-06
-1.81983e-06
-2.70815e-05
-9.56468e-05
-0.000139304
-0.00012493
-9.50459e-05
-4.78307e-05
-8.71962e-06
-1.24275e-05
-4.91383e-05
-8.77264e-05
-0.000114449
-0.00014567
-0.000201758
-0.000251863
-0.000272594
-0.000213599
-0.000145126
-0.000115603
-0.000122779
-0.000116865
-8.36843e-05
-4.06009e-05
-3.49149e-05
-5.22978e-05
-5.07525e-05
-2.5995e-05
-2.6683e-06
-9.29144e-06
-1.14821e-05
-9.41939e-06
-1.01946e-05
-6.64024e-06
-1.1913e-06
-3.25066e-06
-8.47834e-06
-1.42023e-06
-4.30742e-05
-0.000106228
-0.000115468
-9.07632e-05
-7.04511e-05
-9.21776e-05
-0.000104486
-0.000111678
-0.000109852
-0.000111867
-9.10747e-05
-6.82206e-05
-4.09085e-05
-2.3961e-05
-2.0467e-06
-7.74345e-06
-1.66716e-05
-1.54967e-05
-2.95089e-05
-4.82299e-05
-6.99781e-05
-7.16947e-05
-7.33475e-05
-7.40551e-05
-9.45846e-05
-0.000107202
-0.000120068
-0.000122517
-0.000120068
-0.000107202
-9.45846e-05
-7.40551e-05
-7.33475e-05
-7.16947e-05
-6.99781e-05
-4.82299e-05
-2.95089e-05
-1.54967e-05
-1.66716e-05
-7.74345e-06
-2.0467e-06
-2.3961e-05
-4.09085e-05
-6.82206e-05
-9.10747e-05
-0.000111867
-0.000109852
-0.000111678
-0.000104486
-9.21776e-05
-7.04511e-05
-9.07632e-05
-0.000115468
-0.000106228
-4.30742e-05
-1.42023e-06
-8.47834e-06
-3.25066e-06
-1.1913e-06
-6.64024e-06
-1.01946e-05
-9.41939e-06
-1.14821e-05
-9.29144e-06
-2.6683e-06
-2.5995e-05
-5.07525e-05
-5.22978e-05
-3.49149e-05
-4.06009e-05
-8.36843e-05
-0.000116865
-0.000122779
-0.000115603
-0.000145126
-0.000213599
-0.000272594
-0.000251863
-0.000201758
-0.00014567
-0.000114449
-8.77264e-05
-4.91383e-05
-1.24275e-05
-8.71962e-06
-4.78307e-05
-9.50459e-05
-0.00012493
-0.000139304
-9.56468e-05
-2.70815e-05
-1.81983e-06
-1.00778e-06
-3.93103e-06
-1.22464e-05
-1.79361e-05
-8.66793e-06
-4.67814e-06
-1.05749e-05
-1.73878e-05
-2.20432e-05
-3.46015e-05
-5.42278e-05
-8.29571e-05
-8.59513e-05
-6.06823e-05
-3.40409e-05
-1.47858e-05
-9.7778e-06
-1.94891e-05
-4.57512e-05
-6.89399e-05
-6.71737e-05
-5.21582e-05
-3.87371e-05
-2.35252e-05
-1.36651e-05
-1.04748e-05
-8.25413e-06
-3.05604e-06
-3.47823e-08
-2.33919e-07
-2.49601e-07
-1.03945e-06
-1.93855e-06
-3.01241e-06
-4.68729e-06
-6.08627e-06
-7.81661e-06
-9.10144e-06
-1.08272e-05
-1.24681e-05
-1.40338e-05
-1.37559e-05
-1.25187e-05
-1.04737e-05
-9.02814e-06
-7.5414e-06
-6.292e-06
-4.20946e-06
-2.25711e-06
-5.98657e-07
-4.4709e-08
-6.18128e-08
-2.6295e-10
-4.50118e-08
-1.93408e-07
-1.55614e-07
-1.50479e-07
-3.79499e-08
-3.56243e-08
-1.73393e-08
-2.85582e-08
-1.06447e-07
-1.76693e-06
-0
-)
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/transportProperties b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/transportProperties
deleted file mode 100644
index 59b97fc4a86aabcb65d4cf00d9f42102ac111d83..0000000000000000000000000000000000000000
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/transportProperties
+++ /dev/null
@@ -1,31 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v2012                                 |
-|   \\  /    A nd           | Website:  www.openfoam.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "constant";
-    object      transportProperties;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-transportModel  Newtonian;
-
-// Re_tau = u_tau L / nu
-// Re_tau = 395
-// L = half channel height = 1
-// Ubulk/u_tau = 17.55
-// U_bulk = 17.55 -> u_tau = 1
-// -> nu = 1*1/395 = 2.532e-3
-
-nu              2.532e-3;
-
-
-
-// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/controlDict b/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/controlDict
deleted file mode 100644
index 2e0e3f8c4e1c9e54e1680046cd3a040c2aca5940..0000000000000000000000000000000000000000
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/controlDict
+++ /dev/null
@@ -1,127 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v2012                                 |
-|   \\  /    A nd           | Website:  www.openfoam.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       dictionary;
-    location    "system";
-    object      controlDict;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-application     pimpleFoam;
-
-startFrom       startTime;
-
-startTime       0;
-
-stopAt          endTime;
-
-endTime         85;
-
-deltaT          4e-3;
-
-writeControl    timeStep;
-
-writeInterval   25;
-
-purgeWrite      10;
-
-writeFormat     ascii;
-
-writePrecision  6;
-
-writeCompression off;
-
-timeFormat      general;
-
-timePrecision   6;
-
-runTimeModifiable true;
-
-// Allow 10% run-up before calculating mean
-timeStart       #eval{ 0.1 * ${/endTime} };
-
-
-functions
-{
-    Q1
-    {
-        type            Q;
-        libs            (fieldFunctionObjects);
-        writeControl    writeTime;
-    }
-    vorticity1
-    {
-        type            vorticity;
-        libs            (fieldFunctionObjects);
-        writeControl    writeTime;
-    }
-    yPlus
-    {
-        type            yPlus;
-        libs            (fieldFunctionObjects);
-        writeControl    writeTime;
-    }
-    LambVector1
-    {
-        type            LambVector;
-        libs            (fieldFunctionObjects);
-        writeControl    writeTime;
-        field           U;
-    }
-    div1
-    {
-        type            div;
-        libs            (fieldFunctionObjects);
-        writeControl    writeTime;
-        field           LambVector;
-    }
-    fieldAverage1
-    {
-        type            fieldAverage;
-        libs            (fieldFunctionObjects);
-        writeControl    writeTime;
-        timeStart       ${/timeStart};
-
-        fields
-        (
-            U
-            {
-                mean        on;
-                prime2Mean  on;
-                base        time;
-            }
-
-            p
-            {
-                mean        on;
-                prime2Mean  on;
-                base        time;
-            }
-
-            LambVector
-            {
-                mean        on;
-                prime2Mean  off;
-                base        time;
-            }
-
-            div(LambVector)
-            {
-                mean        on;
-                prime2Mean  off;
-                base        time;
-            }
-        );
-    }
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/Allclean b/tutorials/incompressible/pimpleFoam/LES/planeChannel/Allclean
similarity index 76%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/Allclean
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/Allclean
index 3d330958d1a0d6bd3f29fa188906c953ce8af3f1..eeacff1e29f6ba1c09c13c0a0f4eab5a699dc8db 100755
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/Allclean
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/Allclean
@@ -5,10 +5,10 @@ cd "${0%/*}" || exit                                # Run from this directory
 
 cleanCase0
 
-rm -f system/controlDict
-rm -rf constant/boundaryData/inlet
+rm -rf 0.orig
+rm -rf constant
+rm -rf system
 rm -rf results
-rm -f *.png
-rm -f constant/{R*,points*,UMean*}
+rm -rf plots
 
 #------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/Allrun b/tutorials/incompressible/pimpleFoam/LES/planeChannel/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..362ed042d5633cd377651bbe9d630068eff840ca
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/Allrun
@@ -0,0 +1,121 @@
+#!/bin/sh
+cd "${0%/*}" || exit                                # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions
+#------------------------------------------------------------------------------
+
+# settings
+
+    # operand setups
+    setups="
+    DFSEM
+    "
+
+    # flag to enable computations in parallel mode
+    parallel=true
+
+
+#------------------------------------------------------------------------------
+
+#######################################
+# Collect results into a given path
+# and clean the case for the next run
+# Arguments:
+#    $1 = Path to move results
+# Outputs:
+#    Writes info to stdout
+#######################################
+collect() {
+
+    [ $# -eq 0 ] && { echo "Usage: $0 dir-model"; exit 1; }
+
+    collection="$1"
+
+    dirResult=results/"$collection"
+    dirSettings="$dirResult"/settings
+
+    if [ ! -d "$dirResult" ]
+    then
+
+        echo "      # Collecting results and settings into $dirResult"
+
+        mkdir -p "$dirResult"
+        mkdir -p "$dirSettings"
+
+        mv -f $(foamListTimes) "$dirResult"
+        [ -d postProcessing ] && mv -f postProcessing "$dirResult"
+        [ -d processor0 ] && mv -f processor* "$dirResult"
+        mv -f log.* "$dirResult"
+        cp -f system/{fv*,controlDict} constant/*Properties "$dirSettings"
+        mv -f 0/ "$dirSettings"
+
+        echo "      # Cleaning up the case"
+
+        cleanTimeDirectories
+        cleanPostProcessing
+
+    else
+
+        echo "      # Directory $dirResult already exists"
+        echo "      # Skipping the computation"
+
+    fi
+}
+
+
+#------------------------------------------------------------------------------
+
+for setup in $setups
+do
+
+    echo ""
+    echo "# Computations for the setup: $setup"
+    echo ""
+
+    dirSetup="setups.orig/$setup"
+    cp -rfL "$dirSetup/0.orig" .
+    cp -rfL "$dirSetup/constant" .
+    cp -rfL "$dirSetup/system" .
+    cp -rf 0.orig/ 0/
+
+    if [ ! -d constant/polyMesh ]
+    then
+
+        runApplication blockMesh
+
+        runApplication renumberMesh -overwrite -constant
+
+        runApplication checkMesh -allTopology -allGeometry -constant
+
+    fi
+
+    if [ "$parallel" = true ]
+    then
+
+        runApplication decomposePar
+
+        runParallel $(getApplication)
+
+        runApplication reconstructPar
+
+    else
+
+        runApplication $(getApplication)
+
+    fi
+
+    runApplication -s columnAverage \
+        postProcess -func columnAverage -latestTime
+
+    runApplication -s sample \
+        postProcess -func sample -latestTime
+
+    runApplication -s skinFriction \
+        postProcess -func sampleCf -latestTime
+
+    collect "$setup"
+
+done
+
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/plot b/tutorials/incompressible/pimpleFoam/LES/planeChannel/plot
new file mode 100755
index 0000000000000000000000000000000000000000..285e04a8a903d83e9f8bebe1f1c0b7a52ecd3865
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/plot
@@ -0,0 +1,607 @@
+#!/bin/sh
+cd "${0%/*}" || exit                        # Run from this directory
+#------------------------------------------------------------------------------
+
+# settings
+
+    # operand setups
+    setups="
+    DFSEM
+    "
+
+
+#------------------------------------------------------------------------------
+
+plot_R_vs_y() {
+
+    setup="$1"
+    endTime="$2"
+
+    # benchmarkFile="ReTau-395/dataset/chan395.reystress"
+
+    n=0
+    m=0
+    for l in {1..11}
+    do
+        m=$(($m+5))
+        sampleFiles[$n]="results/$setup/postProcessing/sample/$endTime/l${m}_columnAverage:columnAverage(UPrime2Mean).xy"
+        n=$(($n+1))
+    done
+
+    image="plots/$setup/Ruu_vs_y.png"
+
+    gnuplot<<PLT_RUU_VS_Y
+    set terminal pngcairo font "helvetica,20" size 5000, 1000
+    set grid
+    set xrange [0:8]
+    set yrange [0:1]
+    set key right top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "R_{uu} [m^2/s^2]"
+    set ylabel "y/h [-]"
+    set output "$image"
+    set multiplot layout 1,11 title "Setup: $setup" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark ="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples="${sampleFiles[*]}"
+        list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
+
+    do for [i = 1:11] {
+        if (i != 1) { unset ylabel }
+        plot \
+            word(samples, i) u 2:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
+            # benchmark  every 4 u 3:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+    }
+
+    unset multiplot
+    unset output
+PLT_RUU_VS_Y
+
+    image="plots/$setup/Rvv_vs_y.png"
+
+    gnuplot<<PLT_RVV_VS_Y
+    set terminal pngcairo font "helvetica,20" size 5000, 1000
+    set grid
+    set xrange [0:1]
+    set yrange [0:1]
+    set key right top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "R_{vv} [m^2/s^2]"
+    set ylabel "y/h [-]"
+    set output "$image"
+    set multiplot layout 1,11 title "Setup: $setup" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples="${sampleFiles[*]}"
+        list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
+
+    do for [i = 1:11] {
+        if (i != 1) { unset ylabel }
+        plot \
+            word(samples, i) u 5:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
+            # benchmark every 4 u 4:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+    }
+
+    unset multiplot
+    unset output
+PLT_RVV_VS_Y
+
+    image="plots/$setup/Rww_vs_y.png"
+
+    gnuplot<<PLT_RWW_VS_Y
+    set terminal pngcairo font "helvetica,20" size 5000, 1000
+    set grid
+    set xrange [0:1.8]
+        set xtics 1.8/4
+    set yrange [0:1]
+    set key right top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "R_{ww} [m^2/s^2]"
+    set ylabel "y/h [-]"
+    set output "$image"
+    set multiplot layout 1,11 title "Setup: $setup" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples="${sampleFiles[*]}"
+        list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
+
+    do for [i = 1:11] {
+        if (i != 1) { unset ylabel }
+        plot \
+            word(samples, i) u 7:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
+            # benchmark every 4 u 5:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+    }
+
+    unset multiplot
+    unset output
+PLT_RWW_VS_Y
+
+    image="plots/$setup/Ruv_vs_y.png"
+
+    gnuplot<<PLT_RUV_VS_Y
+    set terminal pngcairo font "helvetica,20" size 5000, 1000
+    set grid
+    set xrange [0:1]
+    set yrange [0:1]
+    set key right top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "R_{uv} [m^2/s^2]"
+    set ylabel "y/h [-]"
+    set output "$image"
+    set multiplot layout 1,11 title "Setup: $setup" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples="${sampleFiles[*]}"
+        list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
+
+    do for [i = 1:11] {
+        if (i != 1) { unset ylabel }
+        plot \
+            word(samples, i) u (-\$3):1 t word(list, i) w l lw 2 lc rgb "#4169e1"
+            # benchmark every 4 u (-\$6):1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+    }
+
+    unset multiplot
+    unset output
+PLT_RUV_VS_Y
+}
+
+
+plot_U_vs_y() {
+
+    setup="$1"
+    endTime="$2"
+
+    # benchmarkFile="ReTau-395/dataset/chan395.means"
+
+    n=0
+    m=0
+    for l in {1..11}
+    do
+        m=$(($m+5))
+        sampleFiles[$n]="results/$setup/postProcessing/sample/$endTime/l${m}_columnAverage:columnAverage(UMean).xy"
+        n=$(($n+1))
+    done
+
+    image="plots/$setup/u_vs_y.png"
+
+    gnuplot<<PLT_U_VS_Y
+    set terminal pngcairo font "helvetica,20" size 5000, 1000
+    set grid
+    set xrange [0:25]
+    set yrange [0:1]
+    set key left top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "u [m/s]"
+    set ylabel "y/h [-]"
+    set output "$image"
+    set multiplot layout 1,11 title "Setup: $setup" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples="${sampleFiles[*]}"
+        list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
+
+    do for [i = 1:11] {
+        if (i != 1) { unset ylabel }
+        plot \
+            word(samples, i) u 2:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
+            # benchmark every 4 u 3:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+    }
+
+    unset multiplot
+    unset output
+PLT_U_VS_Y
+
+    image="plots/$setup/v_vs_y.png"
+
+    gnuplot<<PLT_V_VS_Y
+    set terminal pngcairo font "helvetica,20" size 5000, 1000
+    set grid
+    set yrange [0:1]
+    set key left top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "v [m/s]"
+    set ylabel "y/h [-]"
+    set output "$image"
+    set multiplot layout 1,11 title "Setup: $setup" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples="${sampleFiles[*]}"
+        list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
+
+    do for [i = 1:11] {
+        if (i != 1) { unset ylabel }
+        plot \
+            word(samples, i) u 3:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
+            # benchmark every 4 u 5:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+    }
+
+    unset multiplot
+    unset output
+PLT_V_VS_Y
+
+    image="plots/$setup/w_vs_y.png"
+
+    gnuplot<<PLT_W_VS_Y
+    set terminal pngcairo font "helvetica,20" size 5000, 1000
+    set grid
+    set yrange [0:1]
+    set key left top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "w [m/s]"
+    set ylabel "y/h [-]"
+    set output "$image"
+    set multiplot layout 1,11 title "Setup: $setup" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples="${sampleFiles[*]}"
+        list="5h 10h 15h 20h 25h 30h 35h 40h 45h 50h 55h"
+
+    do for [i = 1:11] {
+        if (i != 1) { unset ylabel }
+        plot \
+            word(samples, i) u 4:1 t word(list, i) w l lw 2 lc rgb "#4169e1"
+            # benchmark every 4 u 5:1 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+    }
+
+    unset multiplot
+    unset output
+PLT_W_VS_Y
+}
+
+
+plot_x_vs_cf() {
+
+    setup="$1"
+    endTime="$2"
+
+    #benchmarkFile=N/A
+    sampleFile="results/$setup/postProcessing/sampleCf/$endTime/planeAA_CfMean.xy"
+    image="plots/$setup/x_vs_cf.png"
+
+    gnuplot<<PLT_X_VS_CF
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set xrange [0:60]
+    set yrange [0:0.01]
+    set key right top
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "x/h [-]"
+    set ylabel "C_f"
+    set output "$image"
+
+    # OpenFOAM - Numerical
+        samples="$sampleFile"
+
+    plot samples u 1:4 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+PLT_X_VS_CF
+}
+
+
+plot_yPlus_vs_u() {
+
+    setup="$1"
+    endTime="$2"
+    nu="$3"
+
+    # benchmarkFile="ReTau-395/dataset/chan395.means"
+    sampleFile_patch="results/$setup/postProcessing/sample/$endTime/inletPatch_columnAverage:columnAverage(UMean).xy"
+    sampleFile_cell="results/$setup/postProcessing/sample/$endTime/inletCell_columnAverage:columnAverage(UMean).xy"
+    image_patch="plots/$setup/yPlus_vs_u_patch.png"
+    image_cell="plots/$setup/yPlus_vs_u_cell.png"
+
+    gnuplot<<PLT_Y_VS_U
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set xrange [0:395]
+    set yrange [0:20]
+    set logscale x
+    set key left top reverse
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "y^+"
+    set ylabel "u [m/s]"
+    set output "$image_patch"
+    set title "Setup: $setup (inlet patch face)" noenhanced
+
+    # Benchmark - Experimental
+        # benchmark="$benchmarkFile"
+
+    # OpenFOAM - Numerical
+        samples_patch="$sampleFile_patch"
+        samples_cell="$sampleFile_cell"
+
+    plot \
+        samples_patch u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:3 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+
+    set output "$image_cell"
+    set title "Setup: $setup (inlet patch cell)" noenhanced
+    plot \
+        samples_cell u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:3 t "DNS" w p ps 2 pt 7 lc rgb "#D55E00"
+PLT_Y_VS_U
+}
+
+
+plot_yPlus_vs_R_patch() {
+
+    setup="$1"
+    endTime="$2"
+    nu="$3"
+
+    # benchmarkFile="ReTau-395/dataset/chan395.reystress"
+    sampleFile="results/$setup/postProcessing/sample/$endTime/inletPatch_columnAverage:columnAverage(UPrime2Mean).xy"
+    imageUU="plots/$setup/yPlus_vs_Ruu_patch.png"
+    imageVV="plots/$setup/yPlus_vs_Rvv_patch.png"
+    imageWW="plots/$setup/yPlus_vs_Rww_patch.png"
+    imageUV="plots/$setup/yPlus_vs_Ruv_patch.png"
+
+    gnuplot<<PLT_Y_VS_R_PATCH
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set xrange [0:395]
+    set yrange [-1:8]
+    set logscale x
+    set key top right
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "y^+"
+    set ylabel "(uu)^+"
+    set output "$imageUU"
+    set title "Setup: $setup (inlet patch face)" noenhanced
+
+    # Benchmark - DNS
+        # benchmark = "$benchmarkFile"
+
+    # Samples - OpenFOAM
+        samples="$sampleFile"
+
+    plot \
+        samples u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:3 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+
+    set output "$imageVV"
+    set ylabel "(vv)^+"
+    plot \
+        samples u (\$1/$nu):5 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:4 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+
+    set output "$imageWW"
+    set ylabel "(ww)^+"
+    plot \
+        samples u (\$1/$nu):7 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:5 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+
+    set output "$imageUV"
+    set ylabel "(uv)^+"
+    plot \
+        samples u (\$1/$nu):(-\$3) t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:(\$6*-1) t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+PLT_Y_VS_R_PATCH
+}
+
+
+plot_yPlus_vs_R_cell() {
+
+    setup="$1"
+    endTime="$2"
+    nu="$3"
+
+    endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
+    # benchmarkFile="ReTau-395/dataset/chan395.reystress"
+    sampleFile="results/$setup/postProcessing/sample/$endTime/inletCell_columnAverage:columnAverage(UPrime2Mean).xy"
+    imageUU="plots/$setup/yPlus_vs_Ruu_cell.png"
+    imageVV="plots/$setup/yPlus_vs_Rvv_cell.png"
+    imageWW="plots/$setup/yPlus_vs_Rww_cell.png"
+    imageUV="plots/$setup/yPlus_vs_Ruv_cell.png"
+
+    gnuplot<<PLT_Y_VS_R_CELL
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set xrange [0:395]
+    set yrange [-1:8]
+    set logscale x
+    set key top right
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "y^+"
+    set ylabel "(uu)^+"
+    set output "$imageUU"
+    set title "Setup: $setup (inlet patch cell)" noenhanced
+
+    # Benchmark - DNS
+        # benchmark = "$benchmarkFile"
+
+    # Samples - OpenFOAM
+        samples="$sampleFile"
+
+    plot \
+        samples u (\$1/$nu):2 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:3 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+
+    set output "$imageVV"
+    set ylabel "(vv)^+"
+    plot \
+        samples u (\$1/$nu):5 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:4 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+
+    set output "$imageWW"
+    set ylabel "(ww)^+"
+    plot \
+        samples u (\$1/$nu):7 t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:5 t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+
+    set output "$imageUV"
+    set ylabel "(uv)^+"
+    plot \
+        samples u (\$1/$nu):(-\$3) t "OpenFOAM" w l lw 2 lc rgb "#4169e1"
+        # benchmark u 2:(\$6*-1) t "DNS" w l lw 2 dt 2 lc rgb "#D55E00"
+PLT_Y_VS_R_CELL
+}
+
+
+plot_R_patch() {
+
+    setup="$1"
+    endTime="$2"
+
+    # benchmarkFile="ReTau-395/dataset/chan395.reystress"
+    sampleFile="results/$setup/postProcessing/sample/$endTime/inletPatch_columnAverage:columnAverage(UPrime2Mean).xy"
+    image="plots/$setup/R_patch.png"
+
+    gnuplot<<PLT_R_PATCH
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set key top right
+    set xrange [0:1]
+    set yrange [-1:8]
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "Channel height [m]"
+    set ylabel "<u_i^' u_i^'> [m^2/s^2]"
+    set offset .05, .05
+    set output "$image"
+    set title "Reynolds stresses on patch"
+
+    # Benchmark - DNS
+        # benchmark = "$benchmarkFile"
+
+    # Samples - OpenFOAM
+        samples="$sampleFile"
+
+    plot \
+        samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
+        samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
+        samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
+        samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
+        #benchmark u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
+        #benchmark u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
+        #benchmark u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
+        #benchmark u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
+PLT_R_PATCH
+}
+
+
+plot_R_cell() {
+
+    setup="$1"
+    endTime="$2"
+
+    # benchmarkFile="ReTau-395/dataset/chan395.reystress"
+    sampleFile="results/$setup/postProcessing/sample/$endTime/inletCell_columnAverage:columnAverage(UPrime2Mean).xy"
+    image="plots/$setup/R_cell.png"
+
+    gnuplot<<PLT_R_CELL
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set key top right
+    set xrange [0:1]
+    set yrange [-1:8]
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "Channel height [m]"
+    set ylabel "<u_i^' u_i^'> [m^2/s^2]"
+    set offset .05, .05
+    set output "$image"
+    set title "Reynolds stresses on cell"
+
+    # Benchmark - DNS
+        # benchmark = "$benchmarkFile"
+
+    # Samples - OpenFOAM
+        samples="$sampleFile"
+
+    plot \
+        samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
+        samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
+        samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
+        samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
+        #benchmark  u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
+        #benchmark  u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
+        #benchmark  u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
+        #benchmark  u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
+PLT_R_CELL
+}
+
+
+#------------------------------------------------------------------------------
+
+# Require gnuplot
+command -v gnuplot >/dev/null || {
+    echo "gnuplot not found - skipping graph creation" 1>&2
+    exit 1
+}
+
+# Check directory: "results"
+[ -d "results" ] || {
+    echo "No results directory found - skipping graph creation" 1>&2
+    exit 1
+}
+
+
+#------------------------------------------------------------------------------
+
+for setup in $setups
+do
+
+    echo ""
+    echo "# Plots for the setup: $setup"
+    echo ""
+
+    dirPlots="plots/$setup"
+    [ -d "$dirPlots" ] || mkdir -p "$dirPlots"
+
+    # few manipulations
+    endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
+    nu=$(foamDictionary results/$setup/settings/transportProperties -entry nu | sed 's|^.*\s\(.*\);|\1|g')
+
+    plot_yPlus_vs_u "$setup" "$endTime" "$nu"
+
+    plot_yPlus_vs_R_patch "$setup" "$endTime" "$nu"
+
+    plot_yPlus_vs_R_cell "$setup" "$endTime" "$nu"
+
+    plot_R_patch "$setup" "$endTime"
+
+    plot_R_cell "$setup" "$endTime"
+
+    plot_R_vs_y "$setup" "$endTime"
+
+    plot_U_vs_y "$setup" "$endTime"
+
+    plot_x_vs_cf "$setup" "$endTime"
+
+done
+
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/U b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/U
new file mode 100644
index 0000000000000000000000000000000000000000..8813ac716b4cc5fdd8865b0d2dee05e695201cd4
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/U
@@ -0,0 +1,67 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v2012                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       volVectorField;
+    object      U;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+dimensions      [0 1 -1 0 0 0 0];
+
+internalField   uniform (17.55 0 0);
+
+boundaryField
+{
+    inlet
+    {
+        type            turbulentDFSEMInlet;
+        delta           1;
+        U
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+        R
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+        L
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+
+        d               1;
+        nCellPerEddy    1;
+        scale           1;
+        value           $internalField;
+    }
+
+    outlet
+    {
+        type            advective;
+        value           $internalField;
+    }
+
+    "(bottom|top)"
+    {
+        type            noSlip;
+    }
+
+    "(left|right)"
+    {
+        type            cyclic;
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/nut b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/nut
new file mode 120000
index 0000000000000000000000000000000000000000..8186897dc1e524952025d143bc577da45c565816
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/nut
@@ -0,0 +1 @@
+../../common/0.orig/nut
\ No newline at end of file
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/p b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/p
new file mode 120000
index 0000000000000000000000000000000000000000..d1e1225671bd34ace34b88068ef438565d22d1b6
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/0.orig/p
@@ -0,0 +1 @@
+../../common/0.orig/p
\ No newline at end of file
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/L b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/L
new file mode 100644
index 0000000000000000000000000000000000000000..629a2101b30050e7e209aa2c140459e3a0fbed73
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/L
@@ -0,0 +1,259 @@
+(
+1.6760001447599677e-43
+1.0868009617044407e-08
+6.96632299316915e-07
+7.964006730807538e-06
+4.4886053894517664e-05
+0.00017142819717599743
+0.0005109590309958684
+0.001282137130408118
+0.0028356245991423275
+0.0056945923004052415
+0.010583536322306776
+0.018389090000706376
+0.029956201643692996
+0.04567240383684011
+0.06499017109073807
+0.0863645775310708
+0.10780875116479441
+0.12771755696515344
+0.1453567712304755
+0.16062365567853595
+0.17380736699507915
+0.18524165214197616
+0.19522234333586158
+0.20396794244081784
+0.21161151098126862
+0.2182925640222298
+0.22425210908087323
+0.22980954591037686
+0.2352612116306475
+0.24076016447211382
+0.24635042180862582
+0.25215417623227027
+0.2581319159366946
+0.2642162232341277
+0.2705976827635888
+0.2775262136577681
+0.2851339428170316
+0.29320770439789223
+0.30169588718043017
+0.3104960794811366
+0.3194954534280035
+0.3286450052926366
+0.3378100136077759
+0.3471174687143672
+0.3562151631412292
+0.36527552859716594
+0.37494504798108247
+0.38502865612338205
+0.3952322027438534
+0.40553467840927804
+0.41578800746270134
+0.4264058548357003
+0.43712919288926017
+0.44842576293128633
+0.46008767937618383
+0.4714866924807228
+0.4827246039731494
+0.49330673743341724
+0.5036846762826384
+0.5140216569857357
+0.5243625990429793
+0.5348735169176119
+0.5446788615067326
+0.5535535437038963
+0.5615373928208507
+0.5689987179058951
+0.5773301273285831
+0.5862857780666765
+0.5953526108855274
+0.6049390063729172
+0.6143870357093343
+0.6221292179475515
+0.6288137731042791
+0.6356831550607555
+0.6428919658813926
+0.6494740048271094
+0.6558426649799869
+0.6615093242166988
+0.6667263216815766
+0.6713265835399524
+0.6760870855398617
+0.6817697212117945
+0.6868490918716819
+0.6901331296539219
+0.6934577171362739
+0.6979552723619237
+0.7038154195965829
+0.7108862054012115
+0.7172470897092121
+0.7224010326710795
+0.727453975349662
+0.731494652619959
+0.7349775398199252
+0.7370734048228417
+0.737434256293814
+0.7365824697737319
+0.7350609217033188
+0.7329836659249739
+0.730256405839164
+0.7283242805479961
+0.726231012899943
+0.7235685746646292
+0.7213160623172862
+0.7194814238726635
+0.7166228475003421
+0.7120932098489855
+0.7068169772751501
+0.702036389755952
+0.697518544808241
+0.6937121394109932
+0.6904454421400188
+0.6866438800820893
+0.6818576320301258
+0.6766627824128105
+0.6727179770747246
+0.6689431320803964
+0.6631717982054145
+0.6561721428602678
+0.6481600843658191
+0.6405213608738373
+0.6341476825999275
+0.6280008937349648
+0.6214551987295783
+0.6145563256095296
+0.6071697457595765
+0.6005761440226519
+0.5951460432382282
+0.5923426315298634
+0.5915671133699071
+0.5923426315298634
+0.5951460432382282
+0.6005761440226519
+0.6071697457595765
+0.6145563256095296
+0.6214551987295783
+0.6280008937349648
+0.6341476825999275
+0.6405213608738373
+0.6481600843658191
+0.6561721428602678
+0.6631717982054145
+0.6689431320803964
+0.6727179770747246
+0.6766627824128105
+0.6818576320301258
+0.6866438800820893
+0.6904454421400188
+0.6937121394109932
+0.697518544808241
+0.702036389755952
+0.7068169772751501
+0.7120932098489855
+0.7166228475003421
+0.7194814238726635
+0.7213160623172862
+0.7235685746646292
+0.726231012899943
+0.7283242805479961
+0.730256405839164
+0.7329836659249739
+0.7350609217033188
+0.7365824697737319
+0.737434256293814
+0.7370734048228417
+0.7349775398199252
+0.731494652619959
+0.727453975349662
+0.7224010326710795
+0.7172470897092121
+0.7108862054012115
+0.7038154195965829
+0.6979552723619237
+0.6934577171362739
+0.6901331296539219
+0.6868490918716819
+0.6817697212117945
+0.6760870855398617
+0.6713265835399524
+0.6667263216815766
+0.6615093242166988
+0.6558426649799869
+0.6494740048271094
+0.6428919658813926
+0.6356831550607555
+0.6288137731042791
+0.6221292179475515
+0.6143870357093343
+0.6049390063729172
+0.5953526108855274
+0.5862857780666765
+0.5773301273285831
+0.5689987179058951
+0.5615373928208507
+0.5535535437038963
+0.5446788615067326
+0.5348735169176119
+0.5243625990429793
+0.5140216569857357
+0.5036846762826384
+0.49330673743341724
+0.4827246039731494
+0.4714866924807228
+0.46008767937618383
+0.44842576293128633
+0.43712919288926017
+0.4264058548357003
+0.41578800746270134
+0.40553467840927804
+0.3952322027438534
+0.38502865612338205
+0.37494504798108247
+0.36527552859716594
+0.3562151631412292
+0.3471174687143672
+0.3378100136077759
+0.3286450052926366
+0.3194954534280035
+0.3104960794811366
+0.30169588718043017
+0.29320770439789223
+0.2851339428170316
+0.2775262136577681
+0.2705976827635888
+0.2642162232341277
+0.2581319159366946
+0.25215417623227027
+0.24635042180862582
+0.24076016447211382
+0.2352612116306475
+0.22980954591037686
+0.22425210908087323
+0.2182925640222298
+0.21161151098126862
+0.20396794244081784
+0.19522234333586158
+0.18524165214197616
+0.17380736699507915
+0.16062365567853595
+0.1453567712304755
+0.12771755696515344
+0.10780875116479441
+0.0863645775310708
+0.06499017109073807
+0.04567240383684011
+0.029956201643692996
+0.018389090000706376
+0.010583536322306776
+0.0056945923004052415
+0.0028356245991423275
+0.001282137130408118
+0.0005109590309958684
+0.00017142819717599743
+4.4886053894517664e-05
+7.964006730807538e-06
+6.96632299316915e-07
+1.0868009617044407e-08
+1.6760001447599677e-43
+)
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/0/R b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/R
similarity index 100%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/0/R
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/R
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/0/U b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/U
similarity index 100%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/0/U
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/U
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/points b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/points
similarity index 100%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/boundaryData/inlet/points
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/boundaryData/inlet/points
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/transportProperties b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/transportProperties
new file mode 120000
index 0000000000000000000000000000000000000000..e6a4e4f7fc53f2c83e8fcde854665db55f6466d2
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/transportProperties
@@ -0,0 +1 @@
+../../common/constant/transportProperties
\ No newline at end of file
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/turbulenceProperties b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/turbulenceProperties
new file mode 120000
index 0000000000000000000000000000000000000000..f9d514a2f3f6ca0865f5abfdc16e644e105946cf
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/constant/turbulenceProperties
@@ -0,0 +1 @@
+../../common/constant/turbulenceProperties
\ No newline at end of file
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/system b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/system
new file mode 120000
index 0000000000000000000000000000000000000000..8ed134fc8c3dea35c0e4c947813c3944918cd293
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/DFSEM/system
@@ -0,0 +1 @@
+../common/system/
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/nut b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/0.orig/nut
similarity index 94%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/nut
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/0.orig/nut
index 86ae3bf1ce32cec9a55c1e27c298ad06affadb19..c373efb05d4ba1add890b283ca5ce4b3241c0648 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/nut
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/0.orig/nut
@@ -20,20 +20,20 @@ internalField   uniform 0;
 
 boundaryField
 {
-    "bottomWall|topWall"
+    "(inlet|outlet)"
     {
-        type            zeroGradient;
+        type            calculated;
+        value           uniform 1e-08;
     }
 
-    "left|right"
+    "(bottom|top)"
     {
-        type            cyclic;
+        type            zeroGradient;
     }
 
-    "inlet|outlet"
+    "(left|right)"
     {
-        type            calculated;
-        value           uniform 1e-08;
+        type            cyclic;
     }
 }
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/p b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/0.orig/p
similarity index 91%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/p
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/0.orig/p
index 567150c189889236df3bfd011529cbfe89929480..e0e385c84a221350b2b0087e0b32bc92b48534c1 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/p
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/0.orig/p
@@ -20,14 +20,14 @@ internalField   uniform 0;
 
 boundaryField
 {
-    "bottomWall|topWall|inlet"
+    inlet
     {
         type            zeroGradient;
     }
 
-    "left|right"
+    "(bottom|top)"
     {
-        type            cyclic;
+        type            zeroGradient;
     }
 
     outlet
@@ -35,6 +35,11 @@ boundaryField
         type            fixedValue;
         value           $internalField;
     }
+
+    "(left|right)"
+    {
+        type            cyclic;
+    }
 }
 
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/transportProperties b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/constant/transportProperties
similarity index 82%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/transportProperties
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/constant/transportProperties
index 51c4183ab550fe049b9ce39652ba6d8a88c52fd4..02df1149468057ca8527ff6a5a0c35a7616a19ea 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/transportProperties
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/constant/transportProperties
@@ -10,19 +10,13 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "constant";
     object      transportProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
 transportModel  Newtonian;
 
-// ReTau = uTau delta / nuFluid
-// ReTau = 395 [-]
-// delta = half channel height = 1 [m]
-// -> nuFluid = 1*1/395 = 2.532e-3 [m2/s]
-
-nu              2.532e-3;
+nu              2.5494595145829e-3;
 
 
 // ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/turbulenceProperties b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/constant/turbulenceProperties
similarity index 89%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/turbulenceProperties
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/constant/turbulenceProperties
index ca87141c3f059b0c8828750741dff0d6ff077e1e..2675f2d568fc9373bad014bf4505cf57892060b9 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/turbulenceProperties
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/constant/turbulenceProperties
@@ -10,12 +10,11 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "constant";
     object      turbulenceProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-simulationType LES;
+simulationType      LES;
 
 LES
 {
@@ -23,7 +22,7 @@ LES
     SmagorinskyCoeffs
     {
         Ce              1.048;
-        Ck              0.02654; // Updated to give Cs = 0.065
+        Ck              0.0265463553; // Updated to give Cs = 0.065
     }
 
     delta           vanDriest;
@@ -32,7 +31,7 @@ LES
         delta           cubeRootVol;
         cubeRootVolCoeffs
         {
-            deltaCoeff      2;
+            deltaCoeff      1;
         }
         Aplus           26;
         Cdelta          0.158;
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/blockMeshDict b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/blockMeshDict
similarity index 73%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/blockMeshDict
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/blockMeshDict
index f74c17951f46d9662d299c5183f65246cda0d21f..c83f74ccd07b9d3d646070e244ea5e3177c9b7d8 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/blockMeshDict
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/blockMeshDict
@@ -1,8 +1,8 @@
 /*--------------------------------*- C++ -*----------------------------------*\
 | =========                 |                                                 |
 | \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v2012                                 |
-|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|  \\    /   O peration     | Version:  v1806                                 |
+|   \\  /    A nd           | Web:      www.OpenFOAM.com                      |
 |    \\/     M anipulation  |                                                 |
 \*---------------------------------------------------------------------------*/
 FoamFile
@@ -14,14 +14,13 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-mergeType topology; // Point merging is very slow
-
 scale   1;
 
-L   #eval{ 20*pi() };
-H   1.0;
-H2  #eval{ 2*$H };
-W   #eval{ pi() };
+// L:length, H:height, W:width
+L       60.0;
+H       1.0;
+H2      #eval{ 2*$H };
+W       #eval{ pi() };
 
 vertices
 (
@@ -42,40 +41,34 @@ vertices
 
 blocks
 (
-    hex ( 0  1  2  5  6  7  8 11) (500 23 82) simpleGrading (1  25 1)
-    hex ( 5  2  3  4 11  8  9 10) (500 23 82) simpleGrading (1 -25 1)
-);
-
-edges
-(
+    hex ( 0  1  2  5  6  7  8 11) (600 32 70) simpleGrading (1 10.7028 1)
+    hex ( 5  2  3  4 11  8  9 10) (600 32 70) simpleGrading (1 -10.7028 1)
 );
 
 boundary
 (
-    bottomWall
+    bottom
     {
         type            wall;
         faces           ((0 6 7 1));
     }
-    topWall
+    top
     {
         type            wall;
         faces           ((4 3 9 10));
     }
-
-    sides_half0
+    left
     {
         type            cyclic;
-        neighbourPatch  sides_half1;
+        neighbourPatch  right;
         faces           ((1 2 5 0)(2 3 4 5));
     }
-    sides_half1
+    right
     {
         type            cyclic;
-        neighbourPatch  sides_half0;
+        neighbourPatch  left;
         faces           ((6 11 8 7)(11 10 9 8));
     }
-
     inlet
     {
         type            patch;
@@ -88,8 +81,5 @@ boundary
     }
 );
 
-mergePatchPairs
-(
-);
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/columnAverage b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/columnAverage
new file mode 100644
index 0000000000000000000000000000000000000000..7a61f2956a796ce52d54f093a5c618f2f1ea4be5
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/columnAverage
@@ -0,0 +1,13 @@
+// -*- C++ -*-
+
+type            columnAverage;
+libs            (fieldFunctionObjects);
+
+patches         ( left );
+fields          ( UPrime2Mean UMean );
+
+executeControl  onEnd;
+writeControl    onEnd;
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/controlDict b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/controlDict
new file mode 100644
index 0000000000000000000000000000000000000000..1e04bedb54ff80ab2e68307d8f4aa7ba783d2c5e
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/controlDict
@@ -0,0 +1,164 @@
+/*--------------------------------*- C++ -*----------------------------------*\
+| =========                 |                                                 |
+| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
+|  \\    /   O peration     | Version:  v2012                                 |
+|   \\  /    A nd           | Website:  www.openfoam.com                      |
+|    \\/     M anipulation  |                                                 |
+\*---------------------------------------------------------------------------*/
+FoamFile
+{
+    version     2.0;
+    format      ascii;
+    class       dictionary;
+    object      controlDict;
+}
+// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
+
+application     pisoFoam;
+
+startFrom       latestTime;
+
+startTime       0;
+
+stopAt          endTime;
+
+endTime         10; // 180;
+
+deltaT          2e-3;
+
+writeControl    timeStep;
+
+writeInterval   1000;
+
+purgeWrite      3;
+
+writeFormat     binary;
+
+writePrecision  8;
+
+writeCompression off;
+
+timeFormat      general;
+
+timePrecision   8;
+
+runTimeModifiable false;
+
+adjustTimeStep  false;
+
+// Allow one-third of time for initialisation before sampling
+timeStart    #eval #{ 1.0/3.0 * ${/endTime} #};
+
+functions
+{
+    wallShearStress
+    {
+        type                wallShearStress;
+        libs                (fieldFunctionObjects);
+        patches             ( bottom top );
+        writePrecision      10;
+        writeToFile         yes;
+        log                 yes;
+        executeControl      timeStep;
+        executeInterval     1;
+        writeControl        writeTime;
+        timeStart           $/timeStart;
+    }
+
+    Cf
+    {
+        type                coded;
+        libs                (utilityFunctionObjects);
+        name                Cf;
+        writeControl        writeTime;
+
+        codeExecute
+        #{
+            static autoPtr<volScalarField> Cf;
+            if
+            (
+                mesh().time().timeIndex() == 1
+                ||
+                mesh().time().startTimeIndex() == mesh().time().timeIndex() - 1
+            )
+            {
+                Info<< "Create skin-friction coefficient field" << nl;
+                Cf.set
+                (
+                    new volScalarField
+                    (
+                        IOobject
+                        (
+                            "Cf",
+                            mesh().time().timeName(),
+                            mesh(),
+                            IOobject::NO_READ,
+                            IOobject::AUTO_WRITE
+                        ),
+                        mesh(),
+                        dimless
+                    )
+                );
+            }
+
+            if
+            (
+                mesh().time().timeIndex() != 1
+             && mesh().time().timeIndex() > 3 // 60 // = timeStart
+            )
+            {
+                Info<< "Computing skin-friction coefficient field" << endl;
+
+                const auto& tau =
+                    mesh().lookupObject<volVectorField>("wallShearStress");
+                auto& Cf = mesh().lookupObjectRef<volScalarField>("Cf");
+
+                const dimensionedScalar Ubulk(dimVelocity, 17.55);
+
+                Cf = mag(tau.component(0))/(0.5*sqr(Ubulk));
+            }
+        #};
+    }
+
+    fieldAverage1
+    {
+        type                fieldAverage;
+        libs                (fieldFunctionObjects);
+        timeStart           $/timeStart;
+        writeControl        writeTime;
+
+        fields
+        (
+            U
+            {
+                mean        on;
+                prime2Mean  on;
+                base        time;
+            }
+
+            p
+            {
+                mean        on;
+                prime2Mean  on;
+                base        time;
+            }
+
+            wallShearStress
+            {
+                mean        on;
+                prime2Mean  off;
+                base        time;
+            }
+
+            Cf
+            {
+                mean        on;
+                prime2Mean  off;
+                base        time;
+            }
+        );
+    }
+}
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/decomposeParDict b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/decomposeParDict
similarity index 90%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/decomposeParDict
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/decomposeParDict
index 1e12212b78a46155b039da171c9429846121062a..e1eba4e011e76f7bff801a4353dcfa927f8d96fe 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/decomposeParDict
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/decomposeParDict
@@ -14,14 +14,9 @@ FoamFile
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-numberOfSubdomains  8;
+numberOfSubdomains  36;
 
-method          hierarchical;
-
-coeffs
-{
-    n           (4 2 1);
-}
+method              scotch;
 
 
 // ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/fvSchemes b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/fvSchemes
similarity index 78%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/system/fvSchemes
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/fvSchemes
index a777dae92472562180efd56f4cbc1fc5ab754850..2e1a721683731e7106cb941e964995e5d289f69a 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/fvSchemes
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/fvSchemes
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      fvSchemes;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -22,23 +21,21 @@ ddtSchemes
 
 gradSchemes
 {
-    default         leastSquares;
+    default         Gauss linear;
 }
 
 divSchemes
 {
     default         none;
+
     div(phi,U)      Gauss linear;
-    div(phi,k)      Gauss limitedLinear 0.1;
-    div(phi,B)      Gauss limitedLinear 0.1;
-    div(B)          Gauss linear;
-    div(phi,nuTilda) Gauss limitedLinear 0.1;
+
     div((nuEff*dev2(T(grad(U))))) Gauss linear;
 }
 
 laplacianSchemes
 {
-    default         Gauss linear corrected;
+    default         Gauss linear orthogonal;
 }
 
 interpolationSchemes
@@ -48,7 +45,7 @@ interpolationSchemes
 
 snGradSchemes
 {
-    default         corrected;
+    default         orthogonal;
 }
 
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/fvSolution b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/fvSolution
similarity index 83%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/system/fvSolution
rename to tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/fvSolution
index c12dd6a214918cb366e1125531c4850c558fdfbc..44a6f6f6a701a54874d6f5713e1704f5f211da74 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/fvSolution
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/fvSolution
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      fvSolution;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -20,13 +19,13 @@ solvers
     p
     {
         solver          GAMG;
-        tolerance       0;
-        relTol          0.01;
         smoother        DICGaussSeidel;
+        tolerance       1e-06;
+        relTol          0.001;
         nPreSweeps      0;
         nPostSweeps     2;
         cacheAgglomeration true;
-        nCellsInCoarsestLevel 10;
+        nCellsInCoarsestLevel 1000;
         agglomerator    faceAreaPair;
         mergeLevels     1;
     }
@@ -34,32 +33,32 @@ solvers
     pFinal
     {
         $p;
-        smoother        DICGaussSeidel;
         tolerance       1e-06;
         relTol          0;
     }
 
-    "(U|k)"
+    U
     {
         solver          PBiCG;
         preconditioner  DILU;
-        tolerance       1e-05;
+        tolerance       1e-08;
         relTol          0.1;
     }
 
-    "(U|k)Final"
+    UFinal
     {
         $U;
-        tolerance       1e-06;
+        tolerance       1e-08;
         relTol          0;
     }
 }
 
-PIMPLE
+PISO
 {
-    nOuterCorrectors 2;
-    nCorrectors     1;
+    nCorrectors         3;
     nNonOrthogonalCorrectors 0;
+    pRefCell            0;
+    pRefValue           0;
 }
 
 
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/sample b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/sample
new file mode 100644
index 0000000000000000000000000000000000000000..1b802ae489452c251e7383be37b0d57c78019035
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/sample
@@ -0,0 +1,214 @@
+// -*- C++ -*-
+
+type                sets;
+libs                (sampling);
+interpolationScheme cellPatchConstrained;
+setFormat           raw;
+
+fields
+(
+    columnAverage:columnAverage(UMean)
+    columnAverage:columnAverage(UPrime2Mean)
+);
+
+sets
+(
+    inletPatch
+    {
+        type        face;
+        axis        y;
+        start       (0.0 0 1.57);
+        end         (0.0 2 1.57);
+    }
+
+    inletCell
+    {
+        type        midPoint;
+        axis        y;
+        start       (0.062832 0 1.57);
+        end         (0.062832 2 1.57);
+    }
+
+    l1 // 1, 5, 10, ... delta
+    {
+        type        uniform;
+        axis        distance;
+        start       (0.1 0.0 1.57);
+        end         (0.1 2.0 1.57);
+        nPoints     200;
+    }
+
+    l5
+    {
+        type        uniform;
+        axis        distance;
+        start       (5.0 0.0 1.57);
+        end         (5.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l10
+    {
+        type        uniform;
+        axis        distance;
+        start       (10.0 0.0 1.57);
+        end         (10.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l15
+    {
+        type        uniform;
+        axis        distance;
+        start       (15.0 0.0 1.57);
+        end         (15.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l20
+    {
+        type        uniform;
+        axis        distance;
+        start       (20.0 0.0 1.57);
+        end         (20.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l25
+    {
+        type        uniform;
+        axis        distance;
+        start       (25.0 0.0 1.57);
+        end         (25.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l30
+    {
+        type        uniform;
+        axis        distance;
+        start       (30.0 0.0 1.57);
+        end         (30.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l35
+    {
+        type        uniform;
+        axis        distance;
+        start       (35.0 0.0 1.57);
+        end         (35.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l40
+    {
+        type        uniform;
+        axis        distance;
+        start       (40.0 0.0 1.57);
+        end         (40.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l45
+    {
+        type        uniform;
+        axis        distance;
+        start       (45.0 0.0 1.57);
+        end         (45.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l50
+    {
+        type        uniform;
+        axis        distance;
+        start       (50.0 0.0 1.57);
+        end         (50.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    l55
+    {
+        type        uniform;
+        axis        distance;
+        start       (55.0 0.0 1.57);
+        end         (55.0 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto0 // Poletto et al.
+    {
+        type        uniform;
+        axis        distance;
+        start       (0.1 0.0 1.57);
+        end         (0.1 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto36
+    {
+        type        uniform;
+        axis        distance;
+        start       (3.6 0.0 1.57);
+        end         (3.6 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto75
+    {
+        type        uniform;
+        axis        distance;
+        start       (7.5 0.0 1.57);
+        end         (7.5 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto113
+    {
+        type        uniform;
+        axis        distance;
+        start       (11.3 0.0 1.57);
+        end         (11.3 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto151
+    {
+        type        uniform;
+        axis        distance;
+        start       (15.1 0.0 1.57);
+        end         (15.1 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto226
+    {
+        type        uniform;
+        axis        distance;
+        start       (22.6 0.0 1.57);
+        end         (22.6 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto302
+    {
+        type        uniform;
+        axis        distance;
+        start       (30.2 0.0 1.57);
+        end         (30.2 2.0 1.57);
+        nPoints     200;
+    }
+
+    Poletto377
+    {
+        type        uniform;
+        axis        distance;
+        start       (37.7 0.0 1.57);
+        end         (37.7 2.0 1.57);
+        nPoints     200;
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/sampleCf b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/sampleCf
new file mode 100644
index 0000000000000000000000000000000000000000..02cabfc87fdd4d9d0f59d88b0f5e87ac7cf2a3a0
--- /dev/null
+++ b/tutorials/incompressible/pimpleFoam/LES/planeChannel/setups.orig/common/system/sampleCf
@@ -0,0 +1,34 @@
+// -*- C++ -*-
+
+type                sets;
+libs                (sampling);
+interpolationScheme cellPatchConstrained;
+setFormat           raw;
+fields              ( CfMean );
+
+_planes
+{
+    type            patchEdge;
+    axis            xyz;
+    patches         ( bottom );
+    surfaceType     searchablePlane;
+    planeType       pointAndNormal;
+    origin          ( 0 0 1.57079632679 );
+}
+
+sets
+(
+    // Intersections of patches with plane
+    planeAA
+    {
+        ${_planes}
+        pointAndNormalDict
+        {
+            point  ( 0 0 1.57079632679 );
+            normal ( 0 0 1 );
+        }
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/0.orig/U b/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/0.orig/U
index 0d69b23ef965a4c7f3cd82899a958061ca3e252a..6148dba3d102b226ed251f54fcb432b086f744f5 100644
--- a/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/0.orig/U
+++ b/tutorials/incompressible/pimpleFoam/LES/surfaceMountedCube/fullCase/0.orig/U
@@ -29,7 +29,21 @@ boundaryField
         type            turbulentDFSEMInlet;
         delta           1;
         nCellPerEddy    3;
-        mapMethod       nearestCell;
+        U
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+        R
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+        L
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
         value           $internalField;
     }
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.DFM/U b/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.DFM/U
deleted file mode 100644
index 552ae22f862d8b28433e6d8787906b39ac7ee843..0000000000000000000000000000000000000000
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.DFM/U
+++ /dev/null
@@ -1,30 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v2012                                 |
-|   \\  /    A nd           | Website:  www.openfoam.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volVectorField;
-    object      U;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-inlet
-{
-    type    turbulentDigitalFilterInlet;
-    n       ( 64 70 );
-    L
-    (
-        0.78035508 0.31085352 0.342261 0.1728125 0.171875
-        0.22459375 0.172787596 0.171889998 0.224578995
-    );
-    Ubulk   20.133;
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.FSM/U b/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.FSM/U
deleted file mode 100644
index 3312d3d5f1870e613be7201d49c07da53b1ac038..0000000000000000000000000000000000000000
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.FSM/U
+++ /dev/null
@@ -1,31 +0,0 @@
-/*--------------------------------*- C++ -*----------------------------------*\
-| =========                 |                                                 |
-| \\      /  F ield         | OpenFOAM: The Open Source CFD Toolbox           |
-|  \\    /   O peration     | Version:  v2012                                 |
-|   \\  /    A nd           | Website:  www.openfoam.com                      |
-|    \\/     M anipulation  |                                                 |
-\*---------------------------------------------------------------------------*/
-FoamFile
-{
-    version     2.0;
-    format      ascii;
-    class       volVectorField;
-    object      U;
-}
-// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
-
-inlet
-{
-    type    turbulentDigitalFilterInlet;
-    fsm     true;
-    n       ( 64 70 );
-    L
-    (
-        0.78035508 0.31085352 0.342261 0.1728125 0.171875
-        0.22459375 0.172787596 0.171889998 0.224578995
-    );
-    Ubulk   20.133;
-}
-
-
-// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/Allrun b/tutorials/verificationAndValidation/turbulentInflow/PCF/Allrun
deleted file mode 100755
index 432954f07b1e9885d9096e6979e1954f29c896c6..0000000000000000000000000000000000000000
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/Allrun
+++ /dev/null
@@ -1,84 +0,0 @@
-#!/bin/sh
-cd "${0%/*}" || exit                                # Run from this directory
-. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
-. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions
-#------------------------------------------------------------------------------
-
-# Collect data into the 'results' directory,
-# and clean the case for the next run
-#
-# $1 = model
-# ----
-collectData(){
-    model=$1
-    runType=$2
-    echo "    Moving results into 'results/$model.$runType'"
-    results="results/$model.$runType"
-    mkdir -p "$results"
-    timeDir=$(foamListTimes -latestTime)
-    mv -f log* *.png postProcessing "$timeDir" "$results" 2>/dev/null
-
-    cleanTimeDirectories
-    rm -rf processor* > /dev/null 2>&1
-}
-
-
-# Compute the case in 'serial' mode,
-# and collect the data
-#
-# $* = models
-# ----
-serialRun(){
-    models=$*
-    for model in $models
-    do
-        echo "    Running with the synthetic turbulence model: $model"
-        (cd 0 && ln -snf "inlet.$model" inlet)
-        (cd constant/boundaryData && ln -snf "inlet.$model" inlet)
-
-        runApplication -s "$model" $(getApplication)
-        ./plot
-        collectData $model "serial"
-    done
-}
-
-
-# Compute the case in 'parallel' mode,
-# and collect the data
-#
-# $* = models
-# ----
-parallelRun(){
-    models=$*
-    for model in $models
-    do
-        echo "    Running with the synthetic turbulence model: $model"
-        (cd 0 && ln -snf "inlet.$model" inlet)
-        (cd constant/boundaryData && ln -snf "inlet.$model" inlet)
-
-        runApplication -s "$model" decomposePar -force
-        runParallel -s "$model" $(getApplication)
-        runApplication -s "$model" reconstructPar -latestTime
-        ./plot
-        collectData $model "parallel"
-    done
-}
-
-
-#------------------------------------------------------------------------------
-
-# Prepare the numerical setup
-./Allrun.pre
-
-# Run with the synthetic turbulence models
-models="
-FSM
-DFM
-DFSEM
-"
-
-parallelRun $models
-
-serialRun $models
-
-#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/README b/tutorials/verificationAndValidation/turbulentInflow/PCF/README
deleted file mode 100644
index 75345550869a95a8fb7acccd60d80448bd0e6929..0000000000000000000000000000000000000000
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/README
+++ /dev/null
@@ -1,32 +0,0 @@
-#------------------------------------------------------------------------------
-
-The following three synthetic turbulence inflow boundary conditions are
-examined through a single-cell-domain smooth-wall plane channel flow setup:
-
-- turbulentDFSEMInlet (DFSEM)
-- turbulentDigitalFilterInlet (DFM)
-- turbulentDigitalFilterInlet with the forward-stepwise method (FSM)
-
-The input statistics are obtained from:
-
-    Moser, R. D., Kim, J., & Mansour, N. N. (1999).
-    Direct numerical simulation of turbulent channel flow up to Reτ=590.
-    Physics of fluids, 11(4), 943-945.
-    DOI:10.1063/1.869966
-
-from which the input first-/second-order turbulence statistics data for the
-smooth-wall plane channel flow at ReTau=395 were used.
-
-The data is available online from (Retrieved: 21-06-2019):
-
-    https://turbulence.oden.utexas.edu/data/MKM/chan395/
-
-Executing:
-
-./Allrun
-
-The script will run the test case, and collect the plots and samples into
-the 'results' directory.
-
-
-#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/0/L b/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/0/L
deleted file mode 100644
index 9c6e3ab67d541f7b64a113dcdafdf89d88f6c5d4..0000000000000000000000000000000000000000
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/0/L
+++ /dev/null
@@ -1,259 +0,0 @@
-(
-0
-1.76693e-06
-1.06447e-07
-2.85582e-08
-1.73393e-08
-3.56243e-08
-3.79499e-08
-1.50479e-07
-1.55614e-07
-1.93408e-07
-4.50118e-08
-2.6295e-10
-6.18128e-08
-4.4709e-08
-5.98657e-07
-2.25711e-06
-4.20946e-06
-6.292e-06
-7.5414e-06
-9.02814e-06
-1.04737e-05
-1.25187e-05
-1.37559e-05
-1.40338e-05
-1.24681e-05
-1.08272e-05
-9.10144e-06
-7.81661e-06
-6.08627e-06
-4.68729e-06
-3.01241e-06
-1.93855e-06
-1.03945e-06
-2.49601e-07
-2.33919e-07
-3.47823e-08
-3.05604e-06
-8.25413e-06
-1.04748e-05
-1.36651e-05
-2.35252e-05
-3.87371e-05
-5.21582e-05
-6.71737e-05
-6.89399e-05
-4.57512e-05
-1.94891e-05
-9.7778e-06
-1.47858e-05
-3.40409e-05
-6.06823e-05
-8.59513e-05
-8.29571e-05
-5.42278e-05
-3.46015e-05
-2.20432e-05
-1.73878e-05
-1.05749e-05
-4.67814e-06
-8.66793e-06
-1.79361e-05
-1.22464e-05
-3.93103e-06
-1.00778e-06
-1.81983e-06
-2.70815e-05
-9.56468e-05
-0.000139304
-0.00012493
-9.50459e-05
-4.78307e-05
-8.71962e-06
-1.24275e-05
-4.91383e-05
-8.77264e-05
-0.000114449
-0.00014567
-0.000201758
-0.000251863
-0.000272594
-0.000213599
-0.000145126
-0.000115603
-0.000122779
-0.000116865
-8.36843e-05
-4.06009e-05
-3.49149e-05
-5.22978e-05
-5.07525e-05
-2.5995e-05
-2.6683e-06
-9.29144e-06
-1.14821e-05
-9.41939e-06
-1.01946e-05
-6.64024e-06
-1.1913e-06
-3.25066e-06
-8.47834e-06
-1.42023e-06
-4.30742e-05
-0.000106228
-0.000115468
-9.07632e-05
-7.04511e-05
-9.21776e-05
-0.000104486
-0.000111678
-0.000109852
-0.000111867
-9.10747e-05
-6.82206e-05
-4.09085e-05
-2.3961e-05
-2.0467e-06
-7.74345e-06
-1.66716e-05
-1.54967e-05
-2.95089e-05
-4.82299e-05
-6.99781e-05
-7.16947e-05
-7.33475e-05
-7.40551e-05
-9.45846e-05
-0.000107202
-0.000120068
-0.000122517
-0.000120068
-0.000107202
-9.45846e-05
-7.40551e-05
-7.33475e-05
-7.16947e-05
-6.99781e-05
-4.82299e-05
-2.95089e-05
-1.54967e-05
-1.66716e-05
-7.74345e-06
-2.0467e-06
-2.3961e-05
-4.09085e-05
-6.82206e-05
-9.10747e-05
-0.000111867
-0.000109852
-0.000111678
-0.000104486
-9.21776e-05
-7.04511e-05
-9.07632e-05
-0.000115468
-0.000106228
-4.30742e-05
-1.42023e-06
-8.47834e-06
-3.25066e-06
-1.1913e-06
-6.64024e-06
-1.01946e-05
-9.41939e-06
-1.14821e-05
-9.29144e-06
-2.6683e-06
-2.5995e-05
-5.07525e-05
-5.22978e-05
-3.49149e-05
-4.06009e-05
-8.36843e-05
-0.000116865
-0.000122779
-0.000115603
-0.000145126
-0.000213599
-0.000272594
-0.000251863
-0.000201758
-0.00014567
-0.000114449
-8.77264e-05
-4.91383e-05
-1.24275e-05
-8.71962e-06
-4.78307e-05
-9.50459e-05
-0.00012493
-0.000139304
-9.56468e-05
-2.70815e-05
-1.81983e-06
-1.00778e-06
-3.93103e-06
-1.22464e-05
-1.79361e-05
-8.66793e-06
-4.67814e-06
-1.05749e-05
-1.73878e-05
-2.20432e-05
-3.46015e-05
-5.42278e-05
-8.29571e-05
-8.59513e-05
-6.06823e-05
-3.40409e-05
-1.47858e-05
-9.7778e-06
-1.94891e-05
-4.57512e-05
-6.89399e-05
-6.71737e-05
-5.21582e-05
-3.87371e-05
-2.35252e-05
-1.36651e-05
-1.04748e-05
-8.25413e-06
-3.05604e-06
-3.47823e-08
-2.33919e-07
-2.49601e-07
-1.03945e-06
-1.93855e-06
-3.01241e-06
-4.68729e-06
-6.08627e-06
-7.81661e-06
-9.10144e-06
-1.08272e-05
-1.24681e-05
-1.40338e-05
-1.37559e-05
-1.25187e-05
-1.04737e-05
-9.02814e-06
-7.5414e-06
-6.292e-06
-4.20946e-06
-2.25711e-06
-5.98657e-07
-4.4709e-08
-6.18128e-08
-2.6295e-10
-4.50118e-08
-1.93408e-07
-1.55614e-07
-1.50479e-07
-3.79499e-08
-3.56243e-08
-1.73393e-08
-2.85582e-08
-1.06447e-07
-1.76693e-06
-0
-)
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/plot b/tutorials/verificationAndValidation/turbulentInflow/PCF/plot
deleted file mode 100755
index adf477bce334acb964cd78dba0e106de6a160c83..0000000000000000000000000000000000000000
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/plot
+++ /dev/null
@@ -1,135 +0,0 @@
-#!/bin/sh
-cd "${0%/*}" || exit                        # Run from this directory
-#------------------------------------------------------------------------------
-
-plotCellR() {
-    timeDir=$1
-    echo "    Plotting the normal and Reynolds stresses on cell."
-
-    outName="stress-cell.png"
-    gnuplot<<PLT_CELL_R
-    set terminal pngcairo font "helvetica,20" size 1000, 800
-    set xrange [0:1]
-    set yrange [-1:8]
-    set grid
-    set key top right
-    set key samplen 2
-    set key spacing 0.75
-    set xlabel "Channel height from the bottomWall [m]"
-    set ylabel "<u_i^' u_i^'> [m2/s2]"
-    set offset .05, .05
-    set output "$outName"
-    set title "Normal and Reynolds stresses on cell"
-
-    input = "$timeDir/inletCell_UPrime2Mean.xy"
-    bench = "constant/pointsRdata"
-
-    plot \
-        input u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
-        input u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
-        input u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
-        input u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00", \
-        bench u 2:4 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
-        bench u 2:7 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
-        bench u 2:9 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
-        bench u 2:5 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
-PLT_CELL_R
-}
-
-
-plotPatchR() {
-    timeDir=$1
-    echo "    Plotting the normal and Reynolds stresses on inlet patch faces."
-
-    outName="stress-patch.png"
-    gnuplot<<PLT_PATCH_R
-    set terminal pngcairo font "helvetica,20" size 1000, 800
-    set xrange [0:1]
-    set yrange [-1:8]
-    set grid
-    set key top right
-    set key samplen 2
-    set key spacing 0.75
-    set xlabel "Channel height from the bottomWall [m]"
-    set ylabel "<u_i^' u_i^'> [m2/s2]"
-    set offset .05, .05
-    set output "$outName"
-    set title "Normal and Reynolds stresses on patch"
-
-    input = "$timeDir/inletPatch_UPrime2Mean.xy"
-    bench = "constant/pointsRdata"
-
-    plot \
-        input u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
-        input u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
-        input u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
-        input u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00", \
-        bench u 2:4 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
-        bench u 2:7 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
-        bench u 2:9 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
-        bench u 2:5 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
-PLT_PATCH_R
-}
-
-
-plotPatchUMean() {
-    timeDir=$1
-    echo "    Plotting the streamwise mean flow speed on inlet patch faces."
-
-    outName="u-patch.png"
-    gnuplot<<PLT_PATCH_UMEAN
-    set terminal pngcairo font "helvetica,20" size 1000, 800
-    set xrange [0:1]
-    set yrange [0:25]
-    set grid
-    set key top right
-    set key samplen 2
-    set key spacing 0.75
-    set xlabel "Channel height from the bottomWall [m]"
-    set ylabel "u [m/s]"
-    set offset .05, .05
-    set output "$outName"
-
-    input = "$timeDir/inletPatch_UMean.xy"
-    bench = "constant/pointsUMeanData"
-
-    plot \
-        input u 1:2 t "u" w l lw 2 lc rgb "#009E73", \
-        bench u 2:4 t "u_{DNS}" w l lw 2 dt 2 lc rgb "#009E73"
-PLT_PATCH_UMEAN
-}
-
-
-#------------------------------------------------------------------------------
-
-# Require gnuplot
-command -v gnuplot >/dev/null || {
-    echo "gnuplot not found - skipping graph creation" 1>&2
-    exit 1
-}
-
-# Prepare the benchmark data
-cp -f constant/boundaryData/inlet/0/R constant/R
-cp -f constant/boundaryData/inlet/points constant/points
-cp -f constant/boundaryData/inlet.DFM/0/UMean constant/UMean
-cat constant/R | tr -d '()' > constant/Rdata
-cat constant/points | tr -d '()' > constant/pointsData
-cat constant/UMean | tr -d '()' > constant/UMeanData
-paste constant/pointsData constant/Rdata > constant/pointsRdata
-paste constant/pointsData constant/UMeanData > constant/pointsUMeanData
-
-# The latestTime in postProcessing/sampling1
-timeDir=$(foamListTimes -case postProcessing/sampling1 -latestTime 2>/dev/null)
-[ -n "$timeDir" ] || {
-    echo "No postProcessing/sampling1 found - skipping graph creation" 1>&2
-    exit 1
-}
-
-timeDir="postProcessing/sampling1/$timeDir"
-
-plotCellR "$timeDir"
-plotPatchR "$timeDir"
-plotPatchUMean "$timeDir"
-
-
-#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/Allrun.pre b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/Allclean
similarity index 52%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/Allrun.pre
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/Allclean
index 87148fa7a5f568cdad925156896f197cfbe0c537..e570da4052cc732e47b23b1939d255cd7b8f4011 100755
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/Allrun.pre
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/Allclean
@@ -1,20 +1,14 @@
 #!/bin/sh
 cd "${0%/*}" || exit                                # Run from this directory
-. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions
 #------------------------------------------------------------------------------
 
-endTime=10
-if notTest "$@"
-then
-    endTime=85
-fi
-
-sed "s|END_TIME|$endTime|g" system/controlDict.template > system/controlDict
-
-restore0Dir
-
-runApplication blockMesh
+cleanCase0
 
+rm -rf 0.orig
+rm -rf system
+rm -rf constant
 rm -rf results
+rm -rf plots
 
 #------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/Allrun b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/Allrun
new file mode 100755
index 0000000000000000000000000000000000000000..460931c8e7225cb227c4ccfe84e14646bd9982ce
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/Allrun
@@ -0,0 +1,123 @@
+#!/bin/sh
+cd "${0%/*}" || exit                                # Run from this directory
+. ${WM_PROJECT_DIR:?}/bin/tools/RunFunctions        # Tutorial run functions
+. ${WM_PROJECT_DIR:?}/bin/tools/CleanFunctions      # Tutorial clean functions
+#------------------------------------------------------------------------------
+
+# setups
+
+    # operand setups
+    setups="
+    DFSEM
+    DFM
+    FSM
+    "
+
+    # flag to enable computations in parallel mode
+    parallel=true
+
+
+#------------------------------------------------------------------------------
+
+#######################################
+# Collect results into a given path
+# and clean the case for the next run
+# Arguments:
+#    $1 = Path to move results
+# Outputs:
+#    Writes info to stdout
+#######################################
+collect() {
+
+    [ $# -eq 0 ] && { echo "Usage: $0 dir-model"; exit 1; }
+
+    collection="$1"
+
+    dirResult=results/"$collection"
+    dirSettings="$dirResult"/settings
+
+    if [ ! -d "$dirResult" ]
+    then
+
+        echo "      # Collecting results and settings into $dirResult"
+
+        mkdir -p "$dirResult"
+        mkdir -p "$dirSettings"
+
+        mv -f $(foamListTimes) "$dirResult"
+        [ -d postProcessing ] && mv -f postProcessing "$dirResult"
+        [ -d processor0 ] && mv -f processor* "$dirResult"
+        mv -f log.* "$dirResult"
+        cp -f system/{fv*,controlDict} constant/*Properties "$dirSettings"
+        mv -f 0/ "$dirSettings"
+
+        echo "      # Cleaning up the case"
+
+        cleanTimeDirectories
+        cleanPostProcessing
+
+    else
+
+        echo "      # Directory $dirResult already exists"
+        echo "      # Skipping the computation"
+
+    fi
+}
+
+
+#------------------------------------------------------------------------------
+
+for setup in $setups
+do
+
+    echo ""
+    echo "# Computations for the setup: $setup"
+    echo ""
+
+    dirSetup="setups.orig/$setup"
+    cp -rfL "$dirSetup/0.orig" .
+    cp -rfL "$dirSetup/constant" .
+    cp -rfL "$dirSetup/system" .
+    cp -rf 0.orig/ 0/
+
+    if [ ! -d constant/polyMesh ]
+    then
+
+        runApplication blockMesh
+
+        runApplication renumberMesh -overwrite -constant
+
+        runApplication checkMesh -allTopology -allGeometry -constant
+
+    fi
+
+    if [ "$parallel" = true ]
+    then
+
+        runApplication decomposePar
+
+        runParallel $(getApplication)
+
+        runApplication reconstructPar
+
+    else
+
+        runApplication $(getApplication)
+
+    fi
+
+    runApplication -s columnAverage \
+        postProcess -func columnAverage -latestTime
+
+    runApplication -s sampleCellPatchConstrained \
+        postProcess -func sampleCellPatchConstrained -latestTime
+
+    runApplication -s sampleCellPoint \
+        postProcess -func sampleCellPoint -latestTime
+
+    collect "$setup"
+
+done
+
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/plot b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/plot
new file mode 100755
index 0000000000000000000000000000000000000000..66483f05b83c45c4956d985676fa3aa71c4f3f27
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/plot
@@ -0,0 +1,176 @@
+#!/bin/sh
+cd "${0%/*}" || exit                        # Run from this directory
+#------------------------------------------------------------------------------
+
+# settings
+
+    # operand setups
+    setups="
+    DFSEM
+    DFM
+    FSM
+    "
+
+
+#------------------------------------------------------------------------------
+
+plot_R_patch() {
+
+    setup="$1"
+
+    endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
+    # benchmarkFile="ReTau-395/dataset/chan395.reystress"
+    sampleFile="results/$setup/postProcessing/sampleCellPoint/$endTime/inletPatch_columnAverage:columnAverage(UPrime2Mean).xy"
+    image="plots/$setup/R_patch.png"
+
+    gnuplot<<PLT_R_PATCH
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set key top right
+    set xrange [0:1]
+    set yrange [-1:8]
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "Channel height [m]"
+    set ylabel "<u_i^' u_i^'> [m^2/s^2]"
+    set offset .05, .05
+    set output "$image"
+    set title "Reynolds stresses on patch"
+
+    # Benchmark - DNS
+        # benchmark = "$benchmarkFile"
+
+    # Samples - OpenFOAM
+        samples="$sampleFile"
+
+    plot \
+        samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
+        samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
+        samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
+        samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
+
+        # benchmark u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
+        # benchmark u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
+        # benchmark u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
+        # benchmark u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
+PLT_R_PATCH
+}
+
+
+plot_R_cell() {
+
+    setup="$1"
+
+    endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
+    # benchmarkFile="ReTau-395/dataset/chan395.reystress"
+    sampleFile="results/$setup/postProcessing/sampleCellPoint/$endTime/inletCell_columnAverage:columnAverage(UPrime2Mean).xy"
+    image="plots/$setup/R_cell.png"
+
+    gnuplot<<PLT_R_CELL
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set key top right
+    set xrange [0:1]
+    set yrange [-1:8]
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "Channel height [m]"
+    set ylabel "<u_i^' u_i^'> [m^2/s^2]"
+    set offset .05, .05
+    set output "$image"
+    set title "Reynolds stresses on cell"
+
+    # Benchmark - DNS
+        # benchmark= "$benchmarkFile"
+
+    # Samples - OpenFOAM
+        samples="$sampleFile"
+
+    plot \
+        samples u 1:2 t "<u^' u^'>" w l lw 2 lc rgb "#009E73", \
+        samples u 1:5 t "<v^' v^'>" w l lw 2 lc rgb "#F0E440", \
+        samples u 1:7 t "<w^' w^'>" w l lw 2 lc rgb "#0072B2", \
+        samples u 1:3 t "<u^' v^'>" w l lw 2 lc rgb "#D55E00"
+
+        # benchmark u 1:3 t "<u^' u^'>_{DNS}" w l lw 2 dt 2 lc rgb "#009E73", \
+        # benchmark u 1:4 t "<v^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#F0E440", \
+        # benchmark u 1:5 t "<w^' w^'>_{DNS}" w l lw 2 dt 2 lc rgb "#0072B2", \
+        # benchmark u 1:6 t "<u^' v^'>_{DNS}" w l lw 2 dt 2 lc rgb "#D55E00"
+PLT_R_CELL
+}
+
+
+plot_UMean_patch() {
+
+    setup="$1"
+
+    endTime=$(foamDictionary results/$setup/settings/controlDict -entry endTime -value)
+    benchmarkFile="../../resources/incompressible/oneCellThickPlaneChannelFlow/ReTau-395/dataset/chan395.means"
+    sampleFile="results/$setup/postProcessing/sampleCellPoint/$endTime/inletPatch_columnAverage:columnAverage(UMean).xy"
+    image="plots/$setup/UMean_patch.png"
+
+    gnuplot<<PLT_UMEAN_PATCH
+    set terminal pngcairo font "helvetica,20" size 1000, 1000
+    set grid
+    set key top right
+    set xrange [0:1]
+    set yrange [0:25]
+    set key samplen 2
+    set key spacing 0.75
+    set xlabel "Channel height [m]"
+    set ylabel "u [m/s]"
+    set offset .05, .05
+    set output "$image"
+    set title "Streamwise mean flow speed on patch"
+
+    # Benchmark - DNS
+        # benchmark = "$benchmarkFile"
+
+    # Samples - OpenFOAM
+        samples="$sampleFile"
+
+    plot \
+        samples u 1:2 t "u" w l lw 2 lc rgb "#009E73"
+
+        # benchmark u 1:3 t "u_{DNS}" w l lw 2 dt 2 lc rgb "#009E73"
+PLT_UMEAN_PATCH
+}
+
+
+#------------------------------------------------------------------------------
+
+# Require gnuplot
+command -v gnuplot >/dev/null || {
+    echo "gnuplot not found - skipping graph creation" 1>&2
+    exit 1
+}
+
+# Check directory: "results"
+[ -d "results" ] || {
+    echo "No results directory found - skipping graph creation" 1>&2
+    exit 1
+}
+
+
+#------------------------------------------------------------------------------
+
+for setup in $setups
+do
+
+    echo ""
+    echo "# Plots for the setup: $setup"
+    echo ""
+
+    dirPlots="plots/$setup"
+    [ -d "$dirPlots" ] || mkdir -p "$dirPlots"
+
+    plot_R_patch "$setup"
+
+    plot_R_cell "$setup"
+
+    plot_UMean_patch "$setup"
+
+done
+
+
+#------------------------------------------------------------------------------
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/U b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/U
similarity index 74%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/U
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/U
index a42193bbe695942f7d4a7859a248945433570309..e3c5546c3ee7a27a234d05c0927cd0dde03d750a 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/U
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/U
@@ -20,28 +20,33 @@ internalField   uniform (0 0 0);
 
 boundaryField
 {
-    "bottomWall|topWall"
+    inlet
     {
-        type            fixedValue;
+        type            turbulentDigitalFilterInlet;
+        n               ( 64 70 );
+        L
+        (
+            0.78035508 0.31085352 0.342261 0.1728125 0.171875
+            0.22459375 0.172787596 0.171889998 0.224578995
+        );
+        Ubulk           17.55;
         value           $internalField;
     }
 
-    "left|right"
+    outlet
     {
-        type            cyclic;
+        type            advective;
+        value           $internalField;
     }
 
-    inlet
+    "(bottom|top)"
     {
-        value           $internalField;
+        type            noSlip;
     }
-    #include            "inlet/U"
 
-    outlet
+    "(left|right)"
     {
-        type            inletOutlet;
-        inletValue      $internalField;
-        value           $internalField;
+        type            cyclic;
     }
 }
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/nut b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/nut
new file mode 120000
index 0000000000000000000000000000000000000000..8186897dc1e524952025d143bc577da45c565816
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/nut
@@ -0,0 +1 @@
+../../common/0.orig/nut
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/p b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/p
new file mode 120000
index 0000000000000000000000000000000000000000..d1e1225671bd34ace34b88068ef438565d22d1b6
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/0.orig/p
@@ -0,0 +1 @@
+../../common/0.orig/p
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFM/0/R b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/boundaryData/inlet/0/R
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFM/0/R
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/boundaryData/inlet/0/R
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFM/0/UMean b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/boundaryData/inlet/0/UMean
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFM/0/UMean
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/boundaryData/inlet/0/UMean
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFM/points b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/boundaryData/inlet/points
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFM/points
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/boundaryData/inlet/points
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/transportProperties b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/transportProperties
new file mode 120000
index 0000000000000000000000000000000000000000..e6a4e4f7fc53f2c83e8fcde854665db55f6466d2
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/transportProperties
@@ -0,0 +1 @@
+../../common/constant/transportProperties
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/turbulenceProperties b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/turbulenceProperties
new file mode 120000
index 0000000000000000000000000000000000000000..f9d514a2f3f6ca0865f5abfdc16e644e105946cf
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/constant/turbulenceProperties
@@ -0,0 +1 @@
+../../common/constant/turbulenceProperties
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/system b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/system
new file mode 120000
index 0000000000000000000000000000000000000000..86c0ebd6e7baf5d4e389403fe98512613a6bdb8a
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFM/system
@@ -0,0 +1 @@
+../common/system
\ No newline at end of file
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/U b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/U
similarity index 64%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/U
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/U
index 4960761ab1862193d8419f3bb4ab7c7b464a4344..2c0907c164c364609ac59ffc8355c23703074037 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/U
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/U
@@ -10,49 +10,56 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volVectorField;
-    location    "1";
     object      U;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 1 -1 0 0 0 0 ];
+dimensions      [0 1 -1 0 0 0 0];
 
-// Ub/utau = 17.55
-internalField   uniform ( 17.55 0 0 );
+internalField   uniform (0 0 0);
 
 boundaryField
 {
-    bottomWall
-    {
-        type            fixedValue;
-        value           uniform ( 0 0 0 );
-    }
-    topWall
-    {
-        type            fixedValue;
-        value           uniform ( 0 0 0 );
-    }
-    sides_half0
-    {
-        type            cyclic;
-    }
-    sides_half1
-    {
-        type            cyclic;
-    }
     inlet
     {
         type            turbulentDFSEMInlet;
-        delta           2;
+        delta           1;
+        U
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+        R
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+        L
+        {
+            type        mappedFile;
+            mapMethod   nearest;
+        }
+
+        d               1;
         nCellPerEddy    1;
-        mapMethod       nearestCell;
+        scale           1;
         value           $internalField;
     }
+
     outlet
     {
-        type            inletOutlet;
-        inletValue      uniform (0 0 0);
-        value           uniform (0 0 0);
+        type            advective;
+        value           $internalField;
+    }
+
+    "(bottom|top)"
+    {
+        type            noSlip;
+    }
+
+    "(left|right)"
+    {
+        type            cyclic;
     }
 }
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/nut b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/nut
new file mode 120000
index 0000000000000000000000000000000000000000..8186897dc1e524952025d143bc577da45c565816
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/nut
@@ -0,0 +1 @@
+../../common/0.orig/nut
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/p b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/p
new file mode 120000
index 0000000000000000000000000000000000000000..d1e1225671bd34ace34b88068ef438565d22d1b6
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/0.orig/p
@@ -0,0 +1 @@
+../../common/0.orig/p
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/L b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/L
new file mode 100644
index 0000000000000000000000000000000000000000..629a2101b30050e7e209aa2c140459e3a0fbed73
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/L
@@ -0,0 +1,259 @@
+(
+1.6760001447599677e-43
+1.0868009617044407e-08
+6.96632299316915e-07
+7.964006730807538e-06
+4.4886053894517664e-05
+0.00017142819717599743
+0.0005109590309958684
+0.001282137130408118
+0.0028356245991423275
+0.0056945923004052415
+0.010583536322306776
+0.018389090000706376
+0.029956201643692996
+0.04567240383684011
+0.06499017109073807
+0.0863645775310708
+0.10780875116479441
+0.12771755696515344
+0.1453567712304755
+0.16062365567853595
+0.17380736699507915
+0.18524165214197616
+0.19522234333586158
+0.20396794244081784
+0.21161151098126862
+0.2182925640222298
+0.22425210908087323
+0.22980954591037686
+0.2352612116306475
+0.24076016447211382
+0.24635042180862582
+0.25215417623227027
+0.2581319159366946
+0.2642162232341277
+0.2705976827635888
+0.2775262136577681
+0.2851339428170316
+0.29320770439789223
+0.30169588718043017
+0.3104960794811366
+0.3194954534280035
+0.3286450052926366
+0.3378100136077759
+0.3471174687143672
+0.3562151631412292
+0.36527552859716594
+0.37494504798108247
+0.38502865612338205
+0.3952322027438534
+0.40553467840927804
+0.41578800746270134
+0.4264058548357003
+0.43712919288926017
+0.44842576293128633
+0.46008767937618383
+0.4714866924807228
+0.4827246039731494
+0.49330673743341724
+0.5036846762826384
+0.5140216569857357
+0.5243625990429793
+0.5348735169176119
+0.5446788615067326
+0.5535535437038963
+0.5615373928208507
+0.5689987179058951
+0.5773301273285831
+0.5862857780666765
+0.5953526108855274
+0.6049390063729172
+0.6143870357093343
+0.6221292179475515
+0.6288137731042791
+0.6356831550607555
+0.6428919658813926
+0.6494740048271094
+0.6558426649799869
+0.6615093242166988
+0.6667263216815766
+0.6713265835399524
+0.6760870855398617
+0.6817697212117945
+0.6868490918716819
+0.6901331296539219
+0.6934577171362739
+0.6979552723619237
+0.7038154195965829
+0.7108862054012115
+0.7172470897092121
+0.7224010326710795
+0.727453975349662
+0.731494652619959
+0.7349775398199252
+0.7370734048228417
+0.737434256293814
+0.7365824697737319
+0.7350609217033188
+0.7329836659249739
+0.730256405839164
+0.7283242805479961
+0.726231012899943
+0.7235685746646292
+0.7213160623172862
+0.7194814238726635
+0.7166228475003421
+0.7120932098489855
+0.7068169772751501
+0.702036389755952
+0.697518544808241
+0.6937121394109932
+0.6904454421400188
+0.6866438800820893
+0.6818576320301258
+0.6766627824128105
+0.6727179770747246
+0.6689431320803964
+0.6631717982054145
+0.6561721428602678
+0.6481600843658191
+0.6405213608738373
+0.6341476825999275
+0.6280008937349648
+0.6214551987295783
+0.6145563256095296
+0.6071697457595765
+0.6005761440226519
+0.5951460432382282
+0.5923426315298634
+0.5915671133699071
+0.5923426315298634
+0.5951460432382282
+0.6005761440226519
+0.6071697457595765
+0.6145563256095296
+0.6214551987295783
+0.6280008937349648
+0.6341476825999275
+0.6405213608738373
+0.6481600843658191
+0.6561721428602678
+0.6631717982054145
+0.6689431320803964
+0.6727179770747246
+0.6766627824128105
+0.6818576320301258
+0.6866438800820893
+0.6904454421400188
+0.6937121394109932
+0.697518544808241
+0.702036389755952
+0.7068169772751501
+0.7120932098489855
+0.7166228475003421
+0.7194814238726635
+0.7213160623172862
+0.7235685746646292
+0.726231012899943
+0.7283242805479961
+0.730256405839164
+0.7329836659249739
+0.7350609217033188
+0.7365824697737319
+0.737434256293814
+0.7370734048228417
+0.7349775398199252
+0.731494652619959
+0.727453975349662
+0.7224010326710795
+0.7172470897092121
+0.7108862054012115
+0.7038154195965829
+0.6979552723619237
+0.6934577171362739
+0.6901331296539219
+0.6868490918716819
+0.6817697212117945
+0.6760870855398617
+0.6713265835399524
+0.6667263216815766
+0.6615093242166988
+0.6558426649799869
+0.6494740048271094
+0.6428919658813926
+0.6356831550607555
+0.6288137731042791
+0.6221292179475515
+0.6143870357093343
+0.6049390063729172
+0.5953526108855274
+0.5862857780666765
+0.5773301273285831
+0.5689987179058951
+0.5615373928208507
+0.5535535437038963
+0.5446788615067326
+0.5348735169176119
+0.5243625990429793
+0.5140216569857357
+0.5036846762826384
+0.49330673743341724
+0.4827246039731494
+0.4714866924807228
+0.46008767937618383
+0.44842576293128633
+0.43712919288926017
+0.4264058548357003
+0.41578800746270134
+0.40553467840927804
+0.3952322027438534
+0.38502865612338205
+0.37494504798108247
+0.36527552859716594
+0.3562151631412292
+0.3471174687143672
+0.3378100136077759
+0.3286450052926366
+0.3194954534280035
+0.3104960794811366
+0.30169588718043017
+0.29320770439789223
+0.2851339428170316
+0.2775262136577681
+0.2705976827635888
+0.2642162232341277
+0.2581319159366946
+0.25215417623227027
+0.24635042180862582
+0.24076016447211382
+0.2352612116306475
+0.22980954591037686
+0.22425210908087323
+0.2182925640222298
+0.21161151098126862
+0.20396794244081784
+0.19522234333586158
+0.18524165214197616
+0.17380736699507915
+0.16062365567853595
+0.1453567712304755
+0.12771755696515344
+0.10780875116479441
+0.0863645775310708
+0.06499017109073807
+0.04567240383684011
+0.029956201643692996
+0.018389090000706376
+0.010583536322306776
+0.0056945923004052415
+0.0028356245991423275
+0.001282137130408118
+0.0005109590309958684
+0.00017142819717599743
+4.4886053894517664e-05
+7.964006730807538e-06
+6.96632299316915e-07
+1.0868009617044407e-08
+1.6760001447599677e-43
+)
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/0/R b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/R
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/0/R
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/R
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/0/U b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/U
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/0/U
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/0/U
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/points b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/points
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.DFSEM/points
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/boundaryData/inlet/points
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/transportProperties b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/transportProperties
new file mode 120000
index 0000000000000000000000000000000000000000..e6a4e4f7fc53f2c83e8fcde854665db55f6466d2
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/transportProperties
@@ -0,0 +1 @@
+../../common/constant/transportProperties
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/turbulenceProperties b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/turbulenceProperties
new file mode 120000
index 0000000000000000000000000000000000000000..f9d514a2f3f6ca0865f5abfdc16e644e105946cf
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/constant/turbulenceProperties
@@ -0,0 +1 @@
+../../common/constant/turbulenceProperties
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/system b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/system
new file mode 120000
index 0000000000000000000000000000000000000000..86c0ebd6e7baf5d4e389403fe98512613a6bdb8a
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/DFSEM/system
@@ -0,0 +1 @@
+../common/system
\ No newline at end of file
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/k b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/U
similarity index 65%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/k
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/U
index 04a743406ea18d88a902ce3b6d84ac07ed84c93a..c40be233ae3abc10f471f8a969e08ff48dc4ce43 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/k
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/U
@@ -9,46 +9,46 @@ FoamFile
 {
     version     2.0;
     format      ascii;
-    class       volScalarField;
-    location    "1";
-    object      k;
+    class       volVectorField;
+    object      U;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 2 -2 0 0 0 0 ];
+dimensions      [0 1 -1 0 0 0 0];
 
-internalField   uniform 1e-5;
+internalField   uniform (0 0 0);
 
 boundaryField
 {
-    bottomWall
+    inlet
     {
-        type            fixedValue;
-        value           uniform 0;
+        type            turbulentDigitalFilterInlet;
+        fsm             true;
+        n               ( 64 70 );
+        L
+        (
+            0.78035508 0.31085352 0.342261 0.1728125 0.171875
+            0.22459375 0.172787596 0.171889998 0.224578995
+        );
+        Ubulk           17.55;
+        value           $internalField;
     }
-    topWall
+
+    outlet
     {
-        type            fixedValue;
-        value           uniform 0;
+        type            advective;
+        value           $internalField;
     }
-    sides_half0
+
+    "(bottom|top)"
     {
-        type            cyclic;
+        type            noSlip;
     }
-    sides_half1
+
+    "(left|right)"
     {
         type            cyclic;
     }
-    inlet
-    {
-        type            fixedValue;
-        value           $internalField;
-    }
-    outlet
-    {
-        type            fixedValue;
-        value           $internalField;
-    }
 }
 
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/nut b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/nut
new file mode 120000
index 0000000000000000000000000000000000000000..8186897dc1e524952025d143bc577da45c565816
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/nut
@@ -0,0 +1 @@
+../../common/0.orig/nut
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/p b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/p
new file mode 120000
index 0000000000000000000000000000000000000000..d1e1225671bd34ace34b88068ef438565d22d1b6
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/0.orig/p
@@ -0,0 +1 @@
+../../common/0.orig/p
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.FSM/0/R b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/boundaryData/inlet/0/R
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.FSM/0/R
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/boundaryData/inlet/0/R
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.FSM/0/UMean b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/boundaryData/inlet/0/UMean
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.FSM/0/UMean
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/boundaryData/inlet/0/UMean
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.FSM/points b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/boundaryData/inlet/points
similarity index 100%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/constant/boundaryData/inlet.FSM/points
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/boundaryData/inlet/points
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/transportProperties b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/transportProperties
new file mode 120000
index 0000000000000000000000000000000000000000..e6a4e4f7fc53f2c83e8fcde854665db55f6466d2
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/transportProperties
@@ -0,0 +1 @@
+../../common/constant/transportProperties
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/turbulenceProperties b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/turbulenceProperties
new file mode 120000
index 0000000000000000000000000000000000000000..f9d514a2f3f6ca0865f5abfdc16e644e105946cf
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/constant/turbulenceProperties
@@ -0,0 +1 @@
+../../common/constant/turbulenceProperties
\ No newline at end of file
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/system b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/system
new file mode 120000
index 0000000000000000000000000000000000000000..86c0ebd6e7baf5d4e389403fe98512613a6bdb8a
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/FSM/system
@@ -0,0 +1 @@
+../common/system
\ No newline at end of file
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/nut b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/0.orig/nut
similarity index 74%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/nut
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/0.orig/nut
index cbc9635d1e49f51329f2f97b49af512ffda47fdb..c373efb05d4ba1add890b283ca5ce4b3241c0648 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/nut
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/0.orig/nut
@@ -10,43 +10,31 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    location    "1";
     object      nut;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 2 -1 0 0 0 0 ];
+dimensions      [0 2 -1 0 0 0 0];
 
 internalField   uniform 0;
 
 boundaryField
 {
-    bottomWall
+    "(inlet|outlet)"
     {
-        type            zeroGradient;
+        type            calculated;
+        value           uniform 1e-08;
     }
-    topWall
+
+    "(bottom|top)"
     {
         type            zeroGradient;
     }
-    sides_half0
-    {
-        type            cyclic;
-    }
-    sides_half1
+
+    "(left|right)"
     {
         type            cyclic;
     }
-    inlet
-    {
-        type            calculated;
-        value           uniform 1e-8;
-    }
-    outlet
-    {
-        type            calculated;
-        value           uniform 1e-8;
-    }
 }
 
 
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/p b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/0.orig/p
similarity index 81%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/p
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/0.orig/p
index ab5e9178f4fe54e6393bc01d9dcbb8ef03824ee2..e0e385c84a221350b2b0087e0b32bc92b48534c1 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/0/p
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/0.orig/p
@@ -10,42 +10,36 @@ FoamFile
     version     2.0;
     format      ascii;
     class       volScalarField;
-    location    "1";
     object      p;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-dimensions      [ 0 2 -2 0 0 0 0 ];
+dimensions      [0 2 -2 0 0 0 0];
 
 internalField   uniform 0;
 
 boundaryField
 {
-    bottomWall
+    inlet
     {
         type            zeroGradient;
     }
-    topWall
+
+    "(bottom|top)"
     {
         type            zeroGradient;
     }
-    sides_half0
+
+    outlet
     {
-        type            cyclic;
+        type            fixedValue;
+        value           $internalField;
     }
-    sides_half1
+
+    "(left|right)"
     {
         type            cyclic;
     }
-    inlet
-    {
-        type            zeroGradient;
-    }
-    outlet
-    {
-        type            fixedValue;
-        value           uniform 0;
-    }
 }
 
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.DFSEM/U b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/constant/transportProperties
similarity index 81%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.DFSEM/U
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/constant/transportProperties
index 5602f3c3fab7241e59545205974b692691763982..02df1149468057ca8527ff6a5a0c35a7616a19ea 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/0.orig/inlet.DFSEM/U
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/constant/transportProperties
@@ -9,18 +9,14 @@ FoamFile
 {
     version     2.0;
     format      ascii;
-    class       volVectorField;
-    object      U;
+    class       dictionary;
+    object      transportProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-inlet
-{
-    type            turbulentDFSEMInlet;
-    delta           1;
-    nCellPerEddy    1;
-    mapMethod       nearestCell;
-}
+transportModel  Newtonian;
+
+nu              2.5494595145829e-3;
 
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/turbulenceProperties b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/constant/turbulenceProperties
similarity index 88%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/turbulenceProperties
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/constant/turbulenceProperties
index 1970c8e00ff5917e416f4dde7f6d467668840f53..2675f2d568fc9373bad014bf4505cf57892060b9 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/constant/turbulenceProperties
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/constant/turbulenceProperties
@@ -10,26 +10,21 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "constant";
     object      turbulenceProperties;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-simulationType LES;
+simulationType      LES;
 
 LES
 {
-    turbulence      on;
-
-    LESModel        kEqn;
-    kEqnCoeffs
+    LESModel        Smagorinsky;
+    SmagorinskyCoeffs
     {
         Ce              1.048;
-        Ck              0.02654; // set to approximate a Cs of 0.065
+        Ck              0.0265463553; // Updated to give Cs = 0.065
     }
 
-    printCoeffs     on;
-
     delta           vanDriest;
     vanDriestCoeffs
     {
@@ -41,6 +36,9 @@ LES
         Aplus           26;
         Cdelta          0.158;
     }
+
+    printCoeffs     on;
+    turbulence      on;
 }
 
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/blockMeshDict b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/blockMeshDict
similarity index 86%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/system/blockMeshDict
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/blockMeshDict
index 65a68bbfbfb831df4bdcfd7807fbe82daea1f869..918a61fadd82c47b21fa79d61381518ecf68a2dd 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/blockMeshDict
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/blockMeshDict
@@ -16,10 +16,11 @@ FoamFile
 
 scale   1;
 
-L   0.125664;
-H   1.0;
-H2  #eval{ 2*$H };
-W   #eval{ pi() };
+// L:length, H:height, W:width
+L       0.125664;
+H       1.0;
+H2      #eval{ 2*$H };
+W       #eval{ pi() };
 
 vertices
 (
@@ -40,22 +41,18 @@ vertices
 
 blocks
 (
-    hex ( 0  1  2  5  6  7  8 11) (1 23 82) simpleGrading (1  15 1)
-    hex ( 5  2  3  4 11  8  9 10) (1 23 82) simpleGrading (1 -15 1)
-);
-
-edges
-(
+    hex ( 0  1  2  5  6  7  8 11) (1 23 82) simpleGrading (1  10.7028 1)
+    hex ( 5  2  3  4 11  8  9 10) (1 23 82) simpleGrading (1 -10.7028 1)
 );
 
 boundary
 (
-    bottomWall
+    bottom
     {
         type            wall;
         faces           ((0 6 7 1));
     }
-    topWall
+    top
     {
         type            wall;
         faces           ((4 3 9 10));
@@ -84,9 +81,5 @@ boundary
     }
 );
 
-mergePatchPairs
-(
-);
-
 
 // ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/columnAverage b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/columnAverage
new file mode 100644
index 0000000000000000000000000000000000000000..7a61f2956a796ce52d54f093a5c618f2f1ea4be5
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/columnAverage
@@ -0,0 +1,13 @@
+// -*- C++ -*-
+
+type            columnAverage;
+libs            (fieldFunctionObjects);
+
+patches         ( left );
+fields          ( UPrime2Mean UMean );
+
+executeControl  onEnd;
+writeControl    onEnd;
+
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/controlDict.template b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/controlDict
similarity index 66%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/system/controlDict.template
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/controlDict
index 9361a6ac61f023ecb2726b3c6c456663255f44d5..d51a9509fa4afc95bf13205bd1b2154618d44c39 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/controlDict.template
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/controlDict
@@ -10,12 +10,11 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      controlDict;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
 
-application     pimpleFoam;
+application     pisoFoam;
 
 startFrom       latestTime;
 
@@ -23,9 +22,9 @@ startTime       0;
 
 stopAt          endTime;
 
-endTime         END_TIME;
+endTime         30.0;
 
-deltaT          4e-3;
+deltaT          2e-3;
 
 writeControl    timeStep;
 
@@ -47,7 +46,6 @@ runTimeModifiable false;
 
 adjustTimeStep  false;
 
-
 // Allow 10% of time for initialisation before sampling
 timeStart       #eval{ 0.1 * ${/endTime} };
 
@@ -70,35 +68,6 @@ functions
             }
         );
     }
-
-    sampling1
-    {
-        type                sets;
-        libs                (sampling);
-        interpolationScheme cellPoint;
-        setFormat           raw;
-        writeControl        onEnd;
-        fields              (UPrime2Mean UMean);
-
-        sets
-        (
-            inletPatch
-            {
-                type        face;
-                axis        y;
-                start       (0.0 0 1.57);
-                end         (0.0 2 1.57);
-            }
-
-            inletCell
-            {
-                type        midPoint;
-                axis        y;
-                start       (0.062832 0 1.57);
-                end         (0.062832 2 1.57);
-            }
-        );
-    }
 }
 
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/decomposeParDict b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/decomposeParDict
similarity index 93%
rename from tutorials/verificationAndValidation/turbulentInflow/PCF/system/decomposeParDict
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/decomposeParDict
index 79b5aced9ff1cb8beadf27301f2066a276b55d3c..4c8d7733d3b4eab2b4e39bf7de07aabaf65e2c37 100644
--- a/tutorials/verificationAndValidation/turbulentInflow/PCF/system/decomposeParDict
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/decomposeParDict
@@ -16,11 +16,7 @@ FoamFile
 
 numberOfSubdomains  4;
 
-method              hierarchical;
+method              random;
 
-coeffs
-{
-    n    (1 2 2);
-}
 
 // ************************************************************************* //
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSchemes b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/fvSchemes
similarity index 76%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSchemes
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/fvSchemes
index b1fc3f3b705231d51faa18a79331605e38c9c089..2e1a721683731e7106cb941e964995e5d289f69a 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSchemes
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/fvSchemes
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      fvSchemes;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -22,24 +21,21 @@ ddtSchemes
 
 gradSchemes
 {
-    default         leastSquares;
+    default         Gauss linear;
 }
 
 divSchemes
 {
     default         none;
+
     div(phi,U)      Gauss linear;
-    div(phi,k)      Gauss limitedLinear 0.1;
-    div(phi,B)      Gauss limitedLinear 0.1;
-    div(B)          Gauss linear;
-    div(phi,nuTilda) Gauss limitedLinear 0.1;
-    div(LambVector)  Gauss linear;
+
     div((nuEff*dev2(T(grad(U))))) Gauss linear;
 }
 
 laplacianSchemes
 {
-    default         Gauss linear uncorrected;
+    default         Gauss linear orthogonal;
 }
 
 interpolationSchemes
@@ -49,7 +45,7 @@ interpolationSchemes
 
 snGradSchemes
 {
-    default         uncorrected;
+    default         orthogonal;
 }
 
 
diff --git a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSolution b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/fvSolution
similarity index 78%
rename from tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSolution
rename to tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/fvSolution
index 0f8e6c51574d796b784b7f3664cc2a2c3c56e009..44a6f6f6a701a54874d6f5713e1704f5f211da74 100644
--- a/tutorials/incompressible/pimpleFoam/LES/channel395DFSEM/system/fvSolution
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/fvSolution
@@ -10,7 +10,6 @@ FoamFile
     version     2.0;
     format      ascii;
     class       dictionary;
-    location    "system";
     object      fvSolution;
 }
 // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * //
@@ -20,13 +19,13 @@ solvers
     p
     {
         solver          GAMG;
-        tolerance       0;
-        relTol          0.01;
         smoother        DICGaussSeidel;
+        tolerance       1e-06;
+        relTol          0.001;
         nPreSweeps      0;
         nPostSweeps     2;
         cacheAgglomeration true;
-        nCellsInCoarsestLevel 10;
+        nCellsInCoarsestLevel 1000;
         agglomerator    faceAreaPair;
         mergeLevels     1;
     }
@@ -34,33 +33,32 @@ solvers
     pFinal
     {
         $p;
-        smoother        DICGaussSeidel;
         tolerance       1e-06;
         relTol          0;
     }
 
-    "(U|k)"
+    U
     {
-        solver          smoothSolver;
-        smoother        symGaussSeidel;
-        tolerance       1e-05;
+        solver          PBiCG;
+        preconditioner  DILU;
+        tolerance       1e-08;
         relTol          0.1;
-        minIter         1;
     }
 
-    "(U|k)Final"
+    UFinal
     {
         $U;
-        tolerance       1e-06;
+        tolerance       1e-08;
         relTol          0;
     }
 }
 
-PIMPLE
+PISO
 {
-    nOuterCorrectors 3;
-    nCorrectors     1;
+    nCorrectors         3;
     nNonOrthogonalCorrectors 0;
+    pRefCell            0;
+    pRefValue           0;
 }
 
 
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/sampleCellPatchConstrained b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/sampleCellPatchConstrained
new file mode 100644
index 0000000000000000000000000000000000000000..ad7ff9cf256e9a926d40fdd092e9fd23873a4790
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/sampleCellPatchConstrained
@@ -0,0 +1,35 @@
+// -*- C++ -*-
+
+type            sets;
+libs            (sampling);
+interpolationScheme cellPatchConstrained;
+setFormat       raw;
+writeControl    onEnd;
+
+fields
+(
+    columnAverage:columnAverage(UMean)
+    columnAverage:columnAverage(UPrime2Mean)
+);
+
+sets
+(
+    inletPatch
+    {
+        type        face;
+        axis        y;
+        start       (0.0 0 1.57);
+        end         (0.0 2 1.57);
+    }
+
+    inletCell
+    {
+        type        midPoint;
+        axis        y;
+        start       (0.062832 0 1.57);
+        end         (0.062832 2 1.57);
+    }
+);
+
+
+// ************************************************************************* //
diff --git a/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/sampleCellPoint b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/sampleCellPoint
new file mode 100644
index 0000000000000000000000000000000000000000..6bbbf5ceee9d9b3f1b8cf2773f4a894ccf525ca5
--- /dev/null
+++ b/tutorials/verificationAndValidation/turbulentInflow/oneCellThickPlaneChannel/setups.orig/common/system/sampleCellPoint
@@ -0,0 +1,35 @@
+// -*- C++ -*-
+
+type            sets;
+libs            (sampling);
+interpolationScheme cellPoint;
+setFormat       raw;
+writeControl    onEnd;
+
+fields
+(
+    columnAverage:columnAverage(UMean)
+    columnAverage:columnAverage(UPrime2Mean)
+);
+
+sets
+(
+    inletPatch
+    {
+        type        face;
+        axis        y;
+        start       (0.0 0 1.57);
+        end         (0.0 2 1.57);
+    }
+
+    inletCell
+    {
+        type        midPoint;
+        axis        y;
+        start       (0.062832 0 1.57);
+        end         (0.062832 2 1.57);
+    }
+);
+
+
+// ************************************************************************* //