43 short currentFamily = 0;
45 if (aNode->getFamily() != -1) {
49 aNode->setFamily(currentFamily);
51 NeighbourContainerType& innerNeighbours = aNode->getInnerNodes();
52 NeighbourContainerType& outerNeighbours = aNode->getOuterNodes();
53 NeighbourContainerType neighbours;
54 neighbours.reserve(innerNeighbours.size() + outerNeighbours.size());
55 neighbours.insert(neighbours.end(), innerNeighbours.begin(), innerNeighbours.end());
56 neighbours.insert(neighbours.end(), outerNeighbours.begin(), outerNeighbours.end());
58 while (neighbours.size() != 0) {
59 neighbours =
markNodes(currentFamily, neighbours);
68 static NeighbourContainerType
markNodes(
short family,
const NeighbourContainerType& neighbours)
70 NeighbourContainerType newNeighbours;
71 for (
auto& neighbour : neighbours) {
73 if (neighbour->getFamily() != -1) {
74 short tmpFamily = neighbour->getFamily();
75 if (tmpFamily != family) {
76 B2FATAL(
"Node already assigned to different family: " << family <<
", " << tmpFamily);
81 neighbour->setFamily(family);
82 NeighbourContainerType& innerNeighbours = neighbour->getInnerNodes();
83 NeighbourContainerType& outerNeighbours = neighbour->getOuterNodes();
84 newNeighbours.reserve(innerNeighbours.size() + outerNeighbours.size());
85 newNeighbours.insert(newNeighbours.end(), innerNeighbours.begin(), innerNeighbours.end());
86 newNeighbours.insert(newNeighbours.end(), outerNeighbours.begin(), outerNeighbours.end());