From 053eed714d8f0a5be62b17e8bd8c8ecd6beb356e Mon Sep 17 00:00:00 2001 From: Will Bainbridge Date: Tue, 7 Dec 2021 15:32:43 +0000 Subject: [PATCH] functionObjects: layerAverage: Replacment for postChannel This function generates plots of fields averaged over the layers in the mesh. It is a generalised replacement for the postChannel utility, which has been removed. An example of this function's usage is as follows: layerAverage1 { type layerAverage; libs ("libfieldFunctionObjects.so"); writeControl writeTime; setFormat raw; // Patches and/or zones from which layers extrude patches (bottom); zones (quarterPlane threeQuartersPlane); // Spatial component against which to plot component y; // Is the geometry symmetric around the centre layer? symmetric true; // Fields to average and plot fields (pMean pPrime2Mean UMean UPrime2Mean k); } --- .../miscellaneous/postChannel/Make/files | 4 - .../miscellaneous/postChannel/Make/options | 10 - .../postChannel/calculateFields.H | 73 --- .../miscellaneous/postChannel/channelIndex.C | 293 ------------ .../miscellaneous/postChannel/channelIndex.H | 160 ------- .../postChannel/channelIndexTemplates.C | 102 ----- .../miscellaneous/postChannel/collapse.H | 69 --- .../miscellaneous/postChannel/postChannel.C | 97 ---- .../miscellaneous/postChannel/readFields.H | 112 ----- .../postChannel/readPhysicalProperties.H | 13 - .../postProcessing/graphs/graphLayerAverage | 26 ++ .../graphs/graphLayerAverage.cfg | 17 + src/functionObjects/field/Make/files | 2 + .../field/layerAverage/layerAverage.C | 420 ++++++++++++++++++ .../field/layerAverage/layerAverage.H | 243 ++++++++++ .../layerAverage/layerAverageTemplates.C | 89 ++++ .../postProcessing/channel/system/controlDict | 7 + .../pimpleFoam/LES/channel395/Allrun | 2 - .../LES/channel395/system/controlDict | 25 ++ 19 files changed, 829 insertions(+), 935 deletions(-) delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/Make/files delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/Make/options delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/calculateFields.H delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/channelIndex.C delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/channelIndex.H delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/channelIndexTemplates.C delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/collapse.H delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/postChannel.C delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/readFields.H delete mode 100644 applications/utilities/postProcessing/miscellaneous/postChannel/readPhysicalProperties.H create mode 100644 etc/caseDicts/postProcessing/graphs/graphLayerAverage create mode 100644 etc/caseDicts/postProcessing/graphs/graphLayerAverage.cfg create mode 100644 src/functionObjects/field/layerAverage/layerAverage.C create mode 100644 src/functionObjects/field/layerAverage/layerAverage.H create mode 100644 src/functionObjects/field/layerAverage/layerAverageTemplates.C diff --git a/applications/utilities/postProcessing/miscellaneous/postChannel/Make/files b/applications/utilities/postProcessing/miscellaneous/postChannel/Make/files deleted file mode 100644 index 90ae1fa7d6..0000000000 --- a/applications/utilities/postProcessing/miscellaneous/postChannel/Make/files +++ /dev/null @@ -1,4 +0,0 @@ -postChannel.C -channelIndex.C - -EXE = $(FOAM_APPBIN)/postChannel diff --git a/applications/utilities/postProcessing/miscellaneous/postChannel/Make/options b/applications/utilities/postProcessing/miscellaneous/postChannel/Make/options deleted file mode 100644 index c5e4b6238b..0000000000 --- a/applications/utilities/postProcessing/miscellaneous/postChannel/Make/options +++ /dev/null @@ -1,10 +0,0 @@ -EXE_INC = \ - -I$(LIB_SRC)/meshTools/lnInclude \ - -I$(LIB_SRC)/finiteVolume/lnInclude \ - -I$(LIB_SRC)/sampling/lnInclude - -EXE_LIBS = \ - -lmeshTools \ - -lfiniteVolume \ - -lgenericPatchFields \ - -lsampling diff --git a/applications/utilities/postProcessing/miscellaneous/postChannel/calculateFields.H b/applications/utilities/postProcessing/miscellaneous/postChannel/calculateFields.H deleted file mode 100644 index 026861d875..0000000000 --- a/applications/utilities/postProcessing/miscellaneous/postChannel/calculateFields.H +++ /dev/null @@ -1,73 +0,0 @@ - /* - volTensorField gradU(fvc::grad(U)); - volSymmTensorField D(symm(fvc::grad(U))); - volTensorField Dprim(symm(fvc::grad(U - UMean))); - - volScalarField prod(-((U - UMean)*(U - UMean)) && D); - */ - - /* - volScalarField txx - ( - IOobject - ( - "txx", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - dimensionSet(0, 1, -1, 0, 0) - ); - txx =sqrt(Txx - (UMeanx*UMeanx)); - txx.write(); - - volScalarField tyy - ( - IOobject - ( - "tyy", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - dimensionSet(0, 1, -1, 0, 0) - ); - tyy = sqrt(Tyy - (UMeany*UMeany)); - tyy.write(); - - volScalarField tzz - ( - IOobject - ( - "tzz", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - dimensionSet(0, 1, -1, 0, 0) - ); - tzz = sqrt(Tzz - (UMeanz*UMeanz)); - tzz.write(); - - volScalarField txy - ( - IOobject - ( - "txy", - runTime.timeName(), - mesh, - IOobject::NO_READ, - IOobject::NO_WRITE - ), - mesh, - dimensionSet(0, 2, -2, 0, 0) - ); - txy = Txy - (UMeanx*UMeany); - txy.write(); -*/ diff --git a/applications/utilities/postProcessing/miscellaneous/postChannel/channelIndex.C b/applications/utilities/postProcessing/miscellaneous/postChannel/channelIndex.C deleted file mode 100644 index be0aa492c3..0000000000 --- a/applications/utilities/postProcessing/miscellaneous/postChannel/channelIndex.C +++ /dev/null @@ -1,293 +0,0 @@ -/*---------------------------------------------------------------------------*\ - ========= | - \\ / F ield | OpenFOAM: The Open Source CFD Toolbox - \\ / O peration | Website: https://openfoam.org - \\ / A nd | Copyright (C) 2011-2018 OpenFOAM Foundation - \\/ M anipulation | -------------------------------------------------------------------------------- -License - This file is part of OpenFOAM. - - OpenFOAM is free software: you can redistribute it and/or modify it - under the terms of the GNU General Public License as published by - the Free Software Foundation, either version 3 of the License, or - (at your option) any later version. - - OpenFOAM is distributed in the hope that it will be useful, but WITHOUT - ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or - FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License - for more details. - - You should have received a copy of the GNU General Public License - along with OpenFOAM. If not, see . - -\*---------------------------------------------------------------------------*/ - -#include "channelIndex.H" -#include "boolList.H" -#include "syncTools.H" -#include "OFstream.H" -#include "meshTools.H" -#include "Time.H" -#include "SortableList.H" - -// * * * * * * * * * * * * * Static Member Data * * * * * * * * * * * * * * // - -namespace Foam -{ - template<> - const char* Foam::NamedEnum - < - Foam::vector::components, - 3 - >::names[] = - { - "x", - "y", - "z" - }; -} - -const Foam::NamedEnum - Foam::channelIndex::vectorComponentsNames_; - - -// * * * * * * * * * * * * * Private Member Functions * * * * * * * * * * * // - -// Determines face blocking -void Foam::channelIndex::walkOppositeFaces -( - const polyMesh& mesh, - const labelList& startFaces, - boolList& blockedFace -) -{ - const cellList& cells = mesh.cells(); - const faceList& faces = mesh.faces(); - label nBnd = mesh.nFaces() - mesh.nInternalFaces(); - - DynamicList