ENH: improved point-cell and cell-point topology methods (#2715)
-
for OpenFOAM-v2212 and earlier cellPoints() were constructed from pointCells(), but this is slower than constructing pointCells() from cellPoints().
Some of the slowness is due to allocations associated with cells::labels(), but a large amount of slowness is the duplicate point avoidance. Since this is being done for many points/cells at once, using a bitSet for managing the duplicates amortizes quickly
-
now construct cellPoints() from cached pointCells(), otherwise construct manually (using bitSet/DynamicList for bookkeeping)
-
construct pointCells() from cached cellPoints(), or cached pointFaces(), otherwise manually.
Code Contribution: Alon Zameret
Co-authored-by: Mark Olesen