From 012178576dc4934abdd5352a5287c15e5a0e2b4b Mon Sep 17 00:00:00 2001 From: mattijs Date: Mon, 8 Nov 2010 10:09:42 +0000 Subject: [PATCH] ENH: faceSource functionObject : allow 'sampledSurface' to supply faces and data --- .../field/fieldValues/cellSource/cellSource.C | 5 +- .../field/fieldValues/controlDict | 20 ++++-- .../field/fieldValues/faceSource/faceSource.C | 64 +++++++++++++++---- .../field/fieldValues/faceSource/faceSource.H | 52 +++++++++++---- .../faceSource/faceSourceTemplates.C | 42 ++++++++---- .../field/fieldValues/fieldValue/fieldValue.C | 2 +- .../field/fieldValues/fieldValue/fieldValue.H | 12 ++-- .../fieldValue/fieldValueTemplates.C | 16 ++++- 8 files changed, 159 insertions(+), 54 deletions(-) diff --git a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C index 1f6cc537e1..e3755efbb8 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C +++ b/src/postProcessing/functionObjects/field/fieldValues/cellSource/cellSource.C @@ -198,11 +198,10 @@ void Foam::fieldValues::cellSource::write() if (active_) { + scalar totalVolume = gSum(filterField(mesh().V())); if (Pstream::master()) { - outputFilePtr_() - << obr_.time().value() << tab - << sum(filterField(mesh().V())); + outputFilePtr_() << obr_.time().value() << tab << totalVolume; } forAll(fields_, i) diff --git a/src/postProcessing/functionObjects/field/fieldValues/controlDict b/src/postProcessing/functionObjects/field/fieldValues/controlDict index 7605d4afc1..58a7349371 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/controlDict +++ b/src/postProcessing/functionObjects/field/fieldValues/controlDict @@ -61,11 +61,23 @@ functions // Output field values as well valueOutput true; - // Patch or faceZone to sample + // Type of source: patch/faceZone/sampledSurface source patch; + + // if patch or faceZone: name of patch or faceZone sourceName movingWall; -// source faceZone; -// sourceName f0; + + //// if sampledSurface: dictionary with a sampledSurface + //sampledSurfaceDict + //{ + // type cuttingPlane; + // planeType pointAndNormal; + // pointAndNormalDict + // { + // basePoint (0 0.099 0); + // normalVector (0 1 0); + // } + //} // Operation: areaAverage/sum/weightedAverage ... operation areaAverage; @@ -73,7 +85,7 @@ functions fields ( p - phi + phi // surface fields not supported for sampledSurface U ); } diff --git a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C index f30d80f716..472f725dc4 100644 --- a/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C +++ b/src/postProcessing/functionObjects/field/fieldValues/faceSource/faceSource.C @@ -28,21 +28,20 @@ License #include "cyclicPolyPatch.H" #include "emptyPolyPatch.H" #include "coupledPolyPatch.H" -#include "surfaceFields.H" -#include "volFields.H" +#include "sampledSurface.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // defineTypeNameAndDebug(Foam::fieldValues::faceSource, 0); template<> -const char* Foam::NamedEnum:: +const char* Foam::NamedEnum:: names[] = { - "faceZone", "patch" + "faceZone", "patch", "sampledSurface" }; -const Foam::NamedEnum +const Foam::NamedEnum Foam::fieldValues::faceSource::sourceTypeNames_; @@ -188,6 +187,19 @@ void Foam::fieldValues::faceSource::setPatchFaces() } +void Foam::fieldValues::faceSource::sampledSurfaceFaces(const dictionary& dict) +{ + surfacePtr_ = sampledSurface::New + ( + name_, + mesh(), + dict.subDict("sampledSurfaceDict") + ); + surfacePtr_().update(); + nFaces_ = returnReduce(surfacePtr_().faces().size(), sumOp