Skip to content

Commit a4f153d

Browse files
committed
update readme, added changelog
1 parent 32ec9ef commit a4f153d

File tree

6 files changed

+60
-23
lines changed

6 files changed

+60
-23
lines changed

CHANGELOG

+33
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
#######################################
2+
# Aboria 0.5 #
3+
#######################################
4+
5+
Summary
6+
7+
This version has extensive changes to the backend iterators that are used to interact
8+
with the neighbourhood search data structures, to fit in the new tree-based structures.
9+
In particular, there is a new `child_iterator` that is used to iterate through children
10+
of a node in a tree, a depth-first search iterator, and a query iterator specificly
11+
for neighbour searches on a tree
12+
13+
There are also large changes with the backend neighbourhood search functionality. Now
14+
a distance search can:
15+
* be anisotropic, the distance measure is scaled independently in each dimension
16+
* use any L-norm for a distance measure, L1, L2, L3, ...., Linf
17+
* can handle periodic domains independently of the data structure
18+
* can handle any radius, independently of how the data structure was initialized
19+
(see below)
20+
21+
Finally, the syntax for the `Aboria::Particles::init_neighbour_search` does not require
22+
the user to enter in a cut-off radius, instead the user can enter in a number corresponding
23+
to the average (for cell lists) or maximum (for trees) number of particles in each cell/bucket.
24+
25+
New search data structures! Finally have a kd-tree (courtesy of nannoflann
26+
- https://github.com/jlblancoc/nanoflann), and an octtree. These are used for the new
27+
fast multipole method and hierarchical matrix kernel operators.
28+
29+
New kernel operators - Aboria now has implementations of the black-box fast multipole
30+
method, and the ability to store this as a H2 hierarchical matrix for repeated evaluations.
31+
Please see documentation for more details. btw. The previous functionality termed "matrix-free"
32+
operators has been renamed to "kernel operators" to factor in these changes.
33+

README.md

+25-19
Original file line numberDiff line numberDiff line change
@@ -4,28 +4,34 @@
44
[![AppVeyor](https://ci.appveyor.com/api/projects/status/6aimud6e8tvxfwgm?svg=true)](https://ci.appveyor.com/project/martinjrobins/aboria)
55
-->
66

7-
Aboria implements an expressive Domain Specific Language (DSL) in C++ for
7+
Aboria implements an Embedded Domain Specific Language (eDSL) in C++ for
88
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.
2312

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 ![Eigen](eigen.tuxfamily.org) matrices in order to
28+
solve linear systems based on kernel operators.
29+
30+
2431
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
2833
website](https://martinjrobins.github.io/Aboria). If you are interested in
2934
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.
3137

doc/CMakeLists.txt

+1
Original file line numberDiff line numberDiff line change
@@ -138,6 +138,7 @@ MathJax.Hub.Config({
138138
images/up.png
139139
images/down.png
140140
images/home.png
141+
images/note.png
141142
css/boostbook.css
142143
)
143144

doc/images/note.png

1.56 KB
Loading

tests/h2.h

-3
Original file line numberDiff line numberDiff line change
@@ -94,9 +94,6 @@ class H2Test: public CxxTest::TestSuite {
9494
TS_ASSERT_LESS_THAN(L2_h2/scale,1e-2);
9595
}
9696

97-
for (reference p: particles) {
98-
get<target_h2>(p) = 0;
99-
}
10097
t0 = Clock::now();
10198
auto h2_eigen = create_h2_operator<N>(particles,particles,
10299
kernel);

tests/operators.h

+1-1
Original file line numberDiff line numberDiff line change
@@ -482,7 +482,7 @@ row particles.
482482
}
483483

484484
/*
485-
* create new h2 operator with new row particles
485+
* create h2 operator with new row particles
486486
*/
487487
auto K_h2 = create_h2_operator(K_h.get_first_kernel(),particles2);
488488

0 commit comments

Comments
 (0)