mirror of
https://develop.openfoam.com/Development/openfoam.git
synced 2025-11-28 03:28:01 +00:00
Merge remote-tracking branch 'origin/feature-cellSetRemove' into develop
This commit is contained in:
@ -3,7 +3,7 @@
|
||||
\\ / F ield | OpenFOAM: The Open Source CFD Toolbox
|
||||
\\ / O peration |
|
||||
\\ / A nd | Copyright (C) 2011-2016 OpenFOAM Foundation
|
||||
\\/ M anipulation |
|
||||
\\/ M anipulation | Copyright (C) 2016 OpenCFD Ltd.
|
||||
-------------------------------------------------------------------------------
|
||||
License
|
||||
This file is part of OpenFOAM.
|
||||
@ -56,7 +56,9 @@ Description
|
||||
#include "mapPolyMesh.H"
|
||||
#include "faceSet.H"
|
||||
#include "cellSet.H"
|
||||
#include "pointSet.H"
|
||||
#include "syncTools.H"
|
||||
#include "ReadFields.H"
|
||||
#include "polyTopoChange.H"
|
||||
#include "polyModifyFace.H"
|
||||
#include "polyAddFace.H"
|
||||
@ -315,6 +317,59 @@ void initCreatedPatches
|
||||
}
|
||||
|
||||
|
||||
template<class TopoSet>
|
||||
void subsetTopoSets
|
||||
(
|
||||
const fvMesh& mesh,
|
||||
const IOobjectList& objectsList,
|
||||
const labelList& map,
|
||||
const fvMesh& subMesh,
|
||||
PtrList<TopoSet>& subSets
|
||||
)
|
||||
{
|
||||
// Read original sets
|
||||
PtrList<TopoSet> sets;
|
||||
ReadFields<TopoSet>(objectsList, sets);
|
||||
|
||||
subSets.setSize(sets.size());
|
||||
forAll(sets, i)
|
||||
{
|
||||
TopoSet& set = sets[i];
|
||||
|
||||
Info<< "Subsetting " << set.type() << " " << set.name() << endl;
|
||||
|
||||
// Map the data
|
||||
PackedBoolList isSet(set.maxSize(mesh));
|
||||
forAllConstIter(labelHashSet, set, iter)
|
||||
{
|
||||
isSet[iter.key()] = true;
|
||||
}
|
||||
label nSet = 0;
|
||||
forAll(map, i)
|
||||
{
|
||||
if (isSet[map[i]])
|
||||
{
|
||||
nSet++;
|
||||
}
|
||||
}
|
||||
|
||||
subSets.set
|
||||
(
|
||||
i,
|
||||
new TopoSet(subMesh, set.name(), nSet, IOobject::AUTO_WRITE)
|
||||
);
|
||||
TopoSet& subSet = subSets[i];
|
||||
forAll(map, i)
|
||||
{
|
||||
if (isSet[map[i]])
|
||||
{
|
||||
subSet.insert(i);
|
||||
}
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
void createCoupledBaffles
|
||||
(
|
||||
fvMesh& mesh,
|
||||
@ -923,6 +978,41 @@ int main(int argc, char *argv[])
|
||||
surfTensorFlds
|
||||
);
|
||||
|
||||
|
||||
// Set handling
|
||||
PtrList<cellSet> cellSets;
|
||||
PtrList<faceSet> faceSets;
|
||||
PtrList<pointSet> pointSets;
|
||||
{
|
||||
IOobjectList objects(mesh, mesh.facesInstance(), "polyMesh/sets");
|
||||
subsetTopoSets
|
||||
(
|
||||
mesh,
|
||||
objects,
|
||||
subsetter.cellMap(),
|
||||
subsetter.subMesh(),
|
||||
cellSets
|
||||
);
|
||||
subsetTopoSets
|
||||
(
|
||||
mesh,
|
||||
objects,
|
||||
subsetter.faceMap(),
|
||||
subsetter.subMesh(),
|
||||
faceSets
|
||||
);
|
||||
subsetTopoSets
|
||||
(
|
||||
mesh,
|
||||
objects,
|
||||
subsetter.pointMap(),
|
||||
subsetter.subMesh(),
|
||||
pointSets
|
||||
);
|
||||
}
|
||||
|
||||
|
||||
|
||||
if (!overwrite)
|
||||
{
|
||||
runTime++;
|
||||
@ -1134,6 +1224,11 @@ int main(int argc, char *argv[])
|
||||
Zero
|
||||
);
|
||||
|
||||
// Update numbering of topoSets
|
||||
topoSet::updateMesh(subsetter.subMesh().facesInstance(), map, cellSets);
|
||||
topoSet::updateMesh(subsetter.subMesh().facesInstance(), map, faceSets);
|
||||
topoSet::updateMesh(subsetter.subMesh().facesInstance(), map, pointSets);
|
||||
|
||||
|
||||
// Move mesh (since morphing might not do this)
|
||||
if (map().hasMotionPoints())
|
||||
|
||||
Reference in New Issue
Block a user