diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C index 5a862378484a3f1fb95b711cf6aeaf8ac2dd9eb5..83e56780c0fbc9688ee54890b8e20811a2da2dd8 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 584a0e03d616f3b2a398a86b5f552ca9030fc598..ec5b89345d6b427af924e71bb986e3fdb004fbb2 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()) {