From 2853678a6044c9e06c494baf539f7d669a1ef441 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Thu, 2 Mar 2017 14:50:36 +0100 Subject: [PATCH] ENH: support operations on surfFields in surfaceFieldValue - this makes it possible to perform additional operations on surface values that have been previously sampled. - support vectorField for weighting operations. - reduce overhead by avoiding creation of weight fields, Sf fields and combined surface geometries unless they are actually required. - extend some similar concepts and operations to volFieldValue --- .../regionFunctionObject.H | 6 +- .../surfaceFieldValue/surfaceFieldValue.C | 457 +- .../surfaceFieldValue/surfaceFieldValue.H | 193 +- .../surfaceFieldValue/surfaceFieldValueI.H | 26 +- .../surfaceFieldValueTemplates.C | 257 +- .../fieldValues/volFieldValue/volFieldValue.C | 125 +- .../fieldValues/volFieldValue/volFieldValue.H | 70 +- .../volFieldValue/volFieldValueTemplates.C | 58 +- .../gasMixing/injectorPipe/0.orig/T | 41 + .../gasMixing/injectorPipe/0.orig/U | 53 + .../gasMixing/injectorPipe/0.orig/alphat | 41 + .../gasMixing/injectorPipe/0.orig/epsilon | 53 + .../gasMixing/injectorPipe/0.orig/k | 48 + .../gasMixing/injectorPipe/0.orig/nut | 41 + .../gasMixing/injectorPipe/0.orig/p | 35 + .../gasMixing/injectorPipe/0.orig/tracer0 | 47 + .../gasMixing/injectorPipe/Allclean | 13 + .../gasMixing/injectorPipe/Allrun | 13 + .../gasMixing/injectorPipe/Allrun.mesh | 13 + .../gasMixing/injectorPipe/README | 1 + .../constant/thermophysicalProperties | 56 + .../constant/triSurface/entrainment.stl | 4181 + .../constant/triSurface/inlet_air.stl | 1283 + .../constant/triSurface/inlet_fuel.stl | 268 + .../constant/triSurface/outlet.stl | 3950 + .../constant/triSurface/plane-0.25.stl | 1283 + .../constant/triSurface/plane-0.45.stl | 3950 + .../constant/triSurface/plane-0.55.stl | 3950 + .../constant/triSurface/plane-0.6.stl | 3950 + .../constant/triSurface/walls.stl | 105622 +++++++++++++++ .../constant/turbulenceProperties | 30 + .../gasMixing/injectorPipe/system/avg-tracer0 | 23 + .../injectorPipe/system/blockMeshDict | 40 + .../gasMixing/injectorPipe/system/controlDict | 72 + .../injectorPipe/system/decomposeParDict | 32 + .../injectorPipe/system/fieldTransfer | 45 + .../gasMixing/injectorPipe/system/fvSchemes | 64 + .../gasMixing/injectorPipe/system/fvSolution | 152 + .../injectorPipe/system/meshQualityDict | 23 + .../injectorPipe/system/sampleControls | 101 + .../gasMixing/injectorPipe/system/sampling | 14 + .../injectorPipe/system/scalarTransport | 16 + .../injectorPipe/system/snappyHexMeshDict | 379 + .../gasMixing/injectorPipe/system/sum-tracer0 | 49 + .../system/surfaceFeatureExtractDict | 48 + 45 files changed, 130798 insertions(+), 374 deletions(-) create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/T create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/U create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/alphat create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/epsilon create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/k create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/nut create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/p create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/0.orig/tracer0 create mode 100755 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/Allclean create mode 100755 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/Allrun create mode 100755 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/Allrun.mesh create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/README create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/thermophysicalProperties create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/entrainment.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/inlet_air.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/inlet_fuel.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/outlet.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/plane-0.25.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/plane-0.45.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/plane-0.55.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/plane-0.6.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/triSurface/walls.stl create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/constant/turbulenceProperties create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/avg-tracer0 create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/blockMeshDict create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/controlDict create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/decomposeParDict create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/fieldTransfer create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/fvSchemes create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/fvSolution create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/meshQualityDict create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/sampleControls create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/sampling create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/scalarTransport create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/snappyHexMeshDict create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/sum-tracer0 create mode 100644 tutorials/compressible/rhoSimpleFoam/gasMixing/injectorPipe/system/surfaceFeatureExtractDict diff --git a/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H b/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H index 70be4fccfe..621479f615 100644 --- a/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H +++ b/src/OpenFOAM/db/functionObjects/regionFunctionObject/regionFunctionObject.H @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2016 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -87,7 +87,7 @@ protected: ); //- The region or sub-region registry being used - const objectRegistry& obr() const; + virtual const objectRegistry& obr() const; //- Find object (eg, a field) in the (sub) objectRegistry @@ -176,7 +176,7 @@ public: // Member Functions //- Read optional controls - virtual bool read(const dictionary&); + virtual bool read(const dictionary& dict) override; }; diff --git a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C index 0ccc48bd75..479f93c5a8 100644 --- a/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C +++ b/src/functionObjects/field/fieldValues/surfaceFieldValue/surfaceFieldValue.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -31,6 +31,7 @@ License #include "mergePoints.H" #include "indirectPrimitivePatch.H" #include "PatchTools.H" +#include "meshedSurfRef.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -52,11 +53,12 @@ template<> const char* Foam::NamedEnum < Foam::functionObjects::fieldValues::surfaceFieldValue::regionTypes, - 3 + 4 >::names[] = { "faceZone", "patch", + "surface", "sampledSurface" }; @@ -64,12 +66,13 @@ template<> const char* Foam::NamedEnum < Foam::functionObjects::fieldValues::surfaceFieldValue::operationType, - 16 + 17 >::names[] = { "none", "sum", "sumMag", + "weightedSum", "sumDirection", "sumDirectionBalance", "average", @@ -100,13 +103,13 @@ const char* Foam::NamedEnum const Foam::NamedEnum < Foam::functionObjects::fieldValues::surfaceFieldValue::regionTypes, - 3 + 4 > Foam::functionObjects::fieldValues::surfaceFieldValue::regionTypeNames_; const Foam::NamedEnum < Foam::functionObjects::fieldValues::surfaceFieldValue::operationType, - 16 + 17 > Foam::functionObjects::fieldValues::surfaceFieldValue::operationTypeNames_; const Foam::NamedEnum @@ -119,9 +122,23 @@ Foam::functionObjects::fieldValues::surfaceFieldValue::postOperationTypeNames_; // * * * * * * * * * * * * Protected Member Functions * * * * * * * * * * * // +const Foam::objectRegistry& +Foam::functionObjects::fieldValues::surfaceFieldValue::obr() const +{ + if (regionType_ == stSurface) + { + return mesh_.lookupObject(regionName_); + } + else + { + return mesh_; + } +} + + void Foam::functionObjects::fieldValues::surfaceFieldValue::setFaceZoneFaces() { - label zoneId = mesh_.faceZones().findZoneID(regionName_); + const label zoneId = mesh_.faceZones().findZoneID(regionName_); if (zoneId < 0) { @@ -137,11 +154,11 @@ void Foam::functionObjects::fieldValues::surfaceFieldValue::setFaceZoneFaces() DynamicList