From 1cb29667227b1f0245aa802d458a632704ec8821 Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@Germany> Date: Wed, 25 Jan 2017 13:16:49 +0100 Subject: [PATCH] ENH: add blockMesh -sets option to write cellZones as cellSets (closes #348) --- .../mesh/generation/blockMesh/blockMesh.C | 41 ++++++++++++------- 1 file changed, 26 insertions(+), 15 deletions(-) diff --git a/applications/utilities/mesh/generation/blockMesh/blockMesh.C b/applications/utilities/mesh/generation/blockMesh/blockMesh.C index d48980cb8c0..c1c5016b35f 100644 --- a/applications/utilities/mesh/generation/blockMesh/blockMesh.C +++ b/applications/utilities/mesh/generation/blockMesh/blockMesh.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 | Copyright (C) 2016 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2016-2017 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -49,6 +49,9 @@ Usage - \par -dict \<filename\> Specify alternative dictionary for the block mesh description. + - \par -sets + Write cellZones as cellSets too (for processing purposes) + \*---------------------------------------------------------------------------*/ #include "Time.H" @@ -85,7 +88,11 @@ int main(int argc, char *argv[]) "file", "specify alternative dictionary for the blockMesh description" ); - + argList::addBoolOption + ( + "sets", + "write cellZones as cellSets too (for processing purposes)" + ); argList::addNote ( "Block description\n" @@ -187,7 +194,6 @@ int main(int argc, char *argv[]) IOdictionary meshDict(meshDictIO); blockMesh blocks(meshDict, regionName); - if (args.optionFound("blockTopology")) { // Write mesh as edges. @@ -251,7 +257,6 @@ int main(int argc, char *argv[]) defaultFacesType ); - // Read in a list of dictionaries for the merge patch pairs if (meshDict.found("mergePatchPairs")) { @@ -271,8 +276,7 @@ int main(int argc, char *argv[]) // Set any cellZones (note: cell labelling unaffected by above // mergePatchPairs) - label nZones = blocks.numZonedBlocks(); - + const label nZones = blocks.numZonedBlocks(); if (nZones > 0) { Info<< nl << "Adding cell zones" << endl; @@ -325,11 +329,7 @@ int main(int argc, char *argv[]) } } - List<cellZone*> cz(zoneMap.size()); - - Info<< nl << "Writing cell zones as cellSets" << endl; - forAllConstIter(HashTable<label>, zoneMap, iter) { label zoneI = iter(); @@ -341,10 +341,6 @@ int main(int argc, char *argv[]) zoneI, mesh.cellZones() ); - - // Write as cellSet for ease of processing - cellSet cset(mesh, iter.key(), zoneCells[zoneI].shrink()); - cset.write(); } mesh.pointZones().setSize(0); @@ -356,7 +352,14 @@ int main(int argc, char *argv[]) // Set the precision of the points data to 10 IOstream::defaultPrecision(max(10u, IOstream::defaultPrecision())); - Info<< nl << "Writing polyMesh" << endl; + Info<< nl << "Writing polyMesh with " + << mesh.cellZones().size() << " cellZones"; + if (args.optionFound("sets") && !mesh.cellZones().empty()) + { + Info<< " (written as cellSets too)"; + } + Info<< endl; + mesh.removeFiles(); if (!mesh.write()) { @@ -365,6 +368,14 @@ int main(int argc, char *argv[]) << exit(FatalError); } + if (args.optionFound("sets")) + { + forAll(mesh.cellZones(), zonei) + { + const cellZone& cz = mesh.cellZones()[zonei]; + cellSet(mesh, cz.name(), cz).write(); + } + } // // write some information -- GitLab