From 55b083336ce2a68c3658219aa4e213c3a540521f Mon Sep 17 00:00:00 2001 From: andy Date: Wed, 16 Jan 2013 16:39:14 +0000 Subject: [PATCH] ENH: Added average option to fieldValueDelta function object --- .../fieldValueDelta/fieldValueDelta.C | 17 ++++++++--------- .../fieldValueDelta/fieldValueDelta.H | 18 +++++++++++++++--- .../fieldValueDelta/fieldValueDeltaTemplates.C | 16 ++++++++++++++-- 3 files changed, 37 insertions(+), 14 deletions(-) diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C index 20614f474f..cf9fb29236 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -38,15 +38,16 @@ namespace Foam template<> const char* - NamedEnum::names[] = + NamedEnum::names[] = { "add", "subtract", "min", - "max" + "max", + "average" }; - const NamedEnum + const NamedEnum fieldValues::fieldValueDelta::operationTypeNames_; } @@ -158,7 +159,7 @@ void Foam::fieldValues::fieldValueDelta::write() if (log_) { - Info<< type() << " output:" << endl; + Info<< type() << " " << name_ << " output:" << endl; } bool found = false; @@ -179,10 +180,8 @@ void Foam::fieldValues::fieldValueDelta::write() { Info<< " none" << endl; } - else - { - Info<< endl; - } + + Info<< endl; } } diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H index e28771109a..24d72f1f6b 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDelta.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -37,6 +37,8 @@ Description { type fieldValueDelta; functionObjectLibs ("libfieldFunctionObjects.so"); + operation subtract; + fieldValue1 { ... @@ -54,6 +56,15 @@ Description type | type name: fieldValueDelta | yes | \endtable + \linebreak + The \c operation is one of: + \plaintable + add | add + subtract | subtract + min | minimum + max | maximum + average | average + \endplaintable SeeAlso Foam::fieldValue @@ -92,11 +103,12 @@ public: opAdd, opSubtract, opMin, - opMax + opMax, + opAverage }; //- Operation type names - static const NamedEnum operationTypeNames_; + static const NamedEnum operationTypeNames_; private: diff --git a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C index 6b757fc2df..b107c79527 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C +++ b/src/postProcessing/functionObjects/field/fieldValues/fieldValueDelta/fieldValueDeltaTemplates.C @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2012 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2012-2013 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -25,6 +25,7 @@ License #include "GeometricField.H" #include "volMesh.H" +#include "surfaceMesh.H" // * * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * // @@ -59,6 +60,11 @@ Type Foam::fieldValues::fieldValueDelta::applyOperation result = max(value1, value2); break; } + case opAverage: + { + result = 0.5*(value1 + value2); + break; + } default: { FatalErrorIn @@ -83,6 +89,7 @@ template void Foam::fieldValues::fieldValueDelta::processFields(bool& found) { typedef GeometricField vf; + typedef GeometricField sf; const wordList& fields1 = source1Ptr_->fields(); @@ -95,7 +102,12 @@ void Foam::fieldValues::fieldValueDelta::processFields(bool& found) forAll(fields1, i) { const word& fieldName = fields1[i]; - if (obr_.foundObject(fieldName) && results2.found(fieldName)) + + if + ( + (obr_.foundObject(fieldName) || obr_.foundObject(fieldName)) + && results2.found(fieldName) + ) { results1.lookup(fieldName) >> r1; results2.lookup(fieldName) >> r2;