From 03b8275a83787270f93db8fe04c5d29f58f53aa9 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Fri, 8 Dec 2017 14:05:25 +0000 Subject: [PATCH] ENH: add foamListRegions utility - list all regions from constant/regionProperties: * foamListRegions - list specific region type from constant/regionProperties: * foamListRegions fluid * foamListRegions solid --- .../miscellaneous/foamListRegions/Make/files | 3 + .../foamListRegions/Make/options | 5 + .../foamListRegions/foamListRegions.C | 113 ++++++++++++++++++ .../multiRegionHeater/Allmesh | 4 +- .../snappyMultiRegionHeater/Allrun | 6 +- 5 files changed, 126 insertions(+), 5 deletions(-) create mode 100644 applications/utilities/miscellaneous/foamListRegions/Make/files create mode 100644 applications/utilities/miscellaneous/foamListRegions/Make/options create mode 100644 applications/utilities/miscellaneous/foamListRegions/foamListRegions.C diff --git a/applications/utilities/miscellaneous/foamListRegions/Make/files b/applications/utilities/miscellaneous/foamListRegions/Make/files new file mode 100644 index 00000000000..218b5933c46 --- /dev/null +++ b/applications/utilities/miscellaneous/foamListRegions/Make/files @@ -0,0 +1,3 @@ +foamListRegions.C + +EXE = $(FOAM_APPBIN)/foamListRegions diff --git a/applications/utilities/miscellaneous/foamListRegions/Make/options b/applications/utilities/miscellaneous/foamListRegions/Make/options new file mode 100644 index 00000000000..4cf2f664c98 --- /dev/null +++ b/applications/utilities/miscellaneous/foamListRegions/Make/options @@ -0,0 +1,5 @@ +EXE_INC = \ + -I$(LIB_SRC)/regionModels/regionModel/lnInclude + +EXE_LIBS = \ + -lregionModels diff --git a/applications/utilities/miscellaneous/foamListRegions/foamListRegions.C b/applications/utilities/miscellaneous/foamListRegions/foamListRegions.C new file mode 100644 index 00000000000..4e56cd3376f --- /dev/null +++ b/applications/utilities/miscellaneous/foamListRegions/foamListRegions.C @@ -0,0 +1,113 @@ +/*---------------------------------------------------------------------------*\ + ========= | + \\ / F ield | OpenFOAM: The Open Source CFD Toolbox + \\ / O peration | + \\ / A nd | Copyright (C) 2017 OpenCFD Ltd. + \\/ 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 <http://www.gnu.org/licenses/>. + +Application + foamListRegions + +Group + grpPostProcessingUtilities + +Description + List regions from constant/regionProperties. + + To simplify parsing of the output, the normal banner information + is suppressed. + +Usage + \b foamListRegions [OPTION] + +\*---------------------------------------------------------------------------*/ + +#include "argList.H" +#include "Time.H" +#include "regionProperties.H" + +using namespace Foam; + +// * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // + +int main(int argc, char *argv[]) +{ + argList::addNote("List regions from constant/regionProperties"); + + argList::noBanner(); + argList::noParallel(); + argList::noJobInfo(); + argList::noFunctionObjects(); + // No profiling since there is no time loop + + // Non-mandatory arguments + argList::addArgument("regionType ... regionType"); + + #include "setRootCaseNonMandatoryArgs.H" + + // As per "createTime.H", but quieter. + Time runTime(Time::controlDictName, args); + + regionProperties rp(runTime); + + // We now handle checking args and general sanity etc. + wordList regionTypes; + + if (args.size() > 1) + { + regionTypes.setSize(args.size()-1); + + label nTypes = 0; + for (label argi = 1; argi < args.size(); ++argi) + { + regionTypes[nTypes] = args[argi]; + + if (rp.found(regionTypes[nTypes])) + { + ++nTypes; + } + else + { + std::cerr<< "No region-type: " << regionTypes[nTypes] << nl; + } + } + + regionTypes.setSize(nTypes); + } + else + { + regionTypes = rp.sortedToc(); + } + + + for (const word& regionType : regionTypes) + { + const wordList& regionNames = rp[regionType]; + + for (const word& regionName : regionNames) + { + Info<< regionName << nl; + } + } + + return 0; +} + + +// ************************************************************************* // diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh index 7f27e81ea3b..a579c1f4b60 100755 --- a/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh +++ b/tutorials/heatTransfer/chtMultiRegionFoam/multiRegionHeater/Allmesh @@ -7,12 +7,12 @@ runApplication topoSet runApplication splitMeshRegions -cellZones -overwrite # Remove fluid fields from solid regions (important for post-processing) -for i in heater leftSolid rightSolid +for i in $(foamListRegions solid) do rm -f 0*/$i/{nut,alphat,epsilon,k,U,p_rgh} done -for i in bottomWater topAir heater leftSolid rightSolid +for i in $(foamListRegions) do runApplication -s $i changeDictionary -region $i done diff --git a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun index b3614e73078..6f11ca80be8 100755 --- a/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun +++ b/tutorials/heatTransfer/chtMultiRegionFoam/snappyMultiRegionHeater/Allrun @@ -11,15 +11,15 @@ runApplication snappyHexMesh -overwrite runApplication splitMeshRegions -cellZones -overwrite # remove fluid fields from solid regions (important for post-processing) -for i in heater leftSolid rightSolid +for i in $(foamListRegions solid) do rm -f 0*/$i/{nut,alphat,epsilon,k,U,p_rgh} done -for i in bottomAir topAir heater leftSolid rightSolid +for i in $(foamListRegions) do - runApplication -s $i changeDictionary -region $i + runApplication -s $i changeDictionary -region $i done -- GitLab