PointNeighbors.jl

Docs-stable Docs-dev Slack Youtube Build Status Codecov SciML Code Style License: MIT DOI

PointNeighbors.jl is a package for neighborhood search with fixed search radius in 1D, 2D and 3D point clouds.

Features

  • Several implementations of neighborhood search with fixed search radius
  • Focus on fast incremental updates to be usable for particle-based simulations with frequent updates
  • Designed as a "playground" to easily switch between different implementations and data structures
  • Common API over all implementations
  • Extensive benchmark suite to study different implementations (work in progress)
  • GPU compatibility (work in progress)
ImplementationDescriptionFeaturesQueryUpdateGPU-compatible
GridNeighborhoodSearch with DictionaryCellListGrid-based NHS with Julia Dict backendInfinite domainFastFast
GridNeighborhoodSearch with FullGridCellListGrid-based NHS allocating all cells of the domainFinite domain, but efficient memory layout for densely filled domain.FasterFastest
PrecomputedNeighborhoodSearchPrecompute neighbor listsBest for TLSPH without NHS updates. Not suitable for updates in every time step.FastestVery slow

Benchmarks

The following benchmarks were conducted on an AMD Ryzen Threadripper 3990X using 128 threads.

Benchmark of a single force computation step of a Weakly Compressible SPH (WCSPH) simulation: wcsph

Benchmark of an incremental update similar to a WCSPH simulation (note the log scale): update

Benchmark of a full right-hand side evaluation of a WCSPH simulation (note the log scale): rhs

Packages using PointNeighbors.jl

If you're using PointNeighbors.jl in your package, please feel free to open a PR adding it to this list.

Cite Us

If you use PointNeighbors.jl in your own research or write a paper using results obtained with the help of PointNeighbors.jl, please cite it as

@misc{pointneighbors,
  title={{P}oint{N}eighbors.jl: {N}eighborhood search with fixed search radius in {J}ulia},
  author={Erik Faulhaber and Niklas Neher and Sven Berger and
          Michael Schlottke-Lakemper and Gregor Gassner},
  year={2024},
  howpublished={\url{https://github.com/trixi-framework/PointNeighbors.jl}},
  doi={10.5281/zenodo.12702157}
}