From 54ac451bf502d06e3f4e0320f29958ce332382cd Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Mon, 17 Dec 2018 09:51:29 +0100 Subject: [PATCH] ENH: add -dict option for mirrorMesh --- .../manipulation/mirrorMesh/mirrorFvMesh.C | 49 ++++++++++++------- .../manipulation/mirrorMesh/mirrorFvMesh.H | 10 ++-- .../mesh/manipulation/mirrorMesh/mirrorMesh.C | 18 ++++++- etc/config.sh/completion_cache | 2 +- .../pimpleFoam/RAS/ellipsekkLOmega/Allrun.pre | 9 +--- .../RAS/ellipsekkLOmega/system/mirrorMeshDict | 6 +-- ...hangeDictionaryDict.X => mirrorMeshDict.X} | 15 +++--- ...hangeDictionaryDict.Y => mirrorMeshDict.Y} | 15 +++--- 8 files changed, 74 insertions(+), 50 deletions(-) rename tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/{changeDictionaryDict.X => mirrorMeshDict.X} (84%) rename tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/{changeDictionaryDict.Y => mirrorMeshDict.Y} (84%) diff --git a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.C b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.C index 072933a381a..ed1d9e50ffc 100644 --- a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.C +++ b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation - \\/ M anipulation | Copyright (C) 2017 OpenCFD Ltd. + \\/ M anipulation | Copyright (C) 2017-2018 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -31,24 +31,37 @@ License Foam::mirrorFvMesh::mirrorFvMesh(const IOobject& io) : - fvMesh(io), - mirrorMeshDict_ + mirrorFvMesh ( - IOobject + io, + IOdictionary ( - "mirrorMeshDict", - time().system(), - *this, - IOobject::MUST_READ_IF_MODIFIED, - IOobject::NO_WRITE + IOobject + ( + "mirrorMeshDict", + io.time().system(), + io.time(), + IOobject::MUST_READ_IF_MODIFIED, + IOobject::NO_WRITE + ) ) ) +{} + + +Foam::mirrorFvMesh::mirrorFvMesh +( + const IOobject& io, + const IOdictionary& mirrorDict +) +: + fvMesh(io) { - plane mirrorPlane(mirrorMeshDict_); + plane mirrorPlane(mirrorDict); const scalar planeTolerance ( - mirrorMeshDict_.get<scalar>("planeTolerance") + mirrorDict.get<scalar>("planeTolerance") ); const pointField& oldPoints = points(); @@ -57,6 +70,9 @@ Foam::mirrorFvMesh::mirrorFvMesh(const IOobject& io) const label nOldInternalFaces = nInternalFaces(); const polyPatchList& oldPatches = boundaryMesh(); + Info<< "Mirroring mesh at origin:" << mirrorPlane.origin() + << " normal:" << mirrorPlane.normal() << nl; + // Mirror the points Info<< "Mirroring points. Old points: " << oldPoints.size(); @@ -66,15 +82,15 @@ Foam::mirrorFvMesh::mirrorFvMesh(const IOobject& io) labelList mirrorPointLookup(oldPoints.size(), -1); // Grab the old points - forAll(oldPoints, pointi) + for (const point& pt : oldPoints) { - newPoints[nNewPoints] = oldPoints[pointi]; - nNewPoints++; + newPoints[nNewPoints] = pt; + ++nNewPoints; } forAll(oldPoints, pointi) { - scalar alpha = + const scalar alpha = mirrorPlane.normalIntersect ( oldPoints[pointi], @@ -121,7 +137,6 @@ Foam::mirrorFvMesh::mirrorFvMesh(const IOobject& io) } - Info<< "Mirroring faces. Old faces: " << oldFaces.size(); // Algorithm: @@ -325,7 +340,7 @@ Foam::mirrorFvMesh::mirrorFvMesh(const IOobject& io) Info<< "Mirroring patches. Old patches: " << boundary().size() << " New patches: " << boundary().size() << endl; - Info<< "Mirroring cells. Old cells: " << oldCells.size() + Info<< "Mirroring cells. Old cells: " << oldCells.size() << " New cells: " << 2*oldCells.size() << endl; cellList newCells(2*oldCells.size()); diff --git a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.H b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.H index 12e5b6f0f85..e5102edc5b3 100644 --- a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.H +++ b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorFvMesh.H @@ -51,9 +51,6 @@ class mirrorFvMesh { // Private data - //- Mirror dictionary - IOdictionary mirrorMeshDict_; - //- Mirrored mesh autoPtr<fvMesh> mirrorMeshPtr_; @@ -77,8 +74,11 @@ public: // Constructors - //- Construct from IOobject - mirrorFvMesh(const IOobject& io); + //- Construct from IOobject, using system mirrorMeshDict + explicit mirrorFvMesh(const IOobject& io); + + //- Construct from IOobject and specified mirrorMeshDict + mirrorFvMesh(const IOobject& io, const IOdictionary& mirrorDict); //- Destructor diff --git a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C index 6d74e39d28c..6e612cbae75 100644 --- a/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C +++ b/applications/utilities/mesh/manipulation/mirrorMesh/mirrorMesh.C @@ -3,7 +3,7 @@ \\ / F ield | OpenFOAM: The Open Source CFD Toolbox \\ / O peration | \\ / A nd | Copyright (C) 2011-2017 OpenFOAM Foundation - \\/ M anipulation | + \\/ M anipulation | Copyright (C) 2018 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -49,12 +49,25 @@ int main(int argc, char *argv[]) "Mirrors a mesh around a given plane." ); + #include "addDictOption.H" + // Adjust the help text + argList::addUsage("dict", "Specify alternative mirrorMeshDict"); + argList::setAdvanced("decomposeParDict"); + #include "addOverwriteOption.H" #include "setRootCase.H" #include "createTime.H" const bool overwrite = args.found("overwrite"); + const word dictName("mirrorMeshDict"); + + #include "setSystemRunTimeDictionaryIO.H" + + Info<< "Reading " << dictName << "\n" << endl; + + const IOdictionary mirrorDict(dictIO); + mirrorFvMesh mesh ( IOobject @@ -62,7 +75,8 @@ int main(int argc, char *argv[]) mirrorFvMesh::defaultRegion, runTime.constant(), runTime - ) + ), + mirrorDict ); hexRef8Data refData diff --git a/etc/config.sh/completion_cache b/etc/config.sh/completion_cache index 40a4e35706d..c1d5a12450c 100644 --- a/etc/config.sh/completion_cache +++ b/etc/config.sh/completion_cache @@ -138,7 +138,7 @@ _of_complete_cache_[mergeOrSplitBaffles]="-case -decomposeParDict -dict -fileHan _of_complete_cache_[mergeSurfacePatches]="-case -fileHandler -output -patchIdRange -patchIds -patchNames | -keep -noFunctionObjects -doc -doc-source -help" _of_complete_cache_[meshToFPMA]="-case -decomposeParDict -fileHandler | -noFunctionObjects -parallel -doc -doc-source -help" _of_complete_cache_[mhdFoam]="-case -decomposeParDict -fileHandler | -dry-run -dry-run-write -listFunctionObjects -listRegisteredSwitches -listScalarBCs -listSwitches -listUnsetSwitches -listVectorBCs -noFunctionObjects -parallel -postProcess -doc -doc-source -help" -_of_complete_cache_[mirrorMesh]="-case -decomposeParDict -fileHandler | -noFunctionObjects -overwrite -parallel -doc -doc-source -help" +_of_complete_cache_[mirrorMesh]="-case -dict -decomposeParDict -fileHandler | -noFunctionObjects -overwrite -parallel -doc -doc-source -help" _of_complete_cache_[mixtureAdiabaticFlameT]="-case -fileHandler | -doc -doc-source -help" _of_complete_cache_[modifyMesh]="-case -decomposeParDict -dict -fileHandler | -overwrite -parallel -doc -doc-source -help" _of_complete_cache_[moveDynamicMesh]="-case -decomposeParDict -fileHandler -region | -checkAMI -noFunctionObjects -parallel -doc -doc-source -help" diff --git a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/Allrun.pre b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/Allrun.pre index f740041ae2f..df81f8b6587 100755 --- a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/Allrun.pre +++ b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/Allrun.pre @@ -5,13 +5,8 @@ cd ${0%/*} || exit 1 # Run from this directory runApplication blockMesh runApplication transformPoints -scale '(1.6666 1 1)' -runApplication changeDictionary -instance system -dict system/changeDictionaryDict.X -runApplication mirrorMesh -overwrite -rm -f log.mirrorMesh -rm -f log.changeDictionary - -runApplication changeDictionary -instance system -dict system/changeDictionaryDict.Y -runApplication mirrorMesh -overwrite +runApplication -s xplane mirrorMesh -dict system/mirrorMeshDict.X -overwrite +runApplication -s yplane mirrorMesh -dict system/mirrorMeshDict.Y -overwrite restore0Dir diff --git a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict index 03c59124dca..bd6cd7e9af4 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict +++ b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict @@ -10,7 +10,6 @@ FoamFile version 2.0; format ascii; class dictionary; - location "system"; object mirrorMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // @@ -20,10 +19,9 @@ planeType pointAndNormal; pointAndNormalDict { point (0 0 0); - normal (0 -1 0); + normal (0 0 -1); } -planeTolerance 1e-06; - +planeTolerance 1e-6; // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/changeDictionaryDict.X b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict.X similarity index 84% rename from tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/changeDictionaryDict.X rename to tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict.X index ab71308303c..912f0a21cae 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/changeDictionaryDict.X +++ b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict.X @@ -10,17 +10,18 @@ FoamFile version 2.0; format ascii; class dictionary; - object changeDictionaryDict; + object mirrorMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -mirrorMeshDict +planeType pointAndNormal; + +pointAndNormalDict { - pointAndNormalDict - { - point (0 0 0); - normal (-1 0 0); - } + point (0 0 0); + normal (-1 0 0); } +planeTolerance 1e-6; + // ************************************************************************* // diff --git a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/changeDictionaryDict.Y b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict.Y similarity index 84% rename from tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/changeDictionaryDict.Y rename to tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict.Y index 2f49f82e326..38d389814c3 100644 --- a/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/changeDictionaryDict.Y +++ b/tutorials/incompressible/pimpleFoam/RAS/ellipsekkLOmega/system/mirrorMeshDict.Y @@ -10,17 +10,18 @@ FoamFile version 2.0; format ascii; class dictionary; - object changeDictionaryDict; + object mirrorMeshDict; } // * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * * // -mirrorMeshDict +planeType pointAndNormal; + +pointAndNormalDict { - pointAndNormalDict - { - point (0 0 0); - normal (0 -1 0); - } + point (0 0 0); + normal (0 -1 0); } +planeTolerance 1e-6; + // ************************************************************************* // -- GitLab