From a0352b0ae0c585447e70edffaac123e78a33c2d9 Mon Sep 17 00:00:00 2001 From: mattijs <mattijs> Date: Fri, 28 Oct 2011 11:31:23 +0100 Subject: [PATCH] ENH: polyTopoChange: efficient sorting --- .../polyTopoChange/polyTopoChange.C | 26 ++++++++++++++----- 1 file changed, 20 insertions(+), 6 deletions(-) diff --git a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C index 622748be1e5..63f533e090f 100644 --- a/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C +++ b/src/dynamicMesh/polyTopoChange/polyTopoChange/polyTopoChange.C @@ -680,13 +680,17 @@ void Foam::polyTopoChange::getFaceOrder // First unassigned face label newFaceI = 0; + labelList nbr; + labelList order; + forAll(cellMap_, cellI) { label startOfCell = cellFaceOffsets[cellI]; label nFaces = cellFaceOffsets[cellI+1] - startOfCell; // Neighbouring cells - SortableList<label> nbr(nFaces); + //SortableList<label> nbr(nFaces); + nbr.setSize(nFaces); for (label i = 0; i < nFaces; i++) { @@ -725,14 +729,24 @@ void Foam::polyTopoChange::getFaceOrder } } - nbr.sort(); + //nbr.sort(); + order.setSize(nFaces); + sortedOrder(nbr, order); - forAll(nbr, i) + //forAll(nbr, i) + //{ + // if (nbr[i] != -1) + // { + // oldToNew[cellFaces[startOfCell + nbr.indices()[i]]] = + // newFaceI++; + // } + //} + forAll(order, i) { - if (nbr[i] != -1) + label index = order[i]; + if (nbr[index] != -1) { - oldToNew[cellFaces[startOfCell + nbr.indices()[i]]] = - newFaceI++; + oldToNew[cellFaces[startOfCell + index]] = newFaceI++; } } } -- GitLab