Aboria

Next

Aboria 0.7

Martin Robinson


Table of Contents

Abstract
Introduction
Installation and Getting Started
Getting prerequisites
Compiling a program using Aboria
Compiling with Eigen
Compiling with VTK
Compiling with H2Lib
Compiling with OpenMP
Compiling with CUDA
Putting it all together
Particle Container
Creating Particles
Multidimensional Data Types
Working with particles within the container
Internal Data for Variables
Particle's value_type versus reference
Important differences from STL containers
Conversion to VTK formats
Neighbourhood Searching
Cell Lists
Fast Cell-list Neighbour Search
Kd-Trees
Hyper Oct-Tree
Coordinate Transforms
Using the spatial data structures
ID Searching
Parallelism in Aboria
OpenMP
CUDA
Evaluating and Solving Kernel Operators with Eigen
Creating Dense Operators
Creating Sparse Operators
Creating Chebyshev Operators
Creating Fast Multipole Method Operators
Creating Hierarchical Matrix Operators
Block Operators
Iterative Solvers
Symbolic Expressions
Setup
Constant Expressions
Univariate Expressions
Bivariate Expressions
Examples - Container/Iterator API
Neighbourhood Search
Molecular Dynamics (Linear Spring) (MD)
1955 FPUT Experiment
Examples - Symbolic API
Molecular Dynamics (Linear Spring) (MD)
Brownian Dynamics (BD)
Discrete Element Model (DEM)
Smoothed Particle Hydrodynamics (SPH)
Examples - Kernel Operator API
Radial Basis Function (RBF) Interpolation
Kansa Method for PDEs
Benchmarks
Vector Addition
DAXPY
Dense non-linear operator
Neighbour search non-linear operator
API Overview
libaboria

Aboria implements an expressive Domain Specific Language (DSL) in C++ for specifying expressions over particles and their neighbours in multidimensional space. The library is header-only and based on expression templates for efficient and natural expression of mathematical expressions applied over the particles.

The particle data is contained in a C++ Standard Template Library (STL) compatible container. Each particle has a n-dimensional position and user-defined data-package (for other variables such as velocity, density etc) and is optionally embedded within a hypercube spatial domain (for neighbourhood searches) that can be periodic or not. Users can implement standard C++ and STL algorithms directly on the particle data, or use the expression template API to naturally form non-linear operators over the particle set.

The motivation behind Aboria is to provide a useful library for implementing particle-based numerical algorithms, for example Molecular Dynamics, Radial Basis Functions or Smoothed Particle Hydrodynamics.

Aboria is distributed under a BSD 3-Clause License, see LICENCE for more details. Aboria is supported by Maria Bruna's project "Sustainable software for reaction­diffusion processes of interacting particles", funded by the John Fell Fund (grant BLD10370) and the St John’s College Research Centre (grant 21138701).

Last revised: January 11, 2019 at 11:48:36 GMT


Next