singleProcessorFaceSets not working in parallel
Summary
The decomposition constraint 'singleProcessorFaceSets' does not work in combination with redistributePar
. It works with decomposePar
. The setup collects all cyclicAMI faces into a faceSet and then uses the constraint to keep all of them on the same processor.
Steps to reproduce
decomposePar a case. Make sure that e.g. cyclicAMI is distributed (check that multiple processors have faces for the patch e.g. by looking at processorDDD/constant/polyMesh/boundary). Use topoSet
in parallel to collect the patch faces into a faceSet, e.g. a sample topoSetDict
to collect the faces in patches fan*
:
actions
(
// Left fan
{
name fanLeftFaceSet;
type faceSet;
action new;
source patchToFace;
patches (fanLeft_master fanLeft_slave);
}
// Right fan
....
}
Then add a constraint to the decomposeParDict
:
method ptscotch;
constraints
{
keepCyclicAtOnePatch
{
type singleProcessorFaceSets;
sets
(
(fanLeftFaceSet -1)
(fanRightFaceSet -1)
);
enabled true;
}
}
Run
mpirun -np DDD redistributePar -parallel
and check where the cyclicAMI faces have ended up.
Example case
Unfortunately a bit too big to attach. Take any case with multiple cyclicAMI and e.g. random decomposition and follow above receipe.
What is the current bug behaviour?
Faces are not on a single processor
What is the expected correct behavior?
Faces/cells point-connected to the faceSet should be on a single processor.
Relevant logs and/or images
Environment information
- OpenFOAM version :v2112