From 67310ed4ef9a7c1ae6cb5ae967b31cb0f8032b2a Mon Sep 17 00:00:00 2001 From: Mark Olesen <Mark.Olesen@esi-group.com> Date: Wed, 13 Jun 2018 11:08:58 +0200 Subject: [PATCH] ENH: sort cellCentre output according to global cell index (issue #869) - replace SortableList with sortedOrder, to reduce some overhead --- src/sampling/sampledSet/cellCentre/cellCentreSet.C | 12 ++++++++++-- src/sampling/sampledSet/sampledSet/sampledSet.C | 7 +++---- src/sampling/sampledSet/sampledSets/sampledSets.C | 1 - 3 files changed, 13 insertions(+), 7 deletions(-) diff --git a/src/sampling/sampledSet/cellCentre/cellCentreSet.C b/src/sampling/sampledSet/cellCentre/cellCentreSet.C index 2631595ff1f..1c7cc4a1828 100644 --- a/src/sampling/sampledSet/cellCentre/cellCentreSet.C +++ b/src/sampling/sampledSet/cellCentre/cellCentreSet.C @@ -27,6 +27,7 @@ License #include "meshSearch.H" #include "polyMesh.H" #include "volFields.H" +#include "globalIndex.H" #include "addToRunTimeSelectionTable.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -44,6 +45,8 @@ void Foam::cellCentreSet::genSamples() { const label len = mesh().nCells(); + const globalIndex globalSampleNumbers(len); + const auto& cellCentres = refCast<const fvMesh>(mesh()).C().primitiveField(); @@ -70,8 +73,13 @@ void Foam::cellCentreSet::genSamples() } labelList samplingFaces(selectedCells.size(), -1); - labelList samplingSegments(selectedCells.size(), -1); - scalarList samplingCurveDist(selectedCells.size(), 0.0); + labelList samplingSegments(selectedCells.size(), 0); + scalarList samplingCurveDist(selectedCells.size()); + + forAll(selectedCells, i) + { + samplingCurveDist[i] = globalSampleNumbers.toGlobal(selectedCells[i]); + } // Move into *this setSamples diff --git a/src/sampling/sampledSet/sampledSet/sampledSet.C b/src/sampling/sampledSet/sampledSet/sampledSet.C index f13fce7c77f..cc053293305 100644 --- a/src/sampling/sampledSet/sampledSet/sampledSet.C +++ b/src/sampling/sampledSet/sampledSet/sampledSet.C @@ -29,7 +29,6 @@ License #include "meshSearch.H" #include "writer.H" #include "particle.H" -#include "SortableList.H" // * * * * * * * * * * * * * * Static Data Members * * * * * * * * * * * * * // @@ -467,7 +466,7 @@ Foam::autoPtr<Foam::coordSet> Foam::sampledSet::gather ); - if (Pstream::master() && allCurveDist.size() == 0) + if (Pstream::master() && allCurveDist.empty()) { WarningInFunction << "Sample set " << name() @@ -475,8 +474,8 @@ Foam::autoPtr<Foam::coordSet> Foam::sampledSet::gather } // Sort curveDist and use to fill masterSamplePts - SortableList<scalar> sortedDist(allCurveDist); - indexSet = sortedDist.indices(); + Foam::sortedOrder(allCurveDist, indexSet); // uses stable sort + scalarList sortedDist(allCurveDist, indexSet); // with indices for mapping return autoPtr<coordSet>::New ( diff --git a/src/sampling/sampledSet/sampledSets/sampledSets.C b/src/sampling/sampledSet/sampledSets/sampledSets.C index 567aed51120..f706f384860 100644 --- a/src/sampling/sampledSet/sampledSets/sampledSets.C +++ b/src/sampling/sampledSet/sampledSets/sampledSets.C @@ -28,7 +28,6 @@ License #include "Time.H" #include "volFields.H" #include "ListListOps.H" -#include "SortableList.H" #include "volPointInterpolation.H" #include "mapPolyMesh.H" #include "addToRunTimeSelectionTable.H" -- GitLab