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