diff --git a/src/finiteArea/finiteArea/d2dt2Schemes/EulerFaD2dt2Scheme/EulerFaD2dt2Scheme.C b/src/finiteArea/finiteArea/d2dt2Schemes/EulerFaD2dt2Scheme/EulerFaD2dt2Scheme.C
index e80016d9360a257e4ead4ccc788314140722d90e..aeca2e05161f8d0fe3d2f0668ea26baaccdafb10 100644
--- a/src/finiteArea/finiteArea/d2dt2Schemes/EulerFaD2dt2Scheme/EulerFaD2dt2Scheme.C
+++ b/src/finiteArea/finiteArea/d2dt2Schemes/EulerFaD2dt2Scheme/EulerFaD2dt2Scheme.C
@@ -82,10 +82,10 @@ EulerFaD2dt2Scheme<Type>::facD2dt2
 
     if (mesh().moving())
     {
-        scalar halfRdeltaT2 = rDeltaT2.value()/2.0;
+        scalar halfRdeltaT2 = 0.5*rDeltaT2.value();
 
-        scalarField SS0 = mesh().S() + mesh().S0();
-        scalarField S0S00 = mesh().S0() + mesh().S00();
+        scalarField SS0(mesh().S() + mesh().S0());
+        scalarField S0S00(mesh().S0() + mesh().S00());
 
         tmp<GeometricField<Type, faPatchField, areaMesh>> tdt2dt2
         (
@@ -148,10 +148,10 @@ EulerFaD2dt2Scheme<Type>::facD2dt2
 
     if (mesh().moving())
     {
-        scalar halfRdeltaT2 = rDeltaT2.value()/2.0;
+        scalar halfRdeltaT2 = 0.5*rDeltaT2.value();
 
-        scalarField SS0 = mesh().S() + mesh().S0();
-        scalarField S0S00 = mesh().S0() + mesh().S00();
+        scalarField SS0(mesh().S() + mesh().S0());
+        scalarField S0S00(mesh().S0() + mesh().S00());
 
         return tmp<GeometricField<Type, faPatchField, areaMesh>>
         (
@@ -228,13 +228,15 @@ EulerFaD2dt2Scheme<Type>::facD2dt2
     {
         scalar halfRdeltaT2 = 0.5*rDeltaT2.value();
 
-        scalarField SS0rhoRho0 =
-            (mesh().S() + mesh().S0())
-           *rho.value();
+        scalarField SS0rhoRho0
+        (
+            (mesh().S() + mesh().S0())*rho.value()
+        );
 
-        scalarField S0S00rho0Rho00 =
-            (mesh().S0() + mesh().S00())
-           *rho.value();
+        scalarField S0S00rho0Rho00
+        (
+            (mesh().S0() + mesh().S00())*rho.value()
+        );
 
         return tmp<GeometricField<Type, faPatchField, areaMesh>>
         (
@@ -489,7 +491,6 @@ EulerFaD2dt2Scheme<Type>::famD2dt2
         scalar halfRdeltaT2 = 0.5*rDeltaT2;
 
         scalarField SS0(mesh().S() + mesh().S0());
-
         scalarField S0S00(mesh().S0() + mesh().S00());
 
         fam.diag() = rho.value()*(coefft*halfRdeltaT2)*SS0;
diff --git a/src/finiteArea/finiteArea/ddtSchemes/boundedBackwardFaDdtScheme/boundedBackwardFaDdtScheme.H b/src/finiteArea/finiteArea/ddtSchemes/boundedBackwardFaDdtScheme/boundedBackwardFaDdtScheme.H
index 97d501734b5350f8da1ff9550e92885ab3380a04..f778368530a17784fd1835fd6bfeb8fe35fc3b8e 100644
--- a/src/finiteArea/finiteArea/ddtSchemes/boundedBackwardFaDdtScheme/boundedBackwardFaDdtScheme.H
+++ b/src/finiteArea/finiteArea/ddtSchemes/boundedBackwardFaDdtScheme/boundedBackwardFaDdtScheme.H
@@ -76,10 +76,8 @@ class boundedBackwardFaDdtScheme
             {
                 return GREAT;
             }
-            else
-            {
-                return deltaT0_();
-            }
+
+            return deltaT0_();
         }
 
 
diff --git a/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaGrad.C b/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaGrad.C
index 656187479e7bb822869d50d053f3142e97912ec0..118c60e9f2cd367e3b493a31ba36e86e5c8d3345 100644
--- a/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaGrad.C
+++ b/src/finiteArea/finiteArea/gradSchemes/leastSquaresFaGrad/leastSquaresFaGrad.C
@@ -91,10 +91,10 @@ leastSquaresFaGrad<Type>::calcGrad
 
     forAll(own, edgei)
     {
-        label ownEdgeI = own[edgei];
-        label neiEdgeI = nei[edgei];
+        const label ownEdgeI = own[edgei];
+        const label neiEdgeI = nei[edgei];
 
-        Type deltaVsf = vsf[neiEdgeI] - vsf[ownEdgeI];
+        const Type deltaVsf(vsf[neiEdgeI] - vsf[ownEdgeI]);
 
         lsGrad[ownEdgeI] += ownLs[edgei]*deltaVsf;
         lsGrad[neiEdgeI] -= neiLs[edgei]*deltaVsf;
@@ -103,35 +103,23 @@ leastSquaresFaGrad<Type>::calcGrad
     // Boundary edges
     forAll(vsf.boundaryField(), patchi)
     {
-        const faePatchVectorField& patchOwnLs = ownLs.boundaryField()[patchi];
+        const faPatchField<Type>& bf = vsf.boundaryField()[patchi];
 
+        const Field<Type>& vsfp =
+        (
+            bf.coupled()
+          ? bf.patchNeighbourField().cref()
+          : const_cast<faPatchField<Type>&>(bf)
+        );
+
+        const faePatchVectorField& ownLsp = ownLs.boundaryField()[patchi];
         const labelUList& edgeFaces =
             lsGrad.boundaryField()[patchi].patch().edgeFaces();
 
-        if (vsf.boundaryField()[patchi].coupled())
-        {
-            Field<Type> neiVsf
-            (
-                vsf.boundaryField()[patchi].patchNeighbourField()
-            );
-
-            forAll(neiVsf, patchEdgeI)
-            {
-                lsGrad[edgeFaces[patchEdgeI]] +=
-                    patchOwnLs[patchEdgeI]
-                   *(neiVsf[patchEdgeI] - vsf[edgeFaces[patchEdgeI]]);
-            }
-        }
-        else
+        forAll(vsfp, pEdgei)
         {
-            const faPatchField<Type>& patchVsf = vsf.boundaryField()[patchi];
-
-            forAll(patchVsf, patchEdgeI)
-            {
-                lsGrad[edgeFaces[patchEdgeI]] +=
-                     patchOwnLs[patchEdgeI]
-                    *(patchVsf[patchEdgeI] - vsf[edgeFaces[patchEdgeI]]);
-            }
+            lsGrad[edgeFaces[pEdgei]] +=
+                ownLsp[pEdgei]*(vsfp[pEdgei] - vsf[edgeFaces[pEdgei]]);
         }
     }
 
diff --git a/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/edgeLimitedFaGrad/edgeLimitedFaGrads.C b/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/edgeLimitedFaGrad/edgeLimitedFaGrads.C
index 3aa9c4d205d9a36eab6e8eb38fb8c90f5f744a5e..a68d4f63ec717ad2578af29e386c879b88dc9d5c 100644
--- a/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/edgeLimitedFaGrad/edgeLimitedFaGrads.C
+++ b/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/edgeLimitedFaGrad/edgeLimitedFaGrads.C
@@ -91,22 +91,22 @@ tmp<areaVectorField> edgeLimitedGrad<scalar>::calcGrad
     const areaVectorField& C = mesh.areaCentres();
     const edgeVectorField& Cf = mesh.edgeCentres();
 
-    // create limiter
+    // Create limiter field
     scalarField limiter(vsf.internalField().size(), 1.0);
 
-    scalar rk = (1.0/k_ - 1.0);
+    const scalar rk = (1.0/k_ - 1.0);
 
     forAll(owner, edgei)
     {
-        label own = owner[edgei];
-        label nei = neighbour[edgei];
+        const label own = owner[edgei];
+        const label nei = neighbour[edgei];
 
-        scalar vsfOwn = vsf[own];
-        scalar vsfNei = vsf[nei];
+        const scalar vsfOwn = vsf[own];
+        const scalar vsfNei = vsf[nei];
 
         scalar maxEdge = max(vsfOwn, vsfNei);
         scalar minEdge = min(vsfOwn, vsfNei);
-        scalar maxMinEdge = rk*(maxEdge - minEdge);
+        const scalar maxMinEdge = rk*(maxEdge - minEdge);
         maxEdge += maxMinEdge;
         minEdge -= maxMinEdge;
 
@@ -114,7 +114,8 @@ tmp<areaVectorField> edgeLimitedGrad<scalar>::calcGrad
         limitEdge
         (
             limiter[own],
-            maxEdge - vsfOwn, minEdge - vsfOwn,
+            maxEdge - vsfOwn,
+            minEdge - vsfOwn,
             (Cf[edgei] - C[own]) & g[own]
         );
 
@@ -122,67 +123,53 @@ tmp<areaVectorField> edgeLimitedGrad<scalar>::calcGrad
         limitEdge
         (
             limiter[nei],
-            maxEdge - vsfNei, minEdge - vsfNei,
+            maxEdge - vsfNei,
+            minEdge - vsfNei,
             (Cf[edgei] - C[nei]) & g[nei]
         );
     }
 
-    const areaScalarField::Boundary& bsf = vsf.boundaryField();
+    // Lambda expression to update limiter for boundary edges
+    auto updateLimiter = [&](const label patchi, const scalarField& fld) -> void
+    {
+        const labelUList& pOwner = mesh.boundary()[patchi].edgeFaces();
+        const vectorField& pCf = Cf.boundaryField()[patchi];
+
+        forAll(pOwner, edgei)
+        {
+            const label own = pOwner[edgei];
+
+            const scalar vsfOwn = vsf[own];
+            const scalar vsfNei = fld[edgei];
+
+            scalar maxEdge = max(vsfOwn, vsfNei);
+            scalar minEdge = min(vsfOwn, vsfNei);
+            const scalar maxMinEdge = rk*(maxEdge - minEdge);
+            maxEdge += maxMinEdge;
+            minEdge -= maxMinEdge;
+
+            limitEdge
+            (
+                limiter[own],
+                maxEdge - vsfOwn,
+                minEdge - vsfOwn,
+                (pCf[edgei] - C[own]) & g[own]
+            );
+        }
+    };
 
+    const areaScalarField::Boundary& bsf = vsf.boundaryField();
     forAll(bsf, patchi)
     {
         const faPatchScalarField& psf = bsf[patchi];
 
-        const labelUList& pOwner = mesh.boundary()[patchi].edgeFaces();
-        const vectorField& pCf = Cf.boundaryField()[patchi];
-
         if (psf.coupled())
         {
-            const scalarField psfNei(psf.patchNeighbourField());
-
-            forAll(pOwner, pEdgei)
-            {
-                label own = pOwner[pEdgei];
-
-                scalar vsfOwn = vsf[own];
-                scalar vsfNei = psfNei[pEdgei];
-
-                scalar maxEdge = max(vsfOwn, vsfNei);
-                scalar minEdge = min(vsfOwn, vsfNei);
-                scalar maxMinEdge = rk*(maxEdge - minEdge);
-                maxEdge += maxMinEdge;
-                minEdge -= maxMinEdge;
-
-                limitEdge
-                (
-                    limiter[own],
-                    maxEdge - vsfOwn, minEdge - vsfOwn,
-                    (pCf[pEdgei] - C[own]) & g[own]
-                );
-            }
+            updateLimiter(patchi, psf.patchNeighbourField());
         }
         else if (psf.fixesValue())
         {
-            forAll(pOwner, pEdgei)
-            {
-                label own = pOwner[pEdgei];
-
-                scalar vsfOwn = vsf[own];
-                scalar vsfNei = psf[pEdgei];
-
-                scalar maxEdge = max(vsfOwn, vsfNei);
-                scalar minEdge = min(vsfOwn, vsfNei);
-                scalar maxMinEdge = rk*(maxEdge - minEdge);
-                maxEdge += maxMinEdge;
-                minEdge -= maxMinEdge;
-
-                limitEdge
-                (
-                    limiter[own],
-                    maxEdge - vsfOwn, minEdge - vsfOwn,
-                    (pCf[pEdgei] - C[own]) & g[own]
-                );
-            }
+            updateLimiter(patchi, psf);
         }
     }
 
@@ -226,35 +213,33 @@ tmp<areaTensorField> edgeLimitedGrad<vector>::calcGrad
     const areaVectorField& C = mesh.areaCentres();
     const edgeVectorField& Cf = mesh.edgeCentres();
 
-    // create limiter
+    // Create limiter
     scalarField limiter(vvf.internalField().size(), 1.0);
 
-    scalar rk = (1.0/k_ - 1.0);
+    const scalar rk = (1.0/k_ - 1.0);
 
     forAll(owner, edgei)
     {
-        label own = owner[edgei];
-        label nei = neighbour[edgei];
-
-        vector vvfOwn = vvf[own];
-        vector vvfNei = vvf[nei];
+        const label own = owner[edgei];
+        const label nei = neighbour[edgei];
 
         // owner side
-        vector gradf = (Cf[edgei] - C[own]) & g[own];
+        vector gradf((Cf[edgei] - C[own]) & g[own]);
 
-        scalar vsfOwn = gradf & vvfOwn;
-        scalar vsfNei = gradf & vvfNei;
+        scalar vsfOwn = gradf & vvf[own];
+        scalar vsfNei = gradf & vvf[nei];
 
         scalar maxEdge = max(vsfOwn, vsfNei);
         scalar minEdge = min(vsfOwn, vsfNei);
-        scalar maxMinEdge = rk*(maxEdge - minEdge);
+        const scalar maxMinEdge = rk*(maxEdge - minEdge);
         maxEdge += maxMinEdge;
         minEdge -= maxMinEdge;
 
         limitEdge
         (
             limiter[own],
-            maxEdge - vsfOwn, minEdge - vsfOwn,
+            maxEdge - vsfOwn,
+            minEdge - vsfOwn,
             magSqr(gradf)
         );
 
@@ -262,8 +247,8 @@ tmp<areaTensorField> edgeLimitedGrad<vector>::calcGrad
         // neighbour side
         gradf = (Cf[edgei] - C[nei]) & g[nei];
 
-        vsfOwn = gradf & vvfOwn;
-        vsfNei = gradf & vvfNei;
+        vsfOwn = gradf & vvf[own];
+        vsfNei = gradf & vvf[nei];
 
         maxEdge = max(vsfOwn, vsfNei);
         minEdge = min(vsfOwn, vsfNei);
@@ -271,78 +256,57 @@ tmp<areaTensorField> edgeLimitedGrad<vector>::calcGrad
         limitEdge
         (
             limiter[nei],
-            maxEdge - vsfNei, minEdge - vsfNei,
+            maxEdge - vsfNei,
+            minEdge - vsfNei,
             magSqr(gradf)
         );
     }
 
 
-    const areaVectorField::Boundary& bvf = vvf.boundaryField();
-
-    forAll(bvf, patchi)
+    // Lambda expression to update limiter for boundary edges
+    auto updateLimiter = [&](const label patchi, const vectorField& fld) -> void
     {
-        const faPatchVectorField& psf = bvf[patchi];
-
         const labelUList& pOwner = mesh.boundary()[patchi].edgeFaces();
         const vectorField& pCf = Cf.boundaryField()[patchi];
 
-        if (psf.coupled())
+        forAll(pOwner, edgei)
         {
-            const vectorField psfNei(psf.patchNeighbourField());
-
-            forAll(pOwner, pEdgei)
-            {
-                label own = pOwner[pEdgei];
-
-                vector vvfOwn = vvf[own];
-                vector vvfNei = psfNei[pEdgei];
-
-                vector gradf = (pCf[pEdgei] - C[own]) & g[own];
+            const label own = pOwner[edgei];
+
+            const vector gradf((pCf[edgei] - C[own]) & g[own]);
+
+            const scalar vsfOwn = gradf & vvf[own];
+            const scalar vsfNei = gradf & fld[edgei];
+
+            scalar maxEdge = max(vsfOwn, vsfNei);
+            scalar minEdge = min(vsfOwn, vsfNei);
+            const scalar maxMinEdge = rk*(maxEdge - minEdge);
+            maxEdge += maxMinEdge;
+            minEdge -= maxMinEdge;
+
+            limitEdge
+            (
+                limiter[own],
+                maxEdge - vsfOwn,
+                minEdge - vsfOwn,
+                magSqr(gradf)
+            );
+        }
+    };
 
-                scalar vsfOwn = gradf & vvfOwn;
-                scalar vsfNei = gradf & vvfNei;
 
-                scalar maxEdge = max(vsfOwn, vsfNei);
-                scalar minEdge = min(vsfOwn, vsfNei);
-                scalar maxMinEdge = rk*(maxEdge - minEdge);
-                maxEdge += maxMinEdge;
-                minEdge -= maxMinEdge;
+    const areaVectorField::Boundary& bvf = vvf.boundaryField();
+    forAll(bvf, patchi)
+    {
+        const faPatchVectorField& psf = bvf[patchi];
 
-                limitEdge
-                (
-                    limiter[own],
-                    maxEdge - vsfOwn, minEdge - vsfOwn,
-                    magSqr(gradf)
-                );
-            }
+        if (psf.coupled())
+        {
+            updateLimiter(patchi, psf.patchNeighbourField());
         }
         else if (psf.fixesValue())
         {
-            forAll(pOwner, pEdgei)
-            {
-                label own = pOwner[pEdgei];
-
-                vector vvfOwn = vvf[own];
-                vector vvfNei = psf[pEdgei];
-
-                vector gradf = (pCf[pEdgei] - C[own]) & g[own];
-
-                scalar vsfOwn = gradf & vvfOwn;
-                scalar vsfNei = gradf & vvfNei;
-
-                scalar maxEdge = max(vsfOwn, vsfNei);
-                scalar minEdge = min(vsfOwn, vsfNei);
-                scalar maxMinEdge = rk*(maxEdge - minEdge);
-                maxEdge += maxMinEdge;
-                minEdge -= maxMinEdge;
-
-                limitEdge
-                (
-                    limiter[own],
-                    maxEdge - vsfOwn, minEdge - vsfOwn,
-                    magSqr(gradf)
-                );
-            }
+            updateLimiter(patchi, psf);
         }
     }
 
diff --git a/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/faceLimitedFaGrad/faceLimitedFaGrads.C b/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/faceLimitedFaGrad/faceLimitedFaGrads.C
index da2fb1bf7b075c7a2a40d1492300647461aab67b..eb0cc9bcbd05eaf9f37004519f3e0f0d54db7ef6 100644
--- a/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/faceLimitedFaGrad/faceLimitedFaGrads.C
+++ b/src/finiteArea/finiteArea/gradSchemes/limitedGradSchemes/faceLimitedFaGrad/faceLimitedFaGrads.C
@@ -118,11 +118,11 @@ tmp<areaVectorField> faceLimitedGrad<scalar>::calcGrad
 
     forAll(owner, facei)
     {
-        label own = owner[facei];
-        label nei = neighbour[facei];
+        const label own = owner[facei];
+        const label nei = neighbour[facei];
 
-        scalar vsfOwn = vsf[own];
-        scalar vsfNei = vsf[nei];
+        const scalar vsfOwn = vsf[own];
+        const scalar vsfNei = vsf[nei];
 
         maxVsf[own] = max(maxVsf[own], vsfNei);
         minVsf[own] = min(minVsf[own], vsfNei);
@@ -132,37 +132,33 @@ tmp<areaVectorField> faceLimitedGrad<scalar>::calcGrad
     }
 
 
-    const areaScalarField::Boundary& bsf = vsf.boundaryField();
+    // Lambda expression to update limiter for boundary edges
+    auto updateLimiter = [&](const label patchi, const scalarField& fld) -> void
+    {
+        const labelUList& pOwner = mesh.boundary()[patchi].edgeFaces();
+
+        forAll(pOwner, facei)
+        {
+            const label own = pOwner[facei];
+            const scalar vsf = fld[facei];
+
+            maxVsf[own] = max(maxVsf[own], vsf);
+            minVsf[own] = min(minVsf[own], vsf);
+        }
+    };
 
+    const areaScalarField::Boundary& bsf = vsf.boundaryField();
     forAll(bsf, patchi)
     {
         const faPatchScalarField& psf = bsf[patchi];
 
-        const labelUList& pOwner = mesh.boundary()[patchi].edgeFaces();
-
         if (psf.coupled())
         {
-            scalarField psfNei(psf.patchNeighbourField());
-
-            forAll(pOwner, pFacei)
-            {
-                label own = pOwner[pFacei];
-                scalar vsfNei = psfNei[pFacei];
-
-                maxVsf[own] = max(maxVsf[own], vsfNei);
-                minVsf[own] = min(minVsf[own], vsfNei);
-            }
+            updateLimiter(patchi, psf.patchNeighbourField());
         }
         else
         {
-            forAll(pOwner, pFacei)
-            {
-                label own = pOwner[pFacei];
-                scalar vsfNei = psf[pFacei];
-
-                maxVsf[own] = max(maxVsf[own], vsfNei);
-                minVsf[own] = min(minVsf[own], vsfNei);
-            }
+            updateLimiter(patchi, psf);
         }
     }
 
@@ -171,19 +167,19 @@ tmp<areaVectorField> faceLimitedGrad<scalar>::calcGrad
 
     if (k_ < 1.0)
     {
-        scalarField maxMinVsf((1.0/k_ - 1.0)*(maxVsf - minVsf));
+        const scalarField maxMinVsf((1.0/k_ - 1.0)*(maxVsf - minVsf));
         maxVsf += maxMinVsf;
         minVsf -= maxMinVsf;
     }
 
 
-    // create limiter
+    // Create limiter
     scalarField limiter(vsf.internalField().size(), 1.0);
 
     forAll(owner, facei)
     {
-        label own = owner[facei];
-        label nei = neighbour[facei];
+        const label own = owner[facei];
+        const label nei = neighbour[facei];
 
         // owner side
         limitEdge
@@ -211,7 +207,7 @@ tmp<areaVectorField> faceLimitedGrad<scalar>::calcGrad
 
         forAll(pOwner, pFacei)
         {
-            label own = pOwner[pFacei];
+            const label own = pOwner[pFacei];
 
             limitEdge
             (
@@ -268,8 +264,8 @@ tmp<areaTensorField> faceLimitedGrad<vector>::calcGrad
 
     forAll(owner, facei)
     {
-        label own = owner[facei];
-        label nei = neighbour[facei];
+        const label own = owner[facei];
+        const label nei = neighbour[facei];
 
         const vector& vsfOwn = vsf[own];
         const vector& vsfNei = vsf[nei];
@@ -282,36 +278,33 @@ tmp<areaTensorField> faceLimitedGrad<vector>::calcGrad
     }
 
 
-    const areaVectorField::Boundary& bsf = vsf.boundaryField();
+    // Lambda expression to update limiter for boundary edges
+    auto updateLimiter = [&](const label patchi, const vectorField& fld) -> void
+    {
+        const labelUList& pOwner = mesh.boundary()[patchi].edgeFaces();
 
+        forAll(pOwner, facei)
+        {
+            const label own = pOwner[facei];
+            const vector& vsf = fld[facei];
+
+            maxVsf[own] = max(maxVsf[own], vsf);
+            minVsf[own] = min(minVsf[own], vsf);
+        }
+    };
+
+    const areaVectorField::Boundary& bsf = vsf.boundaryField();
     forAll(bsf, patchi)
     {
         const faPatchVectorField& psf = bsf[patchi];
-        const labelUList& pOwner = mesh.boundary()[patchi].edgeFaces();
 
         if (psf.coupled())
         {
-            vectorField psfNei(psf.patchNeighbourField());
-
-            forAll(pOwner, pFacei)
-            {
-                label own = pOwner[pFacei];
-                const vector& vsfNei = psfNei[pFacei];
-
-                maxVsf[own] = max(maxVsf[own], vsfNei);
-                minVsf[own] = min(minVsf[own], vsfNei);
-            }
+            updateLimiter(patchi, psf.patchNeighbourField());
         }
         else
         {
-            forAll(pOwner, pFacei)
-            {
-                label own = pOwner[pFacei];
-                const vector& vsfNei = psf[pFacei];
-
-                maxVsf[own] = max(maxVsf[own], vsfNei);
-                minVsf[own] = min(minVsf[own], vsfNei);
-            }
+            updateLimiter(patchi, psf);
         }
     }
 
@@ -320,7 +313,7 @@ tmp<areaTensorField> faceLimitedGrad<vector>::calcGrad
 
     if (k_ < 1.0)
     {
-        vectorField maxMinVsf((1.0/k_ - 1.0)*(maxVsf - minVsf));
+        const vectorField maxMinVsf((1.0/k_ - 1.0)*(maxVsf - minVsf));
         maxVsf += maxMinVsf;
         minVsf -= maxMinVsf;
 
@@ -329,13 +322,13 @@ tmp<areaTensorField> faceLimitedGrad<vector>::calcGrad
     }
 
 
-    // create limiter
+    // Create limiter
     vectorField limiter(vsf.internalField().size(), vector::one);
 
     forAll(owner, facei)
     {
-        label own = owner[facei];
-        label nei = neighbour[facei];
+        const label own = owner[facei];
+        const label nei = neighbour[facei];
 
         // owner side
         limitEdge
@@ -363,7 +356,7 @@ tmp<areaTensorField> faceLimitedGrad<vector>::calcGrad
 
         forAll(pOwner, pFacei)
         {
-            label own = pOwner[pFacei];
+            const label own = pOwner[pFacei];
 
             limitEdge
             (
diff --git a/src/finiteArea/interpolation/edgeInterpolation/schemes/Gamma/Gamma.H b/src/finiteArea/interpolation/edgeInterpolation/schemes/Gamma/Gamma.H
index 18b4973828f7747b7929c2c2b21079b1a5730df1..6b3eb5f3be418dd0054f5aac358063c7f4dfd4a3 100644
--- a/src/finiteArea/interpolation/edgeInterpolation/schemes/Gamma/Gamma.H
+++ b/src/finiteArea/interpolation/edgeInterpolation/schemes/Gamma/Gamma.H
@@ -76,7 +76,7 @@ public:
 
         // Rescale k_ to be >= 0 and <= 0.5 (TVD conformant)
         // and avoid the /0 when k_ = 0
-        k_ = max(k_/2.0, SMALL);
+        k_ = max(0.5*k_, SMALL);
     }
 
 
@@ -91,30 +91,19 @@ public:
         const vector& d
     ) const
     {
-        scalar magd = mag(d);
-        vector dHat = d/mag(d);
+        const vector dHat(normalised(d));
 
-        scalar gradf = (phiN - phiP)/magd;
-
-        scalar gradcf;
-        scalar udWeight;
-
-        if (faceFlux > 0)
-        {
-            gradcf = dHat & gradcP;
-            udWeight = 1;
-        }
-        else
-        {
-            gradcf = dHat & gradcN;
-            udWeight = 0;
-        }
+        // Choose gradc based on faceFlux
+        const vector& gradcPN = (faceFlux > 0) ? gradcP : gradcN;
+        const scalar udWeight = (faceFlux > 0) ? 1 : 0;
 
         // Stabilise for division
-        gradcf = stabilise(gradcf, SMALL);
+        const scalar gradcf = stabilise(dHat & gradcPN, SMALL);
+
+        const scalar gradf = (phiN - phiP)/mag(d);
 
-        scalar phict = 1 - 0.5*gradf/gradcf;
-        scalar limiter = clamp(phict/k_, zero_one{});
+        const scalar phict = 1 - 0.5*gradf/gradcf;
+        const scalar limiter = clamp(phict/k_, zero_one{});
 
         return lerp(udWeight, cdWeight, limiter);
     }