Skip to content

Release v0.5

Latest
Compare
Choose a tag to compare
@martinjrobins martinjrobins released this 13 Oct 12:20
· 303 commits to master since this release

New Features

  • new neighbourhood data structures, can be a cell list, kd-tree or hyper oct-tree.
  • Aboria::init_neighbour_search no longer accepts a search radius, but an average/maximum number of particles per bucket. New neighbourhood search queries can now take any distance to search over.
  • more flexible neighbourhood queries that can use any integer p-norm distance measure for p > 0 (p == 1: Manhattan distance, p == 2: Euclidean distance, ... , p -> inf: Chebyshev distance)
  • more efficient neighbourhood queries that trim buckets that cannot be within the search radius
  • black box fast multipole method (FMM)
  • can store the FMM as a H2 hierarchical matrix for repeated evaluations
  • RASM-based preconditioner that can be used with Eigen iterative solvers
  • OpenMP or CUDA parallelism (when using Thrust) for particle set updating, and neighbourhood searching (not yet for FMM-based methods). Note that this is not yet optimised, the performance of CUDA in particular will improve in subsequent versions)
  • can update single particles within a set, for example for Monte Carlo methods, using the Aboria::update_particles function

Breaking Changes

  • Aboria::double2, Aboria::float3, Aboria::bool4 etc. become Aboria::vdouble2, Aboria::vfloat3, Aboria::vbool4 because CUDA already use the former
  • Aboria::delete_particles no longer exists, instead, set particle's alive variable to false and call Aboria::update_particles