From 7544110b0b36a933f80229c6a55260f2a2c95634 Mon Sep 17 00:00:00 2001
From: henry <Henry Weller h.weller@opencfd.co.uk>
Date: Sun, 12 Oct 2008 11:44:29 +0100
Subject: [PATCH] Improved extendedStencil handling.

---
 .../fvMesh/extendedStencil/extendedStencil.H  |  4 +--
 .../extendedStencilTemplates.C                | 31 +++++++++++++++++--
 .../schemes/quadraticFit/quadraticFit.H       |  2 +-
 .../schemes/quadraticFit/quadraticFitData.C   | 24 +++++++++++---
 4 files changed, 51 insertions(+), 10 deletions(-)

diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.H b/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.H
index 1d00972403b..ad2f4e1b0b0 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.H
+++ b/src/finiteVolume/fvMesh/extendedStencil/extendedStencil.H
@@ -123,9 +123,9 @@ public:
             List<List<T> >& stencilFld
         ) const;
 
-        //- Given weights interpolate vol field
+        //- Calculate weighted sum of vol field
         template<class Type>
-        tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > interpolate
+        tmp<GeometricField<Type, fvsPatchField, surfaceMesh> > weightedSum
         (
             const GeometricField<Type, fvPatchField, volMesh>& fld,
             const List<List<scalar> >& stencilWeights
diff --git a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilTemplates.C b/src/finiteVolume/fvMesh/extendedStencil/extendedStencilTemplates.C
index a408621dc4c..31adb48392a 100644
--- a/src/finiteVolume/fvMesh/extendedStencil/extendedStencilTemplates.C
+++ b/src/finiteVolume/fvMesh/extendedStencil/extendedStencilTemplates.C
@@ -77,7 +77,7 @@ void Foam::extendedStencil::collectData
 
 template<class Type>
 Foam::tmp<Foam::GeometricField<Type, Foam::fvsPatchField, Foam::surfaceMesh> >
-Foam::extendedStencil::interpolate
+Foam::extendedStencil::weightedSum
 (
     const GeometricField<Type, fvPatchField, volMesh>& fld,
     const List<List<scalar> >& stencilWeights
@@ -120,7 +120,34 @@ Foam::extendedStencil::interpolate
             sf[faceI] += stField[i]*stWeight[i];
         }
     }
-    // And what for boundaries?
+
+    // Coupled boundaries
+    /*
+    typename GeometricField<Type, fvsPatchField, surfaceMesh>::
+        GeometricBoundaryField& bSfCorr = sf.boundaryField();
+    forAll(bSfCorr, patchi)
+    {
+        fvsPatchField<Type>& pSfCorr = bSfCorr[patchi];
+
+        if (pSfCorr.coupled())
+        {
+            label faceI = pSfCorr.patch().patch().start();
+
+            forAll(pSfCorr, i)
+            {
+                const List<Type>& stField = stencilFld[faceI];
+                const List<scalar>& stWeight = stencilWeights[faceI];
+
+                forAll(stField, j)
+                {
+                    pSfCorr[i] += stField[j]*stWeight[j];
+                }
+
+                faceI++;
+            }
+        }
+    }
+    */
 
     return tsfCorr;
 }
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.H b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.H
index 412b454015d..9db49968628 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.H
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFit.H
@@ -122,7 +122,7 @@ public:
             const extendedStencil& stencil = cfd.stencil();
             const List<scalarList>& f = cfd.fit();
 
-            return stencil.interpolate(vf, f);
+            return stencil.weightedSum(vf, f);
         }
 };
 
diff --git a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFitData.C b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFitData.C
index 79f9107e97f..52cf371c70c 100644
--- a/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFitData.C
+++ b/src/finiteVolume/interpolation/surfaceInterpolation/schemes/quadraticFit/quadraticFitData.C
@@ -41,6 +41,8 @@ namespace Foam
 
 // * * * * * * * * * * * * * * * * Constructors * * * * * * * * * * * * * * //
 
+static int count = 0;
+
 Foam::quadraticFitData::quadraticFitData
 (
     const fvMesh& mesh,
@@ -114,13 +116,15 @@ Foam::quadraticFitData::quadraticFitData
         interpPolySize[faci] = calcFit(stencilPoints[faci], faci);
     }
 
-    interpPolySize.write();
+    Pout<< "count = " << count << endl;
 
     if (debug)
     {
         Info<< "quadraticFitData::quadraticFitData() :"
             << "Finished constructing polynomialFit data"
             << endl;
+
+        interpPolySize.write();
     }
 }
 
@@ -270,8 +274,8 @@ Foam::label Foam::quadraticFitData::calcFit
         //goodFit = (fit0 > 0 && fit1 > 0);
 
         goodFit =
-            (mag(fit0 - w[faci])/w[faci] < 0.5)
-         && (mag(fit1 - (1 - w[faci]))/(1 - w[faci]) < 0.5);
+            (mag(fit0 - w[faci])/w[faci] < 0.15)
+         && (mag(fit1 - (1 - w[faci]))/(1 - w[faci]) < 0.15);
 
         //scalar w0Err = fit0/w[faci];
         //scalar w1Err = fit1/(1 - w[faci]);
@@ -312,11 +316,21 @@ Foam::label Foam::quadraticFitData::calcFit
         }
     }
 
-    //static const scalar alpha = 1.5;
-    //static const scalar beta = alpha/0.5;
+    // static const scalar L = 0.1;
+    // static const scalar R = 0.2;
+
+    // static const scalar beta = 1.0/(R - L);
+    // static const scalar alpha = R*beta;
 
     if (goodFit)
     {
+         if ((mag(fit_[faci][0] - w[faci])/w[faci] < 0.15)
+         && (mag(fit_[faci][1] - (1 - w[faci]))/(1 - w[faci]) < 0.15))
+         {
+             count++;
+             //Pout<< "fit " << mag(fit_[faci][0] - w[faci])/w[faci] << " " << mag(fit_[faci][1] - (1 - w[faci]))/(1 - w[faci]) << endl;
+         }
+
         // scalar limiter =
         // max
         // (
-- 
GitLab