From 5b215dce4c2edc880aacc02c69ccda63ca7b79ac Mon Sep 17 00:00:00 2001
From: mattijs <mattijs>
Date: Tue, 5 Aug 2014 15:25:14 +0100
Subject: [PATCH] BUG: faceSource: #1364

---
 .../field/fieldValues/faceSource/faceSource.C  | 18 ++++++++++++++++--
 .../faceSource/faceSourceTemplates.C           | 16 ++++++++++++++--
 2 files changed, 30 insertions(+), 4 deletions(-)

diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C
index 5a862378484..83e56780c0f 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C
@@ -444,6 +444,20 @@ void Foam::fieldValues::faceSource::initialise(const dictionary& dict)
     if (dict.readIfPresent("weightField", weightFieldName_))
     {
         Info<< "    weight field = " << weightFieldName_ << nl;
+
+        if (source_ == stSampledSurface)
+        {
+            FatalIOErrorIn
+            (
+                "void Foam::fieldValues::faceSource::initialise"
+                "("
+                    "const dictionary&"
+                ")",
+                dict
+            )
+                << "Cannot use weightField for a sampledSurface"
+                << exit(FatalIOError);
+        }
     }
 
     if (dict.found("orientedWeightField"))
@@ -664,8 +678,8 @@ void Foam::fieldValues::faceSource::write()
             file() << obr_.time().value() << tab << totalArea;
         }
 
-        // construct weight field
-        scalarField weightField(faceId_.size(), 1.0);
+        // construct weight field. Note: zero size means weight = 1
+        scalarField weightField;
         if (weightFieldName_ != "none")
         {
             weightField =
diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C
index 584a0e03d61..ec5b89345d6 100644
--- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C
+++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C
@@ -195,7 +195,14 @@ Type Foam::fieldValues::faceSource::processSameTypeValues
         }
         case opWeightedAverage:
         {
-            result = sum(values)/sum(weightField);
+            if (weightField.size())
+            {
+                result = sum(values)/sum(weightField);
+            }
+            else
+            {
+                result = sum(values)/values.size();
+            }
             break;
         }
         case opAreaAverage:
@@ -329,8 +336,13 @@ bool Foam::fieldValues::faceSource::writeValues
             }
         }
 
+
         // apply scale factor and weight field
-        values *= scaleFactor_*weightField;
+        values *= scaleFactor_;
+        if (weightField.size())
+        {
+            values *= weightField;
+        }
 
         if (Pstream::master())
         {
-- 
GitLab