diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C index 3e91db48cb..577d81cdcb 100644 --- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C +++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.C @@ -1046,6 +1046,18 @@ Foam::conformalVoronoiMesh::conformalVoronoiMesh ) ), decomposition_() +{} + + +// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // + +Foam::conformalVoronoiMesh::~conformalVoronoiMesh() +{} + + +// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // + +void Foam::conformalVoronoiMesh::initialiseForMotion() { if (foamyHexMeshControls().objOutput()) { @@ -1061,7 +1073,10 @@ Foam::conformalVoronoiMesh::conformalVoronoiMesh runTime_, rndGen_, geometryToConformTo_, - foamyHexMeshDict.subDict("backgroundMeshDecomposition") + foamyHexMeshControls().foamyHexMeshDict().subDict + ( + "backgroundMeshDecomposition" + ) ) ); } @@ -1125,13 +1140,53 @@ Foam::conformalVoronoiMesh::conformalVoronoiMesh } -// * * * * * * * * * * * * * * * * Destructor * * * * * * * * * * * * * * * // +void Foam::conformalVoronoiMesh::initialiseForConformation() +{ + if (Pstream::parRun()) + { + decomposition_.reset + ( + new backgroundMeshDecomposition + ( + runTime_, + rndGen_, + geometryToConformTo_, + foamyHexMeshControls().foamyHexMeshDict().subDict + ( + "backgroundMeshDecomposition" + ) + ) + ); + } -Foam::conformalVoronoiMesh::~conformalVoronoiMesh() -{} + insertInitialPoints(); + insertFeaturePoints(); + + // Improve the guess that the backgroundMeshDecomposition makes with the + // initial positions. Use before building the surface conformation to + // better balance the surface conformation load. + distributeBackground(*this); + + buildSurfaceConformation(); + + // The introduction of the surface conformation may have distorted the + // balance of vertices, distribute if necessary. + distributeBackground(*this); + + if (Pstream::parRun()) + { + sync(decomposition_().procBounds()); + } + + cellSizeMeshOverlapsBackground(); + + if (foamyHexMeshControls().printVertexInfo()) + { + printVertexInfo(Info); + } +} -// * * * * * * * * * * * * * * Member Functions * * * * * * * * * * * * * * // void Foam::conformalVoronoiMesh::move() { diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H index ab9b6d955b..6b514dfdf5 100644 --- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H +++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/conformalVoronoiMesh/conformalVoronoiMesh.H @@ -1038,6 +1038,10 @@ public: // Member Functions + void initialiseForMotion(); + + void initialiseForConformation(); + //- Move the vertices according to the controller, re-conforming to the // surface as required void move(); diff --git a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.C b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.C index 32ce53d376..a44103923b 100644 --- a/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.C +++ b/applications/utilities/mesh/generation/foamyHexMesh/conformalVoronoiMesh/initialPointsMethod/pointFile/pointFile.C @@ -58,7 +58,7 @@ List pointFile::initialPoints() const IOobject ( pointFileName_.name(), - foamyHexMesh_.time().constant(), + foamyHexMesh_.time().timeName(), foamyHexMesh_.time(), IOobject::MUST_READ, IOobject::NO_WRITE diff --git a/applications/utilities/mesh/generation/foamyHexMesh/foamyHexMesh.C b/applications/utilities/mesh/generation/foamyHexMesh/foamyHexMesh.C index 8133723819..87c1dbe22d 100644 --- a/applications/utilities/mesh/generation/foamyHexMesh/foamyHexMesh.C +++ b/applications/utilities/mesh/generation/foamyHexMesh/foamyHexMesh.C @@ -45,12 +45,22 @@ int main(int argc, char *argv[]) "check all surface geometry for quality" ); + Foam::argList::addBoolOption + ( + "conformationOnly", + "conform to the initial points without any point motion" + ); + + #include "addOverwriteOption.H" + #include "setRootCase.H" #include "createTime.H" runTime.functionObjects().off(); const bool checkGeometry = args.optionFound("checkGeometry"); + const bool conformationOnly = args.optionFound("conformationOnly"); + const bool overwrite = args.optionFound("overwrite"); IOdictionary foamyHexMeshDict ( @@ -104,16 +114,33 @@ int main(int argc, char *argv[]) conformalVoronoiMesh mesh(runTime, foamyHexMeshDict); - while (runTime.loop()) + if (conformationOnly) { - Info<< nl << "Time = " << runTime.timeName() << endl; + mesh.initialiseForConformation(); - mesh.move(); + if (!overwrite) + { + runTime++; + } - Info<< nl << "ExecutionTime = " << runTime.elapsedCpuTime() << " s" - << " ClockTime = " << runTime.elapsedClockTime() << " s" - << endl; + mesh.writeMesh(runTime.timeName()); } + else + { + mesh.initialiseForMotion(); + + while (runTime.loop()) + { + Info<< nl << "Time = " << runTime.timeName() << endl; + + mesh.move(); + + Info<< nl << "ExecutionTime = " << runTime.elapsedCpuTime() << " s" + << " ClockTime = " << runTime.elapsedClockTime() << " s" + << endl; + } + } + Info<< nl << "End" << nl << endl;