From 4e5dc4341867b157cb0233b57dfdf19b6253c9c7 Mon Sep 17 00:00:00 2001 From: Henry Weller Date: Tue, 24 Jan 2017 22:28:36 +0000 Subject: [PATCH] snappyHexMesh: Added "noRefinement" writeFlag to control the writing of cellLevel, pointLevel etc. files By default snappyHexMesh writes files relating to the hex-splitting process into the polyMesh directory: cellLevel level0Edge pointLevel surfaceIndex but by setting the noRefinement flag: writeFlags ( noRefinement . . . ); these optional files which are generally not needed are not written. If you run the three stages of snappyHexMesh separately or run a dynamic mesh solver supporting refinement and unrefinement these files are needed and "noRefinement" should not be set. --- .../generation/snappyHexMesh/snappyHexMesh.C | 120 ------------------ .../meshRefinement/meshRefinement.C | 20 +-- .../meshRefinement/meshRefinement.H | 11 +- .../system/snappyHexMeshDict | 10 +- 4 files changed, 24 insertions(+), 137 deletions(-) diff --git a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C index 645e292ea6..e9d308d3a9 100644 --- a/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C +++ b/applications/utilities/mesh/generation/snappyHexMesh/snappyHexMesh.C @@ -653,15 +653,6 @@ void writeMesh meshRefiner.printMeshInfo(debugLevel, msg); Info<< "Writing mesh to time " << meshRefiner.timeName() << endl; - //label flag = meshRefinement::MESH; - //if (writeLevel) - //{ - // flag |= meshRefinement::SCALARLEVELS; - //} - //if (debug & meshRefinement::OBJINTERSECTIONS) - //{ - // flag |= meshRefinement::OBJINTERSECTIONS; - //} meshRefiner.write ( debugLevel, @@ -711,117 +702,6 @@ int main(int argc, char *argv[]) autoPtr meshPtr; -// if (surfaceSimplify) -// { -// IOdictionary foamyHexMeshDict -// ( -// IOobject -// ( -// "foamyHexMeshDict", -// runTime.system(), -// runTime, -// IOobject::MUST_READ_IF_MODIFIED, -// IOobject::NO_WRITE -// ) -// ); -// -// const dictionary& motionDict = -// foamyHexMeshDict.subDict("motionControl"); -// -// const scalar defaultCellSize = -// readScalar(motionDict.lookup("defaultCellSize")); -// -// Info<< "Constructing single cell mesh from boundBox" << nl << endl; -// -// boundBox bb(args.optionRead("surfaceSimplify")); -// -// labelList owner(6, label(0)); -// labelList neighbour(0); -// -// const cellModel& hexa = *(cellModeller::lookup("hex")); -// faceList faces = hexa.modelFaces(); -// -// meshPtr.set -// ( -// new fvMesh -// ( -// IOobject -// ( -// fvMesh::defaultRegion, -// runTime.timeName(), -// runTime, -// IOobject::NO_READ -// ), -// xferMove>(bb.points()()), -// faces.xfer(), -// owner.xfer(), -// neighbour.xfer() -// ) -// ); -// -// List patches(1); -// -// patches[0] = new wallPolyPatch -// ( -// "boundary", -// 6, -// 0, -// 0, -// meshPtr().boundaryMesh(), -// wallPolyPatch::typeName -// ); -// -// meshPtr().addFvPatches(patches); -// -// const scalar initialCellSize = ::pow(meshPtr().V()[0], 1.0/3.0); -// const label initialRefLevels = -// ::log(initialCellSize/defaultCellSize)/::log(2); -// -// Info<< "Default cell size = " << defaultCellSize << endl; -// Info<< "Initial cell size = " << initialCellSize << endl; -// -// Info<< "Initial refinement levels = " << initialRefLevels << endl; -// -// Info<< "Mesh starting size = " << meshPtr().nCells() << endl; -// -// // meshCutter must be destroyed before writing the mesh otherwise it -// // writes the cellLevel/pointLevel files -// { -// hexRef8 meshCutter(meshPtr(), false); -// -// for (label refineI = 0; refineI < initialRefLevels; ++refineI) -// { -// // Mesh changing engine. -// polyTopoChange meshMod(meshPtr(), true); -// -// // Play refinement commands into mesh changer. -// meshCutter.setRefinement -// ( -// identity(meshPtr().nCells()), -// meshMod -// ); -// -// // Create mesh (no inflation), return map from old to new mesh -// autoPtr map = -// meshMod.changeMesh(meshPtr(), false); -// -// // Update fields -// meshPtr().updateMesh(map); -// -// // Delete mesh volumes. -// meshPtr().clearOut(); -// -// Info<< "Refinement Iteration " << refineI + 1 -// << ", Mesh size = " << meshPtr().nCells() << endl; -// } -// } -// -// Info<< "Mesh end size = " << meshPtr().nCells() << endl; -// -// Info<< "Create mesh" << endl; -// meshPtr().write(); -// } -// else { Foam::Info << "Create mesh for time = " diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C index b68576b352..41c28a9bda 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.C @@ -70,7 +70,6 @@ namespace Foam >::names[] = { "mesh", - //"scalarLevels", "intersections", "featureSeeds", "attraction", @@ -91,10 +90,11 @@ namespace Foam const char* Foam::NamedEnum < Foam::meshRefinement::IOwriteType, - 4 + 5 >::names[] = { "mesh", + "noRefinement", "scalarLevels", "layerSets", "layerFields" @@ -108,7 +108,7 @@ Foam::meshRefinement::IOdebugTypeNames; const Foam::NamedEnum Foam::meshRefinement::IOoutputTypeNames; -const Foam::NamedEnum +const Foam::NamedEnum Foam::meshRefinement::IOwriteTypeNames; @@ -2565,11 +2565,7 @@ void Foam::meshRefinement::updateMesh bool Foam::meshRefinement::write() const { - bool writeOk = - mesh_.write() - && meshCutter_.write() - && surfaceIndex_.write(); - + bool writeOk = mesh_.write(); // Make sure that any distributed surfaces (so ones which probably have // been changed) get written as well. @@ -2908,10 +2904,18 @@ void Foam::meshRefinement::write { write(); } + + if (writeFlags && !(writeFlags & NOWRITEREFINEMENT)) + { + meshCutter_.write(); + surfaceIndex_.write(); + } + if (writeFlags & WRITELEVELS) { dumpRefinementLevel(); } + if (debugFlags & OBJINTERSECTIONS && prefix.size()) { dumpIntersections(prefix); diff --git a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H index 8dce430f13..a3a51afae9 100644 --- a/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H +++ b/src/mesh/snappyHexMesh/meshRefinement/meshRefinement.H @@ -2,7 +2,7 @@ ========= | \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | - \\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation + \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation \\/ M anipulation | ------------------------------------------------------------------------------- License @@ -89,17 +89,16 @@ public: enum IOdebugType { IOMESH, - //IOSCALARLEVELS, IOOBJINTERSECTIONS, IOFEATURESEEDS, IOATTRACTION, IOLAYERINFO }; + static const NamedEnum IOdebugTypeNames; enum debugType { MESH = 1< IOoutputTypeNames; enum outputType { @@ -121,14 +121,17 @@ public: enum IOwriteType { IOWRITEMESH, + IONOWRITEREFINEMENT, IOWRITELEVELS, IOWRITELAYERSETS, IOWRITELAYERFIELDS }; - static const NamedEnum IOwriteTypeNames; + + static const NamedEnum IOwriteTypeNames; enum writeType { WRITEMESH = 1<