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.
This commit is contained in:
Henry Weller
2017-01-24 22:28:36 +00:00
parent 9b319dab61
commit 4e5dc43418
4 changed files with 24 additions and 137 deletions

View File

@ -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<fvMesh> 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<boundBox>("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<Field<vector>>(bb.points()()),
// faces.xfer(),
// owner.xfer(),
// neighbour.xfer()
// )
// );
//
// List<polyPatch*> 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<mapPolyMesh> 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 = "

View File

@ -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::IOoutputType, 1>
Foam::meshRefinement::IOoutputTypeNames;
const Foam::NamedEnum<Foam::meshRefinement::IOwriteType, 4>
const Foam::NamedEnum<Foam::meshRefinement::IOwriteType, 5>
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);

View File

@ -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<IOdebugType, 5> IOdebugTypeNames;
enum debugType
{
MESH = 1<<IOMESH,
//SCALARLEVELS = 1<<IOSCALARLEVELS,
OBJINTERSECTIONS = 1<<IOOBJINTERSECTIONS,
FEATURESEEDS = 1<<IOFEATURESEEDS,
ATTRACTION = 1<< IOATTRACTION,
@ -111,6 +110,7 @@ public:
{
IOOUTPUTLAYERINFO
};
static const NamedEnum<IOoutputType, 1> IOoutputTypeNames;
enum outputType
{
@ -121,14 +121,17 @@ public:
enum IOwriteType
{
IOWRITEMESH,
IONOWRITEREFINEMENT,
IOWRITELEVELS,
IOWRITELAYERSETS,
IOWRITELAYERFIELDS
};
static const NamedEnum<IOwriteType, 4> IOwriteTypeNames;
static const NamedEnum<IOwriteType, 5> IOwriteTypeNames;
enum writeType
{
WRITEMESH = 1<<IOWRITEMESH,
NOWRITEREFINEMENT = 1<<IONOWRITEREFINEMENT,
WRITELEVELS = 1<<IOWRITELEVELS,
WRITELAYERSETS = 1<<IOWRITELAYERSETS,
WRITELAYERFIELDS = 1<<IOWRITELAYERFIELDS

View File

@ -87,14 +87,14 @@ addLayersControls
}
meshQualityControls
{
}
{}
writeFlags
(
scalarLevels
layerSets
layerFields
noRefinement
// scalarLevels
// layerSets
// layerFields
);
mergeTolerance 1e-6;