PointNeighbors.jl

PointNeighbors.jl: Neighborhood search with fixed search radius in Julia
Author trixi-framework
Popularity
18 Stars
Updated Last
2 Months Ago
Started In
May 2024

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)
Implementation Description Features Query Update GPU-compatible
GridNeighborhoodSearch with DictionaryCellList Grid-based NHS with Julia Dict backend Infinite domain Fast Fast โŒ
GridNeighborhoodSearch with FullGridCellList Grid-based NHS allocating all cells of the domain Finite domain, but efficient memory layout for densely filled domain. Faster Fastest โœ…
PrecomputedNeighborhoodSearch Precompute neighbor lists Best for TLSPH without NHS updates. Not suitable for updates in every time step. Fastest Very 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}
}