From 04033b6968c5931107b131de29e9085c92d3937b Mon Sep 17 00:00:00 2001 From: andy Date: Fri, 2 Mar 2012 17:13:46 +0000 Subject: [PATCH] ENH: Re-inistated weighted-average fieldAverage usage --- .../field/fieldValues/cellSource/cellSource.C | 5 +++-- .../field/fieldValues/cellSource/cellSource.H | 9 +++++++-- .../fieldValues/cellSource/cellSourceTemplates.C | 10 ++++++++-- .../field/fieldValues/faceSource/faceSource.C | 5 +++-- .../field/fieldValues/faceSource/faceSource.H | 7 +++++-- .../fieldValues/faceSource/faceSourceTemplates.C | 11 +++++++++-- 6 files changed, 35 insertions(+), 12 deletions(-) diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C index b42f15e6b3..9caa7a85b9 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C @@ -50,12 +50,13 @@ namespace Foam const char* Foam::NamedEnum < Foam::fieldValues::cellSource::operationType, - 8 + 9 >::names[] = { "none", "sum", "average", + "weightedAverage", "volAverage", "volIntegrate", "min", @@ -68,7 +69,7 @@ namespace Foam const Foam::NamedEnum Foam::fieldValues::cellSource::sourceTypeNames_; -const Foam::NamedEnum +const Foam::NamedEnum Foam::fieldValues::cellSource::operationTypeNames_; diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H index 573b53f522..5e857e02f2 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.H @@ -51,9 +51,12 @@ Description - none - sum - average + - weightedAverage - volAverage - volIntegrate - CoV (Coefficient of variation: standard deviation/mean) + - min + - max SourceFiles cellSource.C @@ -105,6 +108,7 @@ public: opNone, opSum, opAverage, + opWeightedAverage, opVolAverage, opVolIntegrate, opMin, @@ -113,7 +117,7 @@ public: }; //- Operation type names - static const NamedEnum operationTypeNames_; + static const NamedEnum operationTypeNames_; private: @@ -169,7 +173,8 @@ protected: Type processValues ( const Field& values, - const scalarField& V + const scalarField& V, + const scalarField& weightField ) const; //- Output file header information diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C index 61d39a43c9..942ae6a0a9 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSourceTemplates.C @@ -78,7 +78,8 @@ template Type Foam::fieldValues::cellSource::processValues ( const Field& values, - const scalarField& V + const scalarField& V, + const scalarField& weightField ) const { Type result = pTraits::zero; @@ -94,6 +95,11 @@ Type Foam::fieldValues::cellSource::processValues result = sum(values)/values.size(); break; } + case opWeightedAverage: + { + result = sum(values)/sum(weightField); + break; + } case opVolAverage: { result = sum(values*V)/sum(V); @@ -169,7 +175,7 @@ bool Foam::fieldValues::cellSource::writeValues(const word& fieldName) if (Pstream::master()) { - Type result = processValues(values, V); + Type result = processValues(values, V, weightField); if (valueOutput_) { diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C index 68befe8fd9..97f244c60b 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C @@ -53,12 +53,13 @@ namespace Foam const char* Foam::NamedEnum < Foam::fieldValues::faceSource::operationType, - 8 + 9 >::names[] = { "none", "sum", "average", + "weightedAverage", "areaAverage", "areaIntegrate", "min", @@ -72,7 +73,7 @@ namespace Foam const Foam::NamedEnum Foam::fieldValues::faceSource::sourceTypeNames_; -const Foam::NamedEnum +const Foam::NamedEnum Foam::fieldValues::faceSource::operationTypeNames_; diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H index 3c5ab78624..b7a2924035 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.H @@ -59,6 +59,7 @@ Description - none - sum - average + - weightedAverage - areaAverage - areaIntegrate - min @@ -132,6 +133,7 @@ public: opNone, opSum, opAverage, + opWeightedAverage, opAreaAverage, opAreaIntegrate, opMin, @@ -140,7 +142,7 @@ public: }; //- Operation type names - static const NamedEnum operationTypeNames_; + static const NamedEnum operationTypeNames_; private: @@ -215,7 +217,8 @@ protected: Type processValues ( const Field& values, - const scalarField& magSf + const scalarField& magSf, + const scalarField& weightField ) const; //- Output file header information diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C index bf83e811bc..79c031818f 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSourceTemplates.C @@ -97,7 +97,9 @@ template Type Foam::fieldValues::faceSource::processValues ( const Field& values, - const scalarField& magSf + const scalarField& magSf, + const scalarField& weightField + ) const { Type result = pTraits::zero; @@ -113,6 +115,11 @@ Type Foam::fieldValues::faceSource::processValues result = sum(values)/values.size(); break; } + case opWeightedAverage: + { + result = sum(values)/sum(weightField); + break; + } case opAreaAverage: { result = sum(values*magSf)/sum(magSf); @@ -203,7 +210,7 @@ bool Foam::fieldValues::faceSource::writeValues(const word& fieldName) if (Pstream::master()) { - Type result = processValues(values, magSf); + Type result = processValues(values, magSf, weightField); if (valueOutput_) {