From 24d1e50f45bc2b669a38af0b35c5ce72c236a0b7 Mon Sep 17 00:00:00 2001
From: Andrew Heather <a.heather@opencfd.co.uk>
Date: Mon, 12 Jun 2017 09:18:22 +0100
Subject: [PATCH] BUG: LimitedScheme - corrected oriented flag.  Fixes #493

---
 .../LimitedScheme/LimitedScheme.C             | 24 ++++++++++---------
 1 file changed, 13 insertions(+), 11 deletions(-)

diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C
index efe01350d4d..9c19472a1fd 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/limitedSchemes/LimitedScheme/LimitedScheme.C
@@ -37,18 +37,19 @@ void Foam::LimitedScheme<Type, Limiter, LimitFunc>::calcLimiter
     surfaceScalarField& limiterField
 ) const
 {
-    const fvMesh& mesh = this->mesh();
+    typedef GeometricField<typename Limiter::phiType, fvPatchField, volMesh>
+        VolFieldType;
+
+    typedef GeometricField<typename Limiter::gradPhiType, fvPatchField, volMesh>
+        GradVolFieldType;
 
-    tmp<GeometricField<typename Limiter::phiType, fvPatchField, volMesh>>
-        tlPhi = LimitFunc<Type>()(phi);
+    const fvMesh& mesh = this->mesh();
 
-    const GeometricField<typename Limiter::phiType, fvPatchField, volMesh>&
-        lPhi = tlPhi();
+    tmp<VolFieldType> tlPhi = LimitFunc<Type>()(phi);
+    const VolFieldType& lPhi = tlPhi();
 
-    tmp<GeometricField<typename Limiter::gradPhiType, fvPatchField, volMesh>>
-        tgradc(fvc::grad(lPhi));
-    const GeometricField<typename Limiter::gradPhiType, fvPatchField, volMesh>&
-        gradc = tgradc();
+    tmp<GradVolFieldType> tgradc(fvc::grad(lPhi));
+    const GradVolFieldType& gradc = tgradc();
 
     const surfaceScalarField& CDweights = mesh.surfaceInterpolation::weights();
 
@@ -76,8 +77,7 @@ void Foam::LimitedScheme<Type, Limiter, LimitFunc>::calcLimiter
         );
     }
 
-    surfaceScalarField::Boundary& bLim =
-        limiterField.boundaryFieldRef();
+    surfaceScalarField::Boundary& bLim = limiterField.boundaryFieldRef();
 
     forAll(bLim, patchi)
     {
@@ -128,6 +128,8 @@ void Foam::LimitedScheme<Type, Limiter, LimitFunc>::calcLimiter
             pLim = 1.0;
         }
     }
+
+    limiterField.setOriented();
 }
 
 
-- 
GitLab