|
8 | 8 | [](https://codecov.io/gh/trixi-framework/PointNeighbors.jl) |
9 | 9 | [](https://github.com/SciML/SciMLStyle) |
10 | 10 | [](https://opensource.org/license/mit/) |
| 11 | +[](https://zenodo.org/doi/10.5281/zenodo.12702157) |
11 | 12 |
|
12 | | -Work in Progress! |
| 13 | +**PointNeighbors.jl** is a package for neighborhood search with fixed search radius in |
| 14 | +1D, 2D and 3D point clouds. |
| 15 | + |
| 16 | +## Features |
| 17 | + |
| 18 | +- Several implementations of neighborhood search with fixed search radius |
| 19 | +- Focus on fast incremental updates to be usable for particle-based simulations with |
| 20 | + frequent updates |
| 21 | +- Designed as a "playground" to easily switch between different implementations and data |
| 22 | + structures |
| 23 | +- Common API over all implementations |
| 24 | +- Extensive benchmark suite to study different implementations (work in progress) |
| 25 | +- GPU compatibility (work in progress) |
| 26 | + |
| 27 | +| Implementation | Description | Features | Query | Update | GPU-compatible | |
| 28 | +| ------------- | ------------- | --- | :--: | :--: | :--: | |
| 29 | +| `GridNeighborhoodSearch` with `DictionaryCellList` | Grid-based NHS with Julia `Dict` backend | Infinite domain | Fast | Fast | ❌ | |
| 30 | +| `GridNeighborhoodSearch` with `FullGridCellList` | Grid-based NHS allocating all cells of the domain | Finite domain, but efficient memory layout for densely filled domain. | Faster | Fastest | ✅ | |
| 31 | +| `PrecomputedNeighborhoodSearch` | Precompute neighbor lists | Best for [TLSPH](https://trixi-framework.github.io/TrixiParticles.jl/stable/systems/total_lagrangian_sph/) without NHS updates. Not suitable for updates in every time step. | Fastest | Very slow | ❌ | |
| 32 | + |
| 33 | +## Benchmarks |
| 34 | + |
| 35 | +The following benchmarks were conducted on an AMD Ryzen Threadripper 3990X using 128 threads. |
| 36 | + |
| 37 | +Benchmark of a single force computation step of a Weakly Compressible SPH (WCSPH) simulation: |
| 38 | + |
| 39 | + |
| 40 | +Benchmark of an incremental update similar to a WCSPH simulation (note the log scale): |
| 41 | + |
| 42 | + |
| 43 | +Benchmark of a full right-hand side evaluation of a WCSPH simulation (note the log scale): |
| 44 | + |
| 45 | + |
| 46 | + |
| 47 | +## Packages using PointNeighbors.jl |
| 48 | + |
| 49 | +- [TrixiParticles.jl](https://github.com/trixi-framework/TrixiParticles.jl) |
| 50 | +- [Peridynamics.jl](https://github.com/kaipartmann/Peridynamics.jl) |
| 51 | +- [PeriLab.jl](https://github.com/PeriHub/PeriLab.jl) |
| 52 | + |
| 53 | +If you're using PointNeighbors.jl in your package, please feel free to open a PR adding it |
| 54 | +to this list. |
| 55 | + |
| 56 | + |
| 57 | +## Cite Us |
| 58 | + |
| 59 | +If you use PointNeighbors.jl in your own research or write a paper using results obtained |
| 60 | +with the help of PointNeighbors.jl, please cite it as |
| 61 | +```bibtex |
| 62 | +@misc{pointneighbors, |
| 63 | + title={{P}oint{N}eighbors.jl: {N}eighborhood search with fixed search radius in {J}ulia}, |
| 64 | + author={Erik Faulhaber and Niklas Neher and Sven Berger and |
| 65 | + Michael Schlottke-Lakemper and Gregor Gassner}, |
| 66 | + year={2024}, |
| 67 | + howpublished={\url{https://github.com/trixi-framework/PointNeighbors.jl}}, |
| 68 | + doi={10.5281/zenodo.12702157} |
| 69 | +} |
| 70 | +``` |
0 commit comments