From c969be872ccaacea1291175378a0acdcf8db5f9e Mon Sep 17 00:00:00 2001 From: mattijs Date: Wed, 18 Sep 2013 16:01:08 +0100 Subject: [PATCH] ENH: regionSizeDistrubtion: optional coordinateSystem for vectorFields --- .../regionSizeDistribution.C | 20 ++++++++++++++++++- .../regionSizeDistribution.H | 12 +++++++++++ 2 files changed, 31 insertions(+), 1 deletion(-) diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C index 22512c0317..44bfeebdbc 100644 --- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C +++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.C @@ -368,6 +368,14 @@ void Foam::regionSizeDistribution::read(const dictionary& dict) word format(dict.lookup("setFormat")); formatterPtr_ = writer::New(format); + + if (dict.found("coordinateSystem")) + { + coordSysPtr_.reset(new coordinateSystem(obr_, dict)); + + Info<< "Transforming all vectorFields with coordinate system " + << coordSysPtr_().name() << endl; + } } } @@ -797,11 +805,21 @@ void Foam::regionSizeDistribution::write() const word& fldName = vectorNames[selected[i]]; Info<< "Vector field " << fldName << endl; - const vectorField& fld = obr_.lookupObject + vectorField fld = obr_.lookupObject < volVectorField >(fldName).internalField(); + if (coordSysPtr_.valid()) + { + Info<< "Transforming vector field " << fldName + << " with coordinate system " + << coordSysPtr_().name() + << endl; + + fld = coordSysPtr_().localVector(fld); + } + // Components diff --git a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H index 0c46639846..abbdf6bac0 100644 --- a/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H +++ b/src/postProcessing/functionObjects/field/regionSizeDistribution/regionSizeDistribution.H @@ -69,6 +69,13 @@ Description maxDiameter 0.5e-4; minDiameter 0; setFormat gnuplot; + coordinateSystem + { + type cartesian; + origin (0 0 0); + e3 (0 1 1); + e1 (1 0 0); + } } \endverbatim @@ -84,6 +91,7 @@ Description maxDiameter | maximum region equivalent diameter | yes | minDiameter | minimum region equivalent diameter | no | 0 setFormat | writing format | yes | + coordinateSystem | transformation for vector fields | no | \endtable SeeAlso @@ -104,6 +112,7 @@ SourceFiles #include "Map.H" #include "volFieldsFwd.H" #include "wordReList.H" +#include "coordinateSystem.H" // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -159,6 +168,9 @@ class regionSizeDistribution //- Output formatter to write autoPtr > formatterPtr_; + //- Optional coordinate system + autoPtr coordSysPtr_; + // Private Member Functions