ENH: relocate/refactor fvMeshSubset

- direct construct and reset method for creating a zero-sized (dummy)
  subMesh. Has no exposed faces and no parallel synchronization
  required.

- core mapping (interpolate) functionality with direct handling
  of subsetting in fvMeshSubset (src/finiteVolume).
  Does not use dynamicMesh topology changes

- two-step subsetting as fvMeshSubsetter (src/dynamicMesh).
  Does use dynamicMesh topology changes.
  This is apparently only needed by the subsetMesh application itself.

DEFEATURE: remove deprecated setLargeCellSubset() method

- was deprecated JUL-2018, now removed (see issue #951)
This commit is contained in:
Mark Olesen
2022-04-07 11:25:57 +02:00
parent 6e21d6f78c
commit cf7dbf4d42
24 changed files with 846 additions and 579 deletions

View File

@ -6,7 +6,7 @@
\\/ M anipulation |
-------------------------------------------------------------------------------
Copyright (C) 2011-2016 OpenFOAM Foundation
Copyright (C) 2016-2021 OpenCFD Ltd.
Copyright (C) 2016-2022 OpenCFD Ltd.
-------------------------------------------------------------------------------
License
This file is part of OpenFOAM.
@ -42,7 +42,7 @@ Description
\*---------------------------------------------------------------------------*/
#include "fvMeshSubset.H"
#include "fvMeshSubsetter.H" // Not fvMeshSubset (need two-step subsetting)
#include "argList.H"
#include "IOobjectList.H"
#include "volFields.H"
@ -517,8 +517,8 @@ int main(int argc, char *argv[])
}
// Mesh subsetting engine
fvMeshSubset subsetter(mesh);
// Two-step mesh subsetting engine
fvMeshSubsetter subsetter(mesh);
{
bitSet selectedCells =
@ -530,13 +530,8 @@ int main(int argc, char *argv[])
if (exposedPatchIDs.size() == 1)
{
// Single patch for exposed faces
subsetter.setCellSubset
(
selectedCells,
exposedPatchIDs.first(),
true
);
// Single patch for exposed faces (syncPar)
subsetter.reset(selectedCells, exposedPatchIDs.first(), true);
}
else
{
@ -545,7 +540,7 @@ int main(int argc, char *argv[])
labelList exposedFaces
(
subsetter.getExposedFaces(selectedCells, true)
subsetter.getExposedFaces(selectedCells, true) // syncPar
);
subsetter.setCellSubset
@ -553,7 +548,7 @@ int main(int argc, char *argv[])
selectedCells,
exposedFaces,
labelUIndList(nearestExposedPatch, exposedFaces)(),
true
true // syncPar
);
}

View File

@ -1031,10 +1031,7 @@ autoPtr<mapDistributePolyMesh> redistributeAndWrite
// Subset 0 cells, no parallel comms.
// This is used to create zero-sized fields.
subsetterPtr.reset
(
new fvMeshSubset(mesh, bitSet(), nonProcI, false)
);
subsetterPtr.reset(new fvMeshSubset(mesh, zero{}));
}