Aboria Versions Save

Enables computations over a set of particles in N-dimensional space

v0.5

6 years ago

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

v0.4

7 years ago

This release:

  • provides a number of improvements to radial search performance
  • changes the matrix-free Eigen operators significantly. These now take generic C++ function objects, rather than symbolic expressions.
  • adds a matrix-free operator using Chebyshev interpolation to speed up its operation on a vector (at a cost to accuracy).
  • adds a few more bug fixes and documentation. Its goal is to accompany the paper "Particle-based and meshless methods with Aboria", submitted to the SoftwareX journal

v0.3

7 years ago

This release:

  • creates a base neighbour search class that different neighbour search classes can derive from
  • re-adds the serial bucket search algorithm and sets it as the default.
  • reworks some of the backend to support Thrust CUDA as a vector class (This is still not fully working)

v0.2

7 years ago

This release:

  • allows particle containers of any dimension (greater than 0)
  • reworks the internal storage of the container class to model a set of zipped vectors. Currently uses std::vectors, but other vector types will be added in the future (e.g. CUDA Thrust vectors) using a Traits pattern.
  • adds meta-functions for determining if expressions are constant, univariate or bivariate
  • adds more compile-time checking of expression correctness
  • updates the bucket-search neighbourhood searching algorithm to use Thrust algorithms only (via the STL library), in preparation for addition of CUDA vectors
  • adds matrix-free linear algebra capabilities. Expressions can be wrapped with a matrix replacement class that implements Eigen's http://eigen.tuxfamily.org sparse matrix concept. This can be used in matrix-vector products and linear algebra solvers.
  • adds examples for Radial Basis Function interpolation and solving pde's via Kansa Method

Known issues:

  • compile times are slower, due to the use of Boost MPL and Fusion libraries. Boost v1.61 has seen the introduction of Boost Hana, a C++11 metaprogramming library meant to replace Fusion, which promotes significantly reduced compile-time. It is envisioned that this will eventually replace MPL and Fusion in Aboria.
  • The neighbourhood searching is no longer optimised for serial use, so might be slower for small number of particles in serial.

v0.1

7 years ago

Thank you for your interest in Aboria, a C++ expression template library for particle-based numerical software. It provides a container for dynamic particle sets, as well as a symbolic expression API for defining operations over each particle set.

WARNING: the API is currently still being worked out and may change in the future.