|
4 | 4 | [](https://ci.appveyor.com/project/martinjrobins/aboria)
|
5 | 5 | -->
|
6 | 6 |
|
7 |
| -Aboria implements an expressive Domain Specific Language (DSL) in C++ for |
| 7 | +Aboria implements an Embedded Domain Specific Language (eDSL) in C++ for |
8 | 8 | specifying expressions over particles and their neighbours in N dimensional
|
9 |
| -space. The library is header-only and based on expression templates for |
10 |
| -efficient and natural expression of mathematical expressions applied over the |
11 |
| -particles. |
12 |
| - |
13 |
| -The particle data is contained in a STL compatible container. Each particle has |
14 |
| -a position and user-defined data-package (for other variables such as velocity, |
15 |
| -density etc) and is optionally embedded within a cuboidal spatial domain (for |
16 |
| -neighbourhood searches) that can be periodic or not. Users can implement |
17 |
| -standard C++ and STL algorithms directly on the particle data, or use the |
18 |
| -expression template API to naturally form operations over the particle set. |
19 |
| - |
20 |
| -The motivation behind Aboria is to provide a useful library for implementing |
21 |
| -particle-based numerical algorithms, for example Smoothed Particle Hydrodynamics |
22 |
| -or Molecular/Langevin Dynamics. |
| 9 | +space, with the aim of providing a useful library for implementing |
| 10 | +particle-based numerical algorithms, for example Molecular Dynamics, Smoothed |
| 11 | +Particle Hydrodynamics or Radial Basis Functions. |
23 | 12 |
|
| 13 | +Aboria provides: |
| 14 | + * a STL compatible container class to store a particle set containing |
| 15 | + a position and unique id for each particle, as well as any number of |
| 16 | + user-defined variables with arbitrary types. |
| 17 | + * the ability to embed each particle set within a hypercube N-dimensional |
| 18 | + domain with arbitrary periodicity |
| 19 | + * flexible neighbourhood queries that return iterators, and can use any |
| 20 | + L-norm distance measure (L1 = Manhattan distance, L2 = Euclidean distance, |
| 21 | + ... , Linf = Chebyshev distance) |
| 22 | + * an expression template API for forming non-linear operators over the |
| 23 | + particles. This can be used, for example, to implement interaction forces |
| 24 | + in Molecular Dynamics. |
| 25 | + * an API for forming linear kernel operators from C++ lambda functions, This |
| 26 | + can be used, for example, to implement Radial Basis Function kernels. |
| 27 | + These can be wrapped as  matrices in order to |
| 28 | + solve linear systems based on kernel operators. |
| 29 | + |
| 30 | + |
24 | 31 | Aboria is distributed under a BSD 3-Clause License, see LICENCE for more
|
25 |
| -details. |
26 |
| - |
27 |
| -For documentation see the [Aboria |
| 32 | +details. For documentation see the [Aboria |
28 | 33 | website](https://martinjrobins.github.io/Aboria). If you are interested in
|
29 | 34 | contributing to Aboria, having trouble getting it working or just have a
|
30 |
| -question, send me an email at < [email protected]>. |
| 35 | +question, send me an email at < [email protected]> or create a |
| 36 | +GitHub issue or pull request. |
31 | 37 |
|
0 commit comments