Skip to content

Repository files navigation

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 by Implementation

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

Benchmarks by Machine

Benchmark of a single force computation step of a Weakly Compressible SPH (WCSPH) simulation with the GridNeighborhoodSearch and FullGridCellList implementation: WCSPH benchmark by machine

Benchmark of a single force computation step of a Total Lagrangian SPH (TLSPH) simulation with the PrecomputedNeighborhoodSearch implementation (TLSPH is looking for neighbors in the initial configuration, so the NHS does not need to be updated): TLSPH benchmark by machine

Deformation gradient performance for a TLSPH simulation with the PrecomputedNeighborhoodSearch implementation: TLSPH deformation gradient benchmark by machine

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}
}

About

PointNeighbors.jl: Neighborhood search with fixed search radius in Julia

Topics

Resources

Security policy

Stars

27 stars

Watchers

5 watching

Forks

Releases

Used by

Contributors

Languages