From 85771c89850b36623abb2b2d38c577fcaf234617 Mon Sep 17 00:00:00 2001 From: Mark Olesen Date: Tue, 2 Apr 2024 16:49:26 +0200 Subject: [PATCH] ENH: simpler topoSet handling of zone/set - support construct faceZoneSet from faceSet (#3126) ENH: support unregistered loading of cell/face/point sets --- .../fvMesh/fvMeshSubset/fvMeshSubsetProxy.C | 2 +- .../cellSources/cellToCell/cellToCell.C | 4 +- .../cellSources/faceToCell/faceToCell.C | 3 +- .../cellSources/haloToCell/haloToCell.C | 8 +- .../cellSources/pointToCell/pointToCell.C | 3 +- .../cellSources/regionToCell/regionToCell.C | 22 +- .../cellSources/regionToCell/regionToCell.H | 2 +- .../targetVolumeToCell/targetVolumeToCell.C | 8 +- .../setToCellZone/setToCellZone.C | 6 +- .../faceSources/cellToFace/cellToFace.C | 6 +- .../faceSources/faceToFace/faceToFace.C | 4 +- .../faceSources/holeToFace/holeToFace.C | 4 +- .../faceSources/pointToFace/pointToFace.C | 3 +- .../faceSources/regionToFace/regionToFace.C | 14 +- .../faceSources/regionToFace/regionToFace.H | 6 +- .../cellToFaceZone/cellToFaceZone.C | 4 +- .../setAndNormalToFaceZone.C | 8 +- .../setToFaceZone/setToFaceZone.C | 4 +- .../setsToFaceZone/setsToFaceZone.C | 4 +- .../pointSources/cellToPoint/cellToPoint.C | 5 +- .../pointSources/faceToPoint/faceToPoint.C | 6 +- .../pointSources/pointToPoint/pointToPoint.C | 4 +- .../setToPointZone/setToPointZone.C | 4 +- src/meshTools/topoSet/topoSets/cellBitSet.C | 10 +- src/meshTools/topoSet/topoSets/cellBitSet.H | 12 +- src/meshTools/topoSet/topoSets/cellSet.C | 55 +++- src/meshTools/topoSet/topoSets/cellSet.H | 103 +++--- src/meshTools/topoSet/topoSets/cellZoneSet.C | 237 ++++++-------- src/meshTools/topoSet/topoSets/cellZoneSet.H | 39 ++- src/meshTools/topoSet/topoSets/faceBitSet.C | 8 +- src/meshTools/topoSet/topoSets/faceBitSet.H | 12 +- src/meshTools/topoSet/topoSets/faceBoolSet.C | 2 +- src/meshTools/topoSet/topoSets/faceBoolSet.H | 2 +- src/meshTools/topoSet/topoSets/faceSet.C | 43 ++- src/meshTools/topoSet/topoSets/faceSet.H | 52 +++- src/meshTools/topoSet/topoSets/faceZoneSet.C | 210 +++++++------ src/meshTools/topoSet/topoSets/faceZoneSet.H | 35 +-- src/meshTools/topoSet/topoSets/pointBitSet.C | 10 +- src/meshTools/topoSet/topoSets/pointBitSet.H | 12 +- src/meshTools/topoSet/topoSets/pointSet.C | 46 ++- src/meshTools/topoSet/topoSets/pointSet.H | 52 +++- src/meshTools/topoSet/topoSets/pointZoneSet.C | 249 +++++++-------- src/meshTools/topoSet/topoSets/pointZoneSet.H | 42 ++- src/meshTools/topoSet/topoSets/topoBitSet.C | 40 ++- src/meshTools/topoSet/topoSets/topoBitSet.H | 35 ++- src/meshTools/topoSet/topoSets/topoBoolSet.C | 11 +- src/meshTools/topoSet/topoSets/topoBoolSet.H | 32 +- src/meshTools/topoSet/topoSets/topoSet.C | 293 ++++++++++-------- src/meshTools/topoSet/topoSets/topoSet.H | 135 +++++--- .../topoSet/topoSets/topoSetTemplates.C | 15 +- src/overset/regionsToCell/regionsToCell.C | 12 +- 51 files changed, 1067 insertions(+), 871 deletions(-) diff --git a/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetProxy.C b/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetProxy.C index 302357e8ba..1e6f080cd9 100644 --- a/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetProxy.C +++ b/src/finiteVolume/fvMesh/fvMeshSubset/fvMeshSubsetProxy.C @@ -160,7 +160,7 @@ bool Foam::fvMeshSubsetProxy::correct(bool verbose) Info<< "Subsetting mesh based on cellSet " << name_ << endl; } - cellSet cset(baseMesh_, name_); + cellSet cset(baseMesh_, name_, IOobject::NO_REGISTER); selectedCells.resize(nCells); for (const label idx : cset) diff --git a/src/meshTools/topoSet/cellSources/cellToCell/cellToCell.C b/src/meshTools/topoSet/cellSources/cellToCell/cellToCell.C index 667ccd02c3..c175d121d2 100644 --- a/src/meshTools/topoSet/cellSources/cellToCell/cellToCell.C +++ b/src/meshTools/topoSet/cellSources/cellToCell/cellToCell.C @@ -114,7 +114,7 @@ void Foam::cellToCell::applyToSet } else { - cellSet loadedSet(mesh_, setName); + cellSet loadedSet(mesh_, setName, IOobject::NO_REGISTER); set.addSet(loadedSet); } } @@ -136,7 +136,7 @@ void Foam::cellToCell::applyToSet } else { - cellSet loadedSet(mesh_, setName); + cellSet loadedSet(mesh_, setName, IOobject::NO_REGISTER); set.subtractSet(loadedSet); } } diff --git a/src/meshTools/topoSet/cellSources/faceToCell/faceToCell.C b/src/meshTools/topoSet/cellSources/faceToCell/faceToCell.C index a71a70760b..848851ffa5 100644 --- a/src/meshTools/topoSet/cellSources/faceToCell/faceToCell.C +++ b/src/meshTools/topoSet/cellSources/faceToCell/faceToCell.C @@ -146,8 +146,7 @@ void Foam::faceToCell::combine else { // Load the set - faceSet loadedSet(mesh_, setName); - + faceSet loadedSet(mesh_, setName, IOobject::NO_REGISTER); const labelHashSet& faceLabels = loadedSet; combineImpl(set, add, faceLabels); diff --git a/src/meshTools/topoSet/cellSources/haloToCell/haloToCell.C b/src/meshTools/topoSet/cellSources/haloToCell/haloToCell.C index 9c08a2e3f2..ba70c4bcb9 100644 --- a/src/meshTools/topoSet/cellSources/haloToCell/haloToCell.C +++ b/src/meshTools/topoSet/cellSources/haloToCell/haloToCell.C @@ -5,7 +5,7 @@ \\ / A nd | www.openfoam.com \\/ M anipulation | ------------------------------------------------------------------------------- - Copyright (C) 2019-2022 OpenCFD Ltd. + Copyright (C) 2019-2024 OpenCFD Ltd. ------------------------------------------------------------------------------- License This file is part of OpenFOAM. @@ -83,9 +83,11 @@ void Foam::haloToCell::combine(topoSet& set, const bool add) const // The starting set of cells bitSet current(cells.size()); - if (isA(set)) + const auto* topoBitsPtr = isA(set); + + if (topoBitsPtr) { - current |= refCast(set).addressing(); + current |= topoBitsPtr->addressing(); } else { diff --git a/src/meshTools/topoSet/cellSources/pointToCell/pointToCell.C b/src/meshTools/topoSet/cellSources/pointToCell/pointToCell.C index 9c74f9e3e6..aad09d4423 100644 --- a/src/meshTools/topoSet/cellSources/pointToCell/pointToCell.C +++ b/src/meshTools/topoSet/cellSources/pointToCell/pointToCell.C @@ -126,8 +126,7 @@ void Foam::pointToCell::combine else { // Load the set - pointSet loadedSet(mesh_, setName); - + pointSet loadedSet(mesh_, setName, IOobject::NO_REGISTER); const labelHashSet& pointLabels = loadedSet; combineImpl(set, add, pointLabels); diff --git a/src/meshTools/topoSet/cellSources/regionToCell/regionToCell.C b/src/meshTools/topoSet/cellSources/regionToCell/regionToCell.C index f192b4f37d..26270cf1ef 100644 --- a/src/meshTools/topoSet/cellSources/regionToCell/regionToCell.C +++ b/src/meshTools/topoSet/cellSources/regionToCell/regionToCell.C @@ -351,8 +351,7 @@ void Foam::regionToCell::combine(topoSet& set, const bool add) const if (isZone_) { Info<< " Using cellZone " << setName_ - << " to delimit search region." - << endl; + << " to delimit search region." << nl; selectedCell = false; for (const label celli : mesh_.cellZones()[setName_]) @@ -363,10 +362,9 @@ void Foam::regionToCell::combine(topoSet& set, const bool add) const else { Info<< " Loading cellSet " << setName_ - << " to delimit search region." - << endl; + << " to delimit search region." << nl; - cellSet subSet(mesh_, setName_); + cellSet subSet(mesh_, setName_, IOobject::NO_REGISTER); selectedCell = false; for (const label celli : subSet) @@ -428,14 +426,14 @@ Foam::regionToCell::regionToCell ), nErode_(dict.getCheckOrDefault