# A fast multipole method for stellar dynamics

- Walter Dehnen
^{1}Email author

**1**:1

**DOI: **10.1186/s40668-014-0001-7

© Dehnen; licensee Springer 2014

**Received: **30 January 2014

**Accepted: **30 April 2014

**Published: **11 September 2014

## Abstract

The approximate computation of all gravitational forces between *N* interacting particles via the fast multipole method (FMM) can be made as accurate as direct summation, but requires less than $\mathcal{O}(N)$ operations. FMM groups particles into spatially bounded cells and uses cell-cell interactions to approximate the force at *any* position within the sink cell by a Taylor expansion obtained from the multipole expansion of the source cell. By employing a novel estimate for the errors incurred in this process, I minimise the computational effort required for a given accuracy and obtain a well-behaved distribution of force errors. For relative force errors of ∼10^{−7}, the computational costs exhibit an empirical scaling of $\propto {N}^{0.87}$. My implementation (running on a 16 core node) out-performs a GPU-based direct summation with comparable force errors for $N\gtrsim {10}^{5}$.

### Keywords

methods: numerical methods: N-body simulations## 1 Background

The computation of the mutual gravitational forces at every time step dominates the computational costs of all *N*-body simulations. When simulating collisionless stellar dynamics, the *N*-body model is merely a Monte-Carlo representation of a smooth phase-space distribution and the *N*-body force is only ever an *estimate* for the smooth force field of the continuous system modelled (see also Dehnen and Read [2011]). In particular, the *N*-body force unavoidably carries an *estimation error*. This motivates the use of *approximate* methods for computing the *N*-body force, such as the Barnes and Hut ([1986]) tree code, as long as the approximation errors are small compared to the estimation errors.

*N*-body simulations of collisional stellar dynamics are of a completely different nature. Here, the particles simulate individual stars and the

*N*-body force carries no estimation error. Consequently, the (negative) gravitational potential

and its derivative, the acceleration, must be calculated with high accuracy. This is typically achieved by *direct summation*, when equation (1) is translated into computer code and the only errors are owed to finite computational precision.

This computation incurs a cost of $\mathcal{O}(N)$ for a single particle and thus $\mathcal{O}({N}^{2})$ per unit time for running a full simulation. As a consequence, realistic simulations with $N\sim {10}^{6\text{-}7}$ for globular clusters and galactic centres are still very challenging and large parameter studies impossible. Measures employed to ameliorate this situation include the usage of powerful special-purpose hardware devices (Makino and Taiji [1998]) or graphical processing units (GPUs, Gaburov et al. [2009]), as well as separating the highly fluctuating forces due to close neighbours, in order to reduce the frequency of expensive far-field force computations (Ahmad and Cohen [1973]).

While these measures substantially reduce the effective costs, the complexity of ${N}^{2}$ remains. The alternative of using approximate methods also for collisional stellar dynamics is so far untested. The requirements for such a method differ from that in collisionless *N*-body methods in two important aspects: (i) there is no gravitational softening and (ii) to preserve the validity of the *N*-body model, the approximation errors must be much smaller than what is common in collisionless *N*-body simulations.

A straightforward approach is to use the tree code with a small opening angle and/or high expansion order, resulting in a scheme with $\mathcal{O}(NlnN)$ costs. A more efficient approach is to use the *fast multipole method* (FMM; Greengard and Rokhlin [1987]; Cheng et al. [1999]) which has costs of only $\mathcal{O}(N)$. An initial attempt by Capuzzo-Dolcetta and Miocchi ([1998]) to port this technique from its original realm of molecular dynamics to astrophysics failed to obtain better practical efficiency than the tree code. However, when adapting the FMM to the inhomogeneity of stellar systems and the low force accuracy required in collisionless dynamics (by using a hierarchical tree data structure and a flexible opening angle), it is substantially faster than the tree code (Dehnen [2000], [2002]).

The critical question here is whether FMM can be tuned to be more efficient than direct summation at force accuracies and particle numbers required by collisional *N*-body techniques. The goal of this study is to address this question by tuning FMM for the application to collisional *N*-body simulations, investigating the resulting dependence of computational costs and numerical accuracy on the various numerical parameters, and assessing its practical efficiency.

This paper is organised as follows. In Section 2 and Appendix A, the mathematical (and algorithmic) foundations of FMM are derived and laid down. Section 3 (and Appendix B) introduces and motivates my approach for quantifying the resulting acceleration errors; Section 4 provides useful estimates for the errors of individual FMM interactions; Section 5 deals with optimising the multipole-acceptance criterion; and in Section 6 the method is tuned to obtain a force accuracy target with minimal computational effort. Finally, in Section 7 possible extensions and applications are discussed, and Section 8 concludes.

## 2 FMM basics

The tree code approximates the sum (1) by first dividing source particles *a* into groups bounded by geometric cells, each of which is well-separated from the sink position ${\mathbf{x}}_{b}$, and then computing the forces of each source cell from their multipole moments. This corresponds to Taylor expanding the Greens function $\psi ({\mathbf{x}}_{b}-{\mathbf{x}}_{a})$ about the distance to an appropriate centre **z** of each source cell.

The essence of the fast multipole method is to Taylor expand the Greens function not only at the source positions ${\mathbf{x}}_{a}$, but also at the sink positions ${\mathbf{x}}_{b}$. This latter amounts to approximating (a contribution to) the gravitational field within each sink cell by its local Taylor expansion about some appropriate potential expansion centre **s**. Obviously, this approach is beneficial only if the forces for a large fraction of the sinks within a cell are to be computed simultaneously.

### 2.1 Mathematical background

The FMM relations are most easily derived using Cartesian coordinates. However, for Newtonian gravity, $\psi ={|\mathbf{r}|}^{-1}$, the resulting relations are inefficient. Instead, exploiting that this Greens function satisfies ${\mathbf{\nabla}}^{2}\psi =0$ for $\mathbf{r}\ne 0$ naturally leads to spherical harmonics. Cheng et al. ([1999]) have already given (without derivation) the corresponding FMM relations, but in a form ill-suited for computer code. In Appendix A, I derive equivalent but much more compact and computationally convenient relations. These are summarised here.

*r*,

*θ*,

*ϕ*, then

**r**and ${\mathbf{\nabla}}^{2}{\Theta}_{n}^{m}=0$ for all $\mathbf{r}\ne 0$. The ${\Upsilon}_{n}^{m}$ are homogeneous polynomials of total degree

*n*in

*x*,

*y*, and

*z*(they are defined in Appendix A.3 without reference to polar coordinates; see also Table 3). With these definitions, the FMM relations for the computation of the potential due to all particles within source cell

*A*and at any position ${\mathbf{x}}_{b}$ within sink cell

*B*are

Here, *p* is the expansion order and $\delta {\Psi}_{A\to B}$ the error of the approximated potential. This expansion converges with increasing *p* if ${max}_{a\in A}\{|{\mathbf{x}}_{b}-{\mathbf{x}}_{a}-\mathbf{r}|\}<|\mathbf{r}|$ with $\mathbf{r}\equiv {\mathbf{s}}_{B}-{\mathbf{z}}_{A}$.

*multipoles*${\mathcal{M}}_{n}^{m}$ with respect to another expansion centre

*field tensors*${\mathcal{F}}_{n}^{m}$ of the local expansion (3a) with respect to another expansion centre

**a**from the local expansion (3a) requires

Relations (3b), (3d), and (3e) are equivalent to the much more complicated equations (17), (13), and (21) of Cheng et al. ([1999]), given without derivation.^{1}

^{2}These operation counts can be reduced to $\mathcal{O}({p}^{3})$ by rotating

**r**into the

*z*direction (see Appendix A.6). Figure 1 plots the time required per interaction computation as function of expansion order

*p*, showing an effective ${p}^{2.3}$ scaling of the computational costs at $p\le 10$, shallower than the $\mathcal{O}({p}^{3})$ asymptote.

### 2.2 Algorithmic approach

#### 2.2.1 The tree code: walking the tree

**The FMM**
kernels

Name | Meaning | Equation |
---|---|---|

P2P | particle to particle | (1) |

P2M | particle to multipole | (3c) |

M2M | multipole to multipole | (3d) |

M2P | multipole to particle | (3g) |

M2L | multipole to local expansion | (3b) |

P2L | particle to local expansion | see table legend |

L2L | local expansion to local expansion | (3e) |

L2P | local expansion to particle | (3f) |

*tree walk*starting with the root cell. The force generated by a cell

*C*is computed via its multipole expansion, using the M2P kernel (equation (3g)), if a

*multipole*-

*acceptance criterion*is met, i.e. if the cell is considered to be

*well-separated*from the sink position. Otherwise, the cell is opened: the force is computed as the sum of the forces generated by the daughters cells (recursing if necessary). Thus, the tree code replaces direct summation’s P2P kernel with the P2M, M2M, and M2P kernels, see the left panel of Figure 2 for a schematic view.

#### 2.2.2 FMM: the dual tree walk

An adaptive FMM algorithm also uses a hierarchical tree data structure. As with the tree code, the cell multipoles ${\mathcal{M}}_{n}^{m}$ have to be precomputed for every cell in a first step.

Next, the forces for *all* sink positions and generated by *all* source particles are approximated using a single *dual tree walk* (Dehnen [2002]). This algorithm considers cell → cell interactions and starts with the root → root interaction. If the interacting cells are well separated, the interaction is approximated using the M2L kernel (equation (3b)), which computes and accumulates the local field tensors ${\mathcal{F}}_{n}^{m}({\mathbf{s}}_{B})$ for the expansion of gravity within the sink cell *B* and due to all sources within the source cell *A* (in a mutual version of the algorithm, the interactions $A\to B$ and $B\to A$ are considered simultaneously). Otherwise, the interaction is split, typically into those between the daughters of the larger of the two interacting cells with the smaller.

Finally, the local field tensors ${\mathcal{F}}_{n}^{m}(\mathbf{s})$ are passed down the tree using the L2L kernel, and the local expansions are evaluated at the sink positions using the L2P kernel. Thus, the FMM replaces the M2P kernel of the tree code with the M2L, L2L and L2P kernels, see also Figure 2.

Of course, in both tree code and FMM, direct summation (P2P kernel) is used whenever computationally preferable, i.e. for interactions involving only a few sources and sinks.

## 3 Quantifying the approximation accuracy

Before the method can optimised for accuracy, a sensible quantitative measure for this accuracy is needed as well as an acceptable value for this measure.

With direct-summation, the accuracy is limited only by the finite precision of computer arithmetic (round-off error). If double (64-bit) precision is not used throughout, it is customary to use the conservation of the total energy for quality control (e.g. Gaburov et al. [2009]). However, as shown in Appendix B, the relative energy error is much smaller than the typical relative force error, simply because it is an average over many force errors. Even worse, the computation of the total energy, required for measuring its error, typically incurs a larger error. Thus, any measured non-conservation of the total energy is dominated by measurement error rather than true non-conservation due to acceleration errors.

With the tree code and FMM, the situation is subtly different, as discussed in Appendix B.3. Here, the measured non-conservation of energy actually reflects the amplitude of the acceleration errors in an average sense. However, an average measure for the effect of approximation errors cannot reflect their effect on the correctness of the simulation. For example, a single large force error has hardly any effect on the energy conservation but may seriously affect the validity of the simulation. While this latter goal is difficult to quantify, it is certainly better to consider the whole distribution of acceleration errors and pay particular attention to large-error outliers, than merely monitor an average.

### 3.1 Scaling acceleration errors

Obviously, the absolute errors $\delta a=|{\mathbf{a}}_{\mathrm{computed}}-{\mathbf{a}}_{\mathrm{true}}|$ are not very useful by themselves and must be normalised to be meaningful. One option is to divide *δa* by some mean field strength $\overline{a}$. While this makes sense for the average particle, it fails for those in the outskirts of the stellar system, where the field strength diminishes well below its mean.

*a*can be small and hence the relative error large, even if each individual pair-wise force has been computed with high accuracy. One option for avoiding this problem is - in analogy to the error estimate of numerical quadrature in case of an integrand oscillating around zero - to normalise

*δa*with the sum

of the absolute values of all pair-wise accelerations. In general ${f}_{b}\ge {a}_{b}$, while in the outskirts of a stellar system $f\to a\approx GM/{r}^{2}$ such that the *scaled error*
$\delta a/f$ approaches the relative error $\delta a/a$ as desired. Conversely, in the centre $f\gg a$ (for a Plummer sphere, for example, $f\to 2GM/{r}_{s}^{2}$ as $r\to 0$ in the continuum limit) and $\delta a/f$ behaves sensibly if $a\to 0$.

### 3.2 The acceleration errors of direct summation

*N*-body simulations, the GPU-based direct-summation library sapporo (Gaburov et al. [2009]) was applied to two sets of, respectively, $N={10}^{5}$ and $N={10}^{6}$ equal-mass particles, drawn randomly from a (Plummer [1911]) sphere (without any outer truncation). Figure 3 shows the resulting distributions of acceleration errors as compared to direct summation in double (64-bit) precision. As expected, the typical relative (or scaled) error is ∼10

^{−7}, comparable to the relative round-off error of single-precision floating-point arithmetic. However, there is a clear tail of large relative errors (middle panel). This is due to particles at small radii, whose acceleration is small, because the pair-wise forces with other particles mostly cancel out, while the (round-off) errors accumulate.

There is a significant increase in the error amplitude with particle number *N*: the errors for $N={10}^{6}$ are on average $\sim \sqrt{10}$ larger than for $N={10}^{5}$. This worrying property suggests that the fidelity of simulations using sapporo diminishes with *N*, implying that using this library with $N\gtrsim {10}^{7}$ is not advisable.

From this exercise I conclude that in practice relative (or scaled) acceleration errors with an rms value of a few 10^{−7} and maximum ∼10 times larger are accepted in *N*-body simulations of collisional stellar dynamics.

## 4 Assessing the approximation errors

In order to optimise any implementation of FMM for high accuracy and low computational costs, a good understanding of and accurate estimates for the errors incurred by each individual FMM interaction are required. To this end, I now perform some numerical experiments.

*opening angle*

*C*

are (approximations for) the radii of the smallest spheres centred on **z** and **s** and containing all sources and sinks, respectively. In the experiments of this section ${\rho}_{\mathbf{z}}={\rho}_{\mathbf{s}}$ for each cell, because $\mathbf{z}=\mathbf{s}$ and because all particles are source and sink simultaneously, but in general ${\rho}_{\mathbf{z}}$ and ${\rho}_{\mathbf{s}}$ may differ.

^{3}Cell → cell interactions with ${N}_{A}{N}_{B}<{p}^{3}$, cell → particle interactions with ${N}_{C}<4{p}^{2}$, and particle → cell interactions with ${N}_{C}<{p}^{2}$ are ignored, because direct summation is faster than FMM and will be preferred in a practical application. For the remaining well-separated interactions, the accelerations of all particles within the sink cell and due to all particles within the source cell are calculated in 64-bit precision using both FMM and direct summation. I then evaluate for each sink particle the acceleration error

with ${\mathbf{a}}_{\mathrm{true}}$ obtained by direct summation.

### 4.1 Cell-cell interactions

*δa*normalised by the average acceleration ${M}_{A}/{r}^{2}$ against

*θ*, while the bottom panel plots the maximum relative force error $\delta a/a$. As expected, the errors decrease with smaller

*θ*and increasing

*p*, though there is substantial scatter at any given

*θ*and

*p*. At $\theta \sim 1$, the expansion order has little effect on the errors, implying that $\theta \ll 1$ is required for small errors.

#### 4.1.1 Comparing with simple error estimates

which is plotted as thin curves in the top panel of Figure 4. Obviously, this upper bound is satisfied, but typically it is 10-100 times larger than the actual largest error.

Moreover, equation (10) predicts diverging errors for $\theta \to 1$, while the actual errors behave much nicer. This is presumably because diverging errors only occur for rare sink positions combined with extreme source distributions (such as all particles concentrated near one point at the edge of the source sphere), which are not realised in these experiments.

to the actual errors.

#### 4.1.2 Better error estimates

The simple error estimates (11) are still quite inaccurate: the maximal error is often much smaller (see also the dashed histograms in the right panels of Figure 4). The offsets of ${\theta}^{p}$ from the actual errors increase with *p* (see left panels of Figure 4). This effect vanishes if the same limit for ${N}_{A}{N}_{B}$ is used for all *p*, suggesting that it is caused by smoother distributions for larger numbers ${N}_{A}$ of sources. Indeed, if I simply divide the estimates (11) by $\sqrt{{N}_{A}}$ the scatter of the residuals is much reduced, but a systematic trend with *p* remains.

In the right panels of Figure 4, these new error estimates are compared with the simple estimates (11) of the last subsection by displaying the distributions of the ratio of the actual maximum error to these estimates. The main difference between the two sets of estimators is their accuracy: there is much less scatter for the new (solid histograms) than for the old estimators (dashed). Consequently, there are hardly any interactions for which the force error is overestimated by more than a factor ten, while the simple estimators (11) overestimated the force error by more than that for many interactions, in particular at large *p*. Another remarkable property of the new error estimator is its consistency with respect to expansion order: there is no systematic drift with expansion order.

The number of underestimated force errors (abscissa >1 in the right panels of Figure 4) is small but there is a clear tail of underestimated absolute errors (top panel). As this is not present for the relative errors, it must be caused by the deviation of the acceleration from the mean ${M}_{A}/{r}^{2}$. Indeed, the maximum error is expected to occur on the side of the sink towards the source, where the acceleration is larger, about ${M}_{A}/{(r-{\rho}_{\mathbf{s},B})}^{2}$. When accounting for this by simply replacing *r* in (14) with $r-{\rho}_{\mathbf{s},B}$, the tail of underestimated force errors is diminished, but the overall distributions widens and a tail of overestimated errors appears.

### 4.2 Particle-cell interactions

Just occasionally, the dual tree walk algorithm encounters particle-cell interactions. Most of them will be computed using direct summation, leaving only the few with populous cells for the FMM approximation.

For particle → cell and cell → particle interactions the FMM approximation uses the P2L and M2P kernels, respectively. Because these kernels correspond to the M2L kernel in the limits of ${\rho}_{\mathbf{z},A}\to 0$ and ${\rho}_{\mathbf{s},B}\to 0$, respectively, all the algebra developed in the previous sub-section still applies.

#### 4.2.1 Cell → particle interactions

*θ*and

*p*, as also evident from the dashed histograms in the right panels. The cause for this is simply that in an oct-tree cell size is quantised. In fact, the improved error estimates (14) account for this effect resulting in narrow mono-modal distributions of error offsets.

#### 4.2.2 Particle → cell interactions

*θ*and

*p*, the errors are larger than for any other type of interactions and are in fact approaching the theoretical limit (solid curves in the top left panel). What is more, not much can be done about this in terms of error estimates: since the source is just a particle without inner structure, the improved estimates (14) are simply a rescaling by a factor 8 from the simple power laws (a simple shift between the dashed and solid histograms in the right panels). They are nonetheless equally accurate as for the cell → cell interactions and suffer from a similar level of force underestimation (for a few percent of interactions and by less than a factor two).

## 5 Optimising the multipole-acceptance criterion

With the improved error estimates in hand, the practical implementation of FMM for high accuracy can finally be considered. The main questions arising in this context are:

What to pick for the expansion centres **z** and **s**?

When to consider two cells well-separated?

What expansion order *p* to use?

The possible answers to these questions affect both the computational cost and the approximation accuracy. Hence, for a given accuracy target, there exists an optimal choice for all these parameters, in the sense of minimal CPU time (and memory) consumption. This section deals with the algorithmic aspects of this problem, i.e. the choice for **z** and **s** and the functional form of the multipole-acceptance criterion. The tuning of the parameters (of the multipole-acceptance criterion as well as the expansion order) with the aim of minimal computational effort for a given accuracy is the subject of the next section.

Astonishingly, this issue of optimal choice for **z** and **s** and the multipole-acceptance criterion has not been much investigated. Instead, implementations of multipole methods often employ either of two simple strategies. The tree code generally uses a fixed order *p* and an expansion centred on the cells’ centres of mass, while two cells are considered well-separated if the simple geometric multipole-acceptance criterion (5) is satisfied, such that ${\theta}_{\mathrm{crit}}$ controls the accuracy.

With traditional FMM, on the other hand, the expansion centres **z** and **s** are both taken to be the geometric cell centres and two cells are deemed well-separated as soon as the expansion converges, corresponding to ${\theta}_{\mathrm{crit}}=1$. When using hierarchical cubic grids (instead of an adaptive tree), this is implemented by interacting only between non-neighbouring cells on the same grid level whose parent cells are neighbours (e.g. Cheng et al. [1999]). The accuracy is then only controlled by the expansion order *p*.

### 5.1 Choice of expansion centres **z** and **s**

As far as I am aware, all existing FMM implementations use the same position for the multipole and potential expansion centres, i.e. $\mathbf{z}=\mathbf{s}$, for each cell. For traditional FMM, these are equal to the geometric cell centres. This has the benefit of a finite number of possible interaction directions $\stackrel{\u02c6}{\mathbf{r}}$, in particular when ${\theta}_{\mathrm{crit}}=1$, for which the coefficients ${\Theta}_{n}^{m}(\stackrel{\u02c6}{\mathbf{r}})$ could be pre-computed. However, the computation of these coefficients on the fly is often faster than a table look-up. Moreover, in view of Figure 4 ${\theta}_{\mathrm{crit}}=1$ appears ill-suited for high accuracy.

In fact, the restriction $\mathbf{z}=\mathbf{s}$ reduces the freedom and hence the potential for optimising the method. Nonetheless, when aiming for low accuracy, choosing $\mathbf{z}=\mathbf{s}={\mathbf{z}}_{\mathrm{com}}$, the cells’ centres of mass, has some advantages. First, the dipoles vanish and the low-order multipoles tend to be near-minimal. Second, *if* using a mutual version of the algorithm (when the interactions $A\to B$ and $B\to A$ are done simultaneously), the computational costs are reduced and the approximated forces satisfy Newton’s third law exactly, i.e. ${\mathbf{F}}_{ab}+{\mathbf{F}}_{ba}=0$ (Dehnen [2002]).

However, in practice there is no benefit from such an exact obedience of Newton’s law, as the total momentum is not exactly conserved, because of integration errors arising from the fact that the particles have individual time steps. Moreover, the degree of deviation from exact momentum conservation in such a case does not reflect the true accumulated force errors. In a more general method, the approximated forces will deviate from the ideal ${\mathbf{F}}_{ab}+{\mathbf{F}}_{ba}=0$ by an amount comparable to their actual force errors and the non-conservation of total momentum is somewhat indicative of the accumulated effect of the force errors (see also Appendix B.3).

#### 5.1.1 Choice of the potential expansion centre **s**

The results of Section 4, in particular the functional form of ${E}_{A\to B}$ in equation (13), suggest to choose the potential expansion centres **s** such that the resulting sink radii ${\rho}_{\mathbf{s}}$, and hence the estimated interaction errors, are minimal. Thus, $\mathbf{s}={\mathbf{z}}_{\mathrm{ses}}$, the centre of the *smallest enclosing sphere*. Finding the smallest enclosing sphere for a set of *n* points has complexity $\mathcal{O}(n)$. Doing this for every sink cell would incur a total cost of $\mathcal{O}(NlnN)$ and be prohibitively expensive.

Instead, I use an accurate approximation by finding for each cell the smallest sphere enclosing the spheres of its grand-daughter cells. This incurs a total cost of $\mathcal{O}(N)$ and is implemented via the Computational Geometry Algorithms Library (http://www.cgal.org, Fischer et al. [2013]), using an algorithm of Matoušek et al. ([1996]).

#### 5.1.2 Choice of the multipole expansion centre **z**

As already mentioned above, setting $\mathbf{z}={\mathbf{z}}_{\mathrm{com}}$ has some virtue for low expansion orders *p*. However, for high expansion orders, the high-order multipoles become ever more important, suggesting that $\mathbf{z}={\mathbf{z}}_{\mathrm{ses}}$ may be a better choice. In order to assess the relative merits of these methods, I repeated the experiments of Section 4 for both methods and compared the resulting maximum absolute and relative force errors incurred for the *same* cell → cell interactions (for which the two methods give different *θ*).

I found that the errors for the two methods are very similar with an rms deviation of ∼0.15 dex, but a very small mean deviation. At $p\lesssim 8$ there is a trend of more accurate forces for $\mathbf{z}={\mathbf{z}}_{\mathrm{com}}$, while at $p\gtrsim 8$ smaller errors are obtained with $\mathbf{z}={\mathbf{z}}_{\mathrm{ses}}$. This trend is simply a consequence of ${\mathcal{P}}_{k}$ being smaller for $\mathbf{z}={\mathbf{z}}_{\mathrm{com}}$ than for $\mathbf{z}={\mathbf{z}}_{\mathrm{ses}}$ at low *k* and larger at high *k*. This together with the improved error estimates (14) also explains that (for an interaction $A\to B$) $\mathbf{z}={\mathbf{z}}_{\mathrm{com}}$ tends to give more accurate forces if ${\rho}_{\mathbf{z},A}<{\rho}_{\mathbf{s},B}$, while $\mathbf{z}={\mathbf{z}}_{\mathrm{ses}}$ tends to be more accurate if ${\rho}_{\mathbf{z},A}>{\rho}_{\mathbf{s},B}$.

### 5.2 A simple FMM implementation

*p*. This is the standard choice for the tree code and as such implemented in many gravity solvers used in astrophysics. The computational costs of such an implementation roughly scale as ${p}^{\alpha}/{\theta}_{\mathrm{crit}}^{3}$ with $\alpha \sim 2.3$, because the number of interactions increases as ${\theta}_{\mathrm{crit}}^{-3}$ for large

*N*, while the cost for one is $\propto {p}^{2.3}$. Together with the simple error estimate (11), this means that

*if*one aims each FMM interaction to satisfy $\delta a/a<\u03f5$, then the minimum cost for fixed

*ϵ*occurs for

Thus, the optimal opening angle is independent of *p*. The accuracy is then controlled by the expansion order, requiring $p\gtrsim 16$ for $\u03f5<{10}^{-8}$ (according to Figure 4). The computational costs rise roughly like ${|ln\u03f5|}^{\alpha}$ with decreasing *ϵ*.

There are two main effects responsible for these properties of the error distributions. First, errors from a single FMM interaction follow a distribution with variance of 1-2 dex. The maximum errors reported in Section 4 only occur for particles near the edges and corners of the sink cell, while most have smaller errors. Moreover, the force errors due to FMM interactions of the same sink cell with source cells in opposing directions tend to partially cancel rather than add up. Both explain why the median errors reported in Figure 7 are much smaller than the maximum relative error incurred by a single cell → cell interaction, which according to Figure 4 is ∼10^{−4}.

More important is a second effect: the final force errors are not the sum of the relative errors of individual FMM interactions, which are controlled by the simple multipole-acceptance criterion, but of their *absolute* errors *δa*. Since, according to equation (11), $\delta a\sim {\theta}^{p}{M}_{A}/{r}^{2}\sim {\theta}^{p+2}{M}_{A}/4{\rho}_{\mathbf{z},A}^{2}$, the FMM interactions with cells of large surface density $M/{\rho}_{\mathbf{z}}^{2}$ dominate the error budget. In fact, the particles at very large radii have $\delta a/a\approx \delta a/f\sim {10}^{-4}$, exactly as expected from a few FMM interactions with near maximal errors.

### 5.3 Towards better multipole-acceptance criteria

This discussion suggests that multipole-acceptance criteria which balance the absolute force errors of individual FMM interactions are preferable. When working with the simple estimators (11) or the error bound (10), this leads to critical opening angles which depend on the properties of the interacting cells, such as their mass or surface density.

with the aim to obtain $\delta a/a\lesssim \u03f5$ and $\delta a/f\lesssim \u03f5$, respectively.

*ϵ*as targeted, a steep truncation towards large errors, and a maximum error $\sim 10\u03f5$. The tail of large $\delta a/a$ in the right panel is due to particles at small radii, for which $a\ll f$ such that criterion (16b) allows large $\delta a/a$.

The difference between these error distributions and those shown in Figure 7 and resulting from the simple geometric multipole-acceptance criterion (5) is remarkable. While the median errors are comparable, the criteria (16) do not produce extended tails of large errors of the quantity controlled ($\delta a/a$ in left and $\delta a/f$ in the right panels of Figure 8), and the maximum errors are more than 2 orders of magnitude smaller. What is more, the tails towards small errors have also been somewhat reduced, indicating that the improved criterion avoids overly accurate individual FMM interactions.

This improvement has been achieved without increasing the overall computational effort, but by carefully considering the error contribution from each approximated interaction.

### 5.4 Practical multipole-acceptance criteria

In a real application one has, of course, no a priori knowledge of ${a}_{b}$ or ${f}_{b}$ for any particle and must instead use something else in the multipole-acceptance criteria (16). In some situations, a suitable scale can be gleaned from the properties of the system modelled. For example, if simulating a star cluster of known mass profile $M(r)$ and centre ${\mathbf{x}}_{0}$, one may simply use ${a}_{b}\sim GM({r}_{b}){r}_{b}^{-2}$ with ${r}_{b}=|{\mathbf{x}}_{b}-{\mathbf{x}}_{0}|$. I now consider other options.

#### 5.4.1 Using accelerations from the previous time step

Employing the accelerations ${\mathbf{a}}_{b}$ from the previous time step in equation (16a) requires no extra computations. However, it means that the gravity solver is not self-contained, but requires some starter to get the initial accelerations.

Also, using information from the previous time step subtly introduces an artificial arrow of time into the simulation, because $\delta {a}_{\mathrm{new}}<\u03f5{a}_{\mathrm{old}}$ implies $\delta {a}_{\mathrm{new}}/{a}_{\mathrm{new}}<\u03f5{a}_{\mathrm{old}}/{a}_{\mathrm{new}}$. Hence, a particle moving in a direction of increasing acceleration has, on average, smaller $\delta a/a$ than when moving in the opposite direction, or in reversed time. However, the time integration methods currently employed almost exclusively in *N*-body simulations of collisional stellar dynamics are irreversible and introduce their own arrow of time. This suggests, that the additional breach of time symmetry by the magnitude (not the direction) of the force error may not be a serious problem in practice.^{4}

#### 5.4.2 Estimating ${a}_{b}$ or ${f}_{b}$ using low-order FMM

As Section 4 has shown, the error estimate ${\tilde{E}}_{A\to B}$ used in the multipole-acceptance criteria (16) still has significant uncertainty, and using highly accurate values for ${a}_{b}$ or ${f}_{b}$ in equation (16) is unnecessary. Instead, rough estimates should suffice. Such estimates can be obtained via a low-order FMM. This amounts to running the FMM twice: once with a simple multipole-acceptance criterion to obtain rough estimates for ${a}_{b}$ or ${f}_{b}$, and then again using the sophisticated criteria (16) employing the results of the first run.

The acceleration scale *f* (defined in equation (4)) is similar to the gravitational potential (1), except that its Greens function is ${|\mathbf{r}|}^{-2}$. This implies that it too can be estimated using FMM, albeit not using an explicitly harmonic formulation.

I implemented both options, estimating **a** or *f* via FMM, using the lowest possible order ($p=0$ for *f* and $p=1$ for gravity - recall that $\mathbf{a}=\mathbf{\nabla}\Psi $ is approximated at one order lower than the potential *Ψ*) and multipole-acceptance criterion $\theta <1$. To this end, I use $\mathbf{s}=\mathbf{z}={\mathbf{z}}_{\mathrm{com}}$ and a mutual version of the dual tree walk. The resulting estimates for *f* or $a=|\mathbf{a}|$ have rms relative errors of ∼15%. The additional computational effort is still much smaller than that of the high-accuracy approximation of gravity itself, though estimating *f* is faster because it is a scalar rather than a vector and because no square-root needs to be calculated.

The distributions of acceleration errors resulting from using these estimates in equation (16) are shown in red in Figure 8. They are only very slightly worse than those in black, which have been obtained using the exact values of ${a}_{b}$ and ${f}_{b}$ in equation (16).

## 6 Optimising adaptive FMM

The previous section provided answers to the first two questions asked at its beginning, but not to the one after the optimal expansion order *p*. To answer this question I now report on some experiments, which also provide the actual computational costs for a given required force accuracy.

All experiments are run on a single compute node with 16 Intel Xeon E5-2670 CPUs, which support the AVX instruction set (see below), and using code generated by the gcc compiler (version 4.8.2).

### 6.1 Implementation details

The FMM relations of Section 2 and Appendix A (using the rotation-accelerated M2L kernel of Appendix A.6 when faster) have been implemented in computer code. The code employs a one-sided version of the dual tree walk, which considers the interactions $A\to B$ and $B\to A$ independently. The code is written in the C++ C++ programming language and has been tested using various compilers and hardware. The implementation employs vectorisation and shared-memory parallelism as outlined below.

#### 6.1.1 Vectorisation

Most current CPUs support vector sizes of 16 (SSE), 32 (AVX), or 64 (MIC) bytes, allowing $K=2,4,\text{or}8$ identical simultaneous double-precision floating-point operations (or twice as many in single precision). Because the FMM kernels do not (usually) relate adjacent elements, their efficient vectorisation is not straightforward (and well beyond compiler optimisation). I explicitly implement a method computing *K* M2L kernels simultaneously. To this end, the multipole moments of the *K* source cells are loaded into a properly aligned buffer (similar to transposing a matrix) before, and afterwards the *K* field tensors are added from their vector-buffer to the sink cells’ field tensors. Unfortunately, this loading and storing (which cannot be vectorised) reduces the speed-up obtained by the simultaneous kernel computations.

Conversely, direct summation is perfectly suitable for vectorisation and a speed-up of a factor *K* is achievable. The code prefers direct summation whenever this is deemed to be faster, based on a threshold for the number of particle-particle interactions ‘caught’ in a given cell-cell interaction.

#### 6.1.2 Multi-threading

All parts of the implementation use multi-threading and benefit from multi-core architectures. This is done via hierarchical task-based parallelism implemented via *threading building blocks* (tbb, Reinders [2007]), an open source task parallel library with a work-stealing scheduler. The algorithms for multi-threaded tree building and dual tree walk are quite similar to those described by Taura et al. ([2012]) and I refrain from giving details here.

#### 6.1.3 Precision and expansion order

This study reports only on one particular implementation aimed at high accuracy. It uses double precision (64 bits) floating-point arithmetic throughout, $\mathbf{z}={\mathbf{z}}_{\mathrm{ses}}$, and expansion orders $p\le 20$.

### 6.2 Wall-clock time versus accuracy

*p*and the accuracy parameter

*ϵ*and for each run plot in Figure 9 the total wall-clock time against the rms and the 99.99 percentile acceleration errors.

The rms error is always ten times smaller than the 99.99 percentile,^{5}
implying the absence of extended large-error tails. For any fixed expansion order *p*, the relation between time and error can be approximated by a constant plus a power law that becomes flatter for larger *p*. At any given error, there is an optimal expansion order *p* in the sense of providing the fastest approximation. When using this optimal expansion order, the fastest FMM computation for a given error scales very nearly like a power law with exponent $\sim -0.18$. Thus when reducing the error by a factor ten, the computational costs rise only by a factor ∼1.5.

Constraining the relative error (top panel of Figure 9) is slightly more costly than constraining the scaled error (bottom panel). This is largely because $f>a$ as discussed in the caption to Figure 8, but also because estimating *f* is easier and faster than estimating **a**. Of course, the estimation of **a** can be easily avoided in practice by using the accelerations from the previous time step.

### 6.3 Accuracy versus parameter *ϵ*

*ϵ*. As can be seen from Figure 10, the rms value for the respective error ($\delta a/a$ if using criterion (16a) and $\delta a/f$ if using criterion (16b)) is typically slightly less than

*ϵ*for the optimal expansion order

*p*. At intermediate values ($\u03f5\sim {10}^{-8}$) the error is actually a factor ∼2 smaller. The 99.99 percentile of the errors is typically a factor ten larger.

### 6.4 Complexity: scaling with the number *N* of particles

**z**,

**s**, and ${\mathcal{M}}_{n}^{m}$ for each cell; passing down ${\mathcal{F}}_{n}^{m}$ and evaluating gravity for each sink position) contribute much less (see Table 2). When using a simple geometric multipole-acceptance criterion, such as equation (5), the FMM is well known to have complexity $\mathcal{O}(N)$ (e.g. Cheng et al. [1999]). This is because distant interactions contribute less than $\mathcal{O}(N)$, so that the overall costs are dominated by the local interactions only (Dehnen [2002]).

**Timings and errors for FMM runs for different**
N

N | ${\mathit{t}}_{\mathbf{tree}}$ | ${\mathit{t}}_{\mathbf{ffmm}}$ | ${\mathit{t}}_{\mathbf{up}}$ | ${\mathit{t}}_{\mathbf{walk}}$ | ${\mathit{t}}_{\mathbf{down}}$ | ${\mathbf{\{}\mathit{\delta}\mathit{a}\mathbf{/}\mathit{f}\mathbf{\}}}_{\mathbf{rms}}$ | ${\mathbf{\{}\mathit{\delta}\mathit{a}\mathbf{/}\mathit{f}\mathbf{\}}}_{\mathbf{99.99}\mathbf{\%}}$ |
---|---|---|---|---|---|---|---|

10 | 0.0004 | 0.0011 | 0.0012 | 0.0317 | 0.0005 | 2.81 × 10 | 1.32 × 10 |

10 | 0.0019 | 0.0042 | 0.0097 | 0.2131 | 0.0044 | 3.61 × 10 | 2.51 × 10 |

10 | 0.0290 | 0.0245 | 0.0957 | 1.5366 | 0.0431 | 3.85 × 10 | 3.32 × 10 |

10 | 0.2559 | 0.1897 | 0.8870 | 11.358 | 0.3999 | 4.05 × 10 | 2.20 × 10 |

*N*-body simulations), as reported in Section 3.2.

From Table 2, it can be seen that the costs for tree building grow faster than linearly with *N* ($NlnN$ is expected), those for the upward and downward passes roughly linearly with *N* (as expected), but those for the FMM estimation of *f* and the dual tree walk less than linearly. As a result, the total computational costs are very well fit by the power law ${N}^{0.87}$ for $N>{10}^{4}$, see Figure 11.

Figure 11 also shows the timings for a (double-precision) direct-summation on the same hardware (yielding much more accurate accelerations) and for a mixed-precision direct-summation on a GPU using the sapporo library (yielding comparably accurate accelerations). At large (but realistic) *N* FMM out-performs direct summation, even if accelerated using a GPU.

### 6.5 Scaling with the number of CPUs

## 7 Beyond simple gravity approximation

So far, I have considered the approximate computation of the unsoftened gravitational potential and acceleration at all particle positions with equal relative (or scaled) accuracy. However, the fast multipole method can be easily modified or extended beyond that.

For example, one may want to have individual accuracy parameters ${\u03f5}_{b}$ instead of a global one. This is easily accommodated by replacing $\u03f5{min}_{b\in B}\{{a}_{b}\}$ in criterion (16a) with ${min}_{b\in B}\{{\u03f5}_{b}{a}_{b}\}$ and analogously for criterion (16b).

When using individual ${\u03f5}_{b}$, but also in general, it may be beneficial to adapt the expansion order *p* to the accuracy actually required for a given cell → cell interaction. This could be implemented by using the lowest $p\le {p}_{max}$ for which the multipole-acceptance criterion is satisfied.

### 7.1 Force computation for a subset of particles

Most *N*-body codes employ adaptive individual time steps for each particle. The standard technique is Makino’s ([1991]) block-step scheme, where the forces of all *active* particles are computed synchronously. Active are those particles with time step smaller than some threshold (which varies from one force computation to the next).

When using FMM in such a situation, only interactions with sink cells contain at least one active particle must be considered. If the fraction of active particles in such cells is small (but non-zero), FMM becomes much less efficient per force computation. Fortunately, however, active particles are typically spatially correlated (because the time steps of adjacent particles are similar), such that the fraction of active particles is either zero or large.

**s**and ${\rho}_{\mathbf{s}}$ are computed as part of the upward pass, but only for cells with active particles).

The costs for the interaction and downward pass, on the other hand, decrease roughly like ${N}_{\mathrm{a}}^{0.87}$ for ${N}_{\mathrm{a}}\gtrsim {10}^{4}$. The net effect is that for ${N}_{\mathrm{a}}/N\lesssim 0.01$, the costs are almost completely dominated by the preparation phase, and hence independent of ${N}_{\mathrm{a}}$. The precise point of this transition depends on *N* and the FMM parameters. For smaller *N* and/or more accurate forces, the relative contribution of the tree walk phase increases and the transition occurs at smaller ${N}_{\mathrm{a}}$.

There is certainly some room for improvement by, e.g. using a smaller expansion order *p* than is optimal for ${N}_{\mathrm{a}}=N$ and/or re-cycling the tree structure from the previous time step. Both measures reduce the costs of the preparation phase and increase that of the interaction phase (at given *ϵ*), but shall reduce the overall costs if ${N}_{\mathrm{a}}\ll N$.

### 7.2 Softened gravity or far-field force

*h*and

*softening kernel*$\phi (q)\to {q}^{-1}$ as $q\to \mathrm{\infty}$. This corresponds to replacing each source point by a smooth mass distribution with density ${\mu}_{b}\varrho (\mathbf{x}-{\mathbf{x}}_{b})$, where

This Greens function (17) is no longer harmonic and harmonic FMM cannot be used. One obvious option is to use the more general Cartesian FMM of Appendix A.1 (Dehnen [2002]). The computational costs of this approach grow faster with expansion order *p*, such that small approximation errors (requiring high *p*) become significantly more expensive. However, small approximation errors are hardly required in situations where gravitational softening is employed. Alternatively, if softening is restricted to a finite region, i.e. if $\varrho (\mathbf{r})=0$ for $|\mathbf{r}|\ge h$, harmonic FMM can still be used to compute gravity from all sources at distances $|\mathbf{r}|\ge h$, while direct summation could be used for *neighbours*, sources at $|\mathbf{r}|<h$. This approach is sensible only if the number of neighbours is sufficiently bounded (so that the cost incurred by the direction summation remains small). This is the case, in particular, if the number of neighbours is kept (nearly) constant by adapting the individual softening lengths ${h}_{i}$ in order to adapt the numerical resolution (Price and Monaghan [2007]).

In practice, this requires to carry with each cell the radius ${h}_{\mathbf{z}}>{\rho}_{\mathbf{z}}$ of the smallest sphere centred on **z** which contains all softening spheres of its sources, and allow a FMM interaction $A\to B$ only if $|{\mathbf{z}}_{A}-{\mathbf{s}}_{B}|>{h}_{\mathbf{z},A}+{\rho}_{\mathbf{s},B}$.

The same technique can be used to restrict the FMM approximation to the far field for each particle, i.e. the force generated by all sources outside of a sphere of known radius ${h}_{b}$ around ${\mathbf{x}}_{b}$.

### 7.3 Jerk, snap, crackle, and pop

and the jerk follows from $\mathbf{j}=-(\mathrm{\Re}\{{\dot{\Psi}}_{1}^{1}\},\mathrm{\Im}\{{\dot{\Psi}}_{1}^{1}\},{\dot{\Psi}}_{1}^{0})$. Since $\dot{\mathbf{z}}=\dot{\mathbf{s}}=0$, the M2M and L2L kernels (equations (3d) and (3e)) work also for the time derivatives ${\dot{\mathcal{M}}}_{n}^{m}$ and ${\dot{\mathcal{F}}}_{n}^{m}$ of the multipoles and field tensors, respectively. The relations for the next order, the snap $\mathbf{s}=\ddot{\mathbf{a}}$, can be derived by differentiating yet again.

With each additional order (jerk, snap, crackle, pop, …), the computational cost of the combined M2L kernels is not more than the corresponding multiple of the ordinary M2L kernel (i.e. acceleration plus jerk are twice as costly as just acceleration). This is a direct consequence of not allowing cell-centre velocities hence preventing the terms depending on **z** or **s** in equation (3) to carry any time dependence. In contrast, the computational costs of the P2M and L2P kernels grows quadratically with the order of time derivative. This is not really a problem, since those kernels are only needed once per particle, while the M2L kernel is typically used ≳100 times more often.

### 7.4 The tidal field

*N*-body modelling, when

## 8 Discussion and conclusions

The fast multipole method (FMM) approximates the computation of the mutual forces between *N* particles. I have derived the relevant mathematical background, giving much simpler formulæthan the existing literature, for the case of unsoftened gravity, when the harmony of the Greens function allows significant reduction of the computational complexity.

Like the tree code, my FMM implementation uses a hierarchical tree of spatial cells. Unlike the tree code, FMM uses cell → cell interactions, which account for all interactions between sources in the first cell and sinks in the second. Almost all distant particle → particle interactions are ‘caught’ by fewer than $\mathcal{O}(N)$ cell → cell interactions, such that local interactions, requiring $\mathcal{O}(N)$ computations, dominate the overall workload (Dehnen [2002]). With the tree code, the situation is reversed: the distant interactions require $\mathcal{O}(NlnN)$ computations and dominate the overall work. This implies that FMM has the best complexity of all known force solvers. What is more, the predominance of local as opposed to distant interactions makes FMM ideally suited for applications on super-computers, where communications (required by distant interactions) are increasingly more costly than computations. However, FMM is inherently difficult to parallelise and this study considered only a multi-threaded implementation with a task-parallel dual tree walk (the core of FMM).

Most previous implementations of FMM considered simple choices for the cell’s multipole- and force-expansion centres and the multipole-acceptance criterion which decides whether a given cell → cell interaction shall be processed via the multipole expansion or be split into daughter interactions. Traditionally, a simple opening-angle based multipole-acceptance criterion has been used and cell centres equal to either the cell’s geometric centre or its centre of mass. These choices, which presumably were based on computational convenience and intuition, inevitably result in a wide distribution of individual relative force errors with extended tails reaching ∼1000 times the median.

The main goal of this study was avoid such extended tails of large force errors and to minimise the computational effort at a given force accuracy. The key for achieving this goal is a reasonably accurate estimate, based on the multipole power of the source cell and the size of the sink cell, for the actual force error incurred by individual cell → cell interactions. Based on the insight from this estimate, I set the cell’s force-expansion centres to (an approximation of) the centre of the smallest sphere enclosing all its particles, when the cell size and hence the error estimates are minimal. I also use the new estimates in the multipole-acceptance criterion, such that each cell → cell interaction is considered on the merit of the error it likely incurs. This results in very well behaved distributions of the relative force errors, provided an initial estimate for the forces is at hand. This can either be taken from the previous time step or obtained via low-accuracy FMM.

After these improvements, the method has only two free parameters: the expansion order *p* and a parameter *ϵ* for the relative force error. Experiments showed that the actual rms relative force error is typically somewhat less than *ϵ*, while for any given *ϵ* there is an optimum *p* at which the computational cost are minimal. For $\u03f5={10}^{-6.25}$, for example, $p=10$ is optimal and the accelerations errors are comparable to those of direct summation on a GPU (the current state-of-the-art method for collisional *N*-body simulations). With these parameter settings, the computational costs scale like ${N}^{0.87}$ for large *N* and the method out-performs any direct-summation implementation for $N\gtrsim {10}^{5}$. When computing only the forces for ${N}_{\mathrm{a}}<N$ of *N* particles, the costs are roughly proportional to ${N}_{\mathrm{a}}^{0.87}$ for ${N}_{\mathrm{a}}/N\gtrsim 0.01$, but become independent of ${N}_{\mathrm{a}}$ below that (where the costs for tree building dominate). For large *N*, this is still significantly faster than direct summation.

An implementation of the FMM on a GPU accelerator should yield a further significant speed-up compared to my CPU-based implementation, though this is certainly a challenging task, given that FMM is algorithmically more complex than direct summation or a tree code (both of which have been successfully ported to the GPU). Presumably a somewhat lesser challenge is a massively parallel implementation of the method, which can be run on a super computer.

A practical application of FMM in an actual collisional *N*-body simulation would be very interesting. Since the force between close neighbours is always computed directly (in double precision) as explained earlier, close encounters can be treated essentially in the same fashion as with existing techniques. However, an unfortunate hindrance to an application of the presented techniques originates from the long marriage of existing collisional *N*-body techniques with direct summation. Methods, such as the Ahmad-Cohen neighbour scheme, to reduce the need for the costly far-field force summations are not necessary with FMM, and the existing *N*-body tools are not well suited for an immediate application of FMM.

## Appendix 1: Derivation of the FMM relations

Here, the FMM relations given in Section 2 are derived and motivated. Differently from the main text, the multipole and force expansion centres, **z** and **s**, are not explicitly distinguished and instead **z** is used for either. The general case $\mathbf{z}\ne \mathbf{s}$ is a trivial generalisation.

### A.1 Cartesian FMM

*A*and

*B*, respectively, can be decomposed into three components (see also Figure 14)

*and*${\mathbf{r}}_{b}$ up to order

*p*then reads using multi-index notation

^{7}

*A*and for any sink position ${\mathbf{x}}_{b}$ in cell

*B*, one obtains after re-arranging

*multipoles*${\mathsf{M}}_{\mathbf{m}}(\mathbf{z})$ are computed for each cell via (28c) and by utilising those of daughter cells via the shifting formula

*field tensors*${\mathsf{F}}_{\mathbf{n}}(\mathbf{z})$ of all its interactions are computed via (28b) and added up. Finally, the field tensors are passed down the tree, utilising the shifting formula

At each order $n=|\mathbf{n}|$, there are $\left(\genfrac{}{}{0ex}{}{n+2}{2}\right)$ coefficients ${\mathsf{F}}_{\mathbf{n}}$ (as well as ${\mathsf{M}}_{\mathbf{n}}$ and ${\mathsf{D}}_{\mathbf{n}}$), and the total number of coefficients up to order *p* is $\left(\genfrac{}{}{0ex}{}{p+3}{3}\right)$. The computational effort of the resulting algorithm is dominated by their computation in (28b), which requires about $\left(\genfrac{}{}{0ex}{}{p+6}{6}\right)$ multiplications. Thus at large *p* a straightforward application of this method approaches an operation count of $\mathcal{O}({p}^{6})$. The computation (28b) of the field tensors is essentially a convolution in index space and hence can be accelerated using a fast Fourier technique with costs $\mathcal{O}({p}^{3}lnp)$ (but see endnote b).

### A.2 Harmonic tensors

*harmonic*, i.e. ${\mathbf{\nabla}}^{2}\psi =0$ for $|\mathbf{r}|>0$. As a consequence, the ${\mathsf{D}}_{\mathbf{n}}={\mathbf{\nabla}}^{\mathbf{n}}\psi $ are harmonic too and satisfy

*traceless*. At given degree $n=k+2$, equation (29) gives $\left(\genfrac{}{}{0ex}{}{n}{2}\right)$ constraints such that of the $\left(\genfrac{}{}{0ex}{}{n+2}{2}\right)$ terms only $2n+1$ are truly independent. In inner products, a traceless tensor only ‘sees’ the traceless part of its co-operand:

(see equation (42) for a definition of ${Y}_{n}^{m}$). While at each order *n* there are only $2n+1$ truly independent terms, the expansion (32) still carries all $\left(\genfrac{}{}{0ex}{}{n+2}{2}\right)$ terms, amounting to a total of $\left(\genfrac{}{}{0ex}{}{p+3}{3}\right)$ terms in an expansion up to order *p*. The equivalent spherical harmonic expansion (33) only carries $2n+1$ terms per order^{8}
amounting to a total of ${(p+1)}^{2}$, i.e. at large *p* is much preferable.

(Applequist [1989]; Hinsen and Felderhof [1992]). However, the resulting algebraic challenges are considerable, though the overall computational effort could well be reduced to $\mathcal{O}({p}^{3})$ operations (Joachim Stadel, private communication), but I am not aware of a systematic demonstration.

### A.3 Spherical harmonics

The algebraic complications with obtaining an efficient Cartesian FMM stem from the fact that the Laplace operator involves three terms, such that the resulting recovery relation (34) has two terms instead of one on the right-hand side. This problem can be avoided by Taylor expanding in other than Cartesian coordinates where the Laplace operator involves only two instead of three terms.

*x*and

*y*with

*z*. Then ${\partial}_{\xi}={\partial}_{x}-i{\partial}_{y}$ and ${\partial}_{\eta}=-{\partial}_{x}-i{\partial}_{y}$, such that ${\partial}_{x}^{2}+{\partial}_{y}^{2}=-{\partial}_{\xi}{\partial}_{\eta}$ and hence for harmonic functions

or ${\mathsf{D}}_{\mathbf{k}+(0,0,2)}={\mathsf{D}}_{\mathbf{k}+(1,1,0)}$ in place of equation (34). With this relation one can eliminate all mixed *ξ*-*η* derivatives in favour of *z* derivatives. This in turn allows a reduction in the number of indices from three to two by using the total number *n* of derivatives and the number $|m|$ of *ξ* (for $m<0$) or *η* derivatives (for $m>0$).

*solid spherical harmonic*of degree

*n*as

*n*in

*x*,

*y*and

*z*. These harmonics are related to the usual normalised

*surface spherical harmonic*

*x*,

*y*,

*z*.

**The real-valued functions**
$\mathbf{(}\mathit{n}\mathbf{-}\mathit{m}\mathbf{)}\mathbf{!}\mathbf{(}\mathit{n}\mathbf{+}\mathit{m}\mathbf{)}\mathbf{!}{\mathit{U}}_{\mathit{n}}^{\mathit{m}}\mathbf{(}\mathbf{r}\mathbf{)}\mathbf{=}{\mathit{r}}^{\mathbf{2}\mathit{n}\mathbf{+}\mathbf{1}}{\mathit{T}}_{\mathit{n}}^{\mathit{m}}\mathbf{(}\mathbf{r}\mathbf{)}$
**for**
$\mathit{n}\mathbf{\le}\mathbf{6}$

m ∖ n | 0 | 1 | 2 | 3 | 4 | 5 | 6 |
---|---|---|---|---|---|---|---|

6 | $10395({x}^{6}-15{x}^{4}{y}^{2}+15{x}^{2}{y}^{4}-{y}^{6})$ | ||||||

5 | $945x({x}^{4}-10{x}^{2}{y}^{2}+5{y}^{4})$ | $10395xz({x}^{4}-10{x}^{2}{y}^{2}+5{y}^{4})$ | |||||

4 | $105({x}^{4}-6{x}^{2}{y}^{2}+{y}^{4})$ | $945z({x}^{4}-6{x}^{2}{y}^{2}+{y}^{4})$ | $945({x}^{4}-6{x}^{2}{y}^{2}+{y}^{4})(11{z}^{2}-{r}^{2})$ | ||||

3 | $15x({x}^{2}-3{y}^{2})$ | $105xz({x}^{2}-3{y}^{2})$ | $105x({x}^{2}-3{y}^{2})(9{z}^{2}-{r}^{2})$ | $945zx({x}^{2}-3{y}^{2})(11{z}^{2}-3{r}^{2})$ | |||

2 | $3({x}^{2}-{y}^{2})$ | $15z({x}^{2}-{y}^{2})$ | $15({x}^{2}-{y}^{2})(7{z}^{2}-{r}^{2})$ | $315z({x}^{2}-{y}^{2})(3{z}^{2}-{r}^{2})$ | $315({x}^{2}-{y}^{2})(33{z}^{4}-18{z}^{2}{r}^{2}+{r}^{4})$ | ||

1 |
| 3 | $3x(5{z}^{2}-{r}^{2})$ | $15xz(7{z}^{2}-3{r}^{2})$ | $45x(21{z}^{4}-14{z}^{2}{r}^{2}+{r}^{4})$ | $315xz(33{z}^{4}-30{z}^{2}{r}^{2}+5{r}^{4})$ | |

0 | 1 |
| $3{z}^{2}-{r}^{2}$ | $3z(5{z}^{2}-3{r}^{2})$ | $3(35{z}^{4}-30{z}^{2}{r}^{2}+3{r}^{4})$ | $15z(63{z}^{4}-70{z}^{2}{r}^{2}+15{r}^{4})$ | $45(231{z}^{6}-315{z}^{4}{r}^{2}+105{z}^{2}{r}^{4}-5{r}^{6})$ |

−1 |
| 3 | $3y(5{z}^{2}-{r}^{2})$ | $15yz(7{z}^{2}-3{r}^{2})$ | $45y(21{z}^{4}-14{z}^{2}{r}^{2}+{r}^{4})$ | $315yz(33{z}^{4}-30{z}^{2}{r}^{2}+5{r}^{4})$ | |

−2 | 6 | 30 | $30xy(7{z}^{2}-{r}^{2})$ | $630xyz(3{z}^{2}-{r}^{2})$ | $630xy(33{z}^{4}-18{z}^{2}{r}^{2}+{r}^{4})$ | ||

−3 | $15y(3{x}^{2}-{y}^{2})$ | $105yz(3{x}^{2}-{y}^{2})$ | $105y(3{x}^{2}-{y}^{2})(9{z}^{2}-{r}^{2})$ | $945zy(3{x}^{2}-{y}^{2})(11{z}^{2}-3{r}^{2})$ | |||

−4 | $420xy({x}^{2}-{y}^{2})$ | $3780xyz({x}^{2}-{y}^{2})$ | $3780xy({x}^{2}-{y}^{2})(11{z}^{2}-{r}^{2})$ | ||||

−5 | $945y(5{x}^{4}-10{x}^{2}{y}^{2}+{y}^{4})$ | $10395yz(5{x}^{4}-10{x}^{2}{y}^{2}+{y}^{4})$ | |||||

−6 | $20790xy(3{x}^{2}-{y}^{2})({x}^{2}-3{y}^{2})$ |

### A.4 Spherical-harmonic FMM

As the Cartesian FMM relations (28) were based on equation (26), the spherical harmonic FMM relations (3) are based on equation (47), which for $\psi ={|\mathbf{r}|}^{-1}$ is completely equivalent but computationally more efficient.

### A.5 Implementation details

#### A.5.1 Recursive evaluation of spherical harmonics

as well as their counterparts for $m=-n$, allow for an efficient and stable evaluation of ${\Theta}_{n}^{m}(\mathbf{r})$ and ${\Upsilon}_{n}^{m}(\mathbf{r})$.

#### A.5.2 Real-valued spherical harmonics

The relevant relations for these real-valued spherical harmonics are best directly transcribed from the corresponding complex relations.

### A.6 Accelerating FMM relations

The FMM kernels M2L, M2M, and L2L (equations (3b), (3d), (3e)) all require $\mathcal{O}({p}^{4})$ operations. However, if the interactions or translations are along the *z*-axis, the costs are only $\mathcal{O}({p}^{3})$ because ${\Upsilon}_{n}^{m}(\stackrel{\u02c6}{\mathbf{z}})={\delta}_{m0}/n!$.

One method to exploit this is to first translate along the *z*-axis and then perpendicular to the *z*-axis. For a vector ${\mathbf{r}}_{\perp}$ perpendicular to the *z*-axis, ${\Upsilon}_{n}^{m}({\mathbf{r}}_{\perp})$ vanishes whenever $n+m$ is even. This implies that a translation along ${\mathbf{r}}_{\perp}$ can be done faster than a general translation (in the limit of $p\to \mathrm{\infty}$, twice as fast).

This splitting method cannot be applied to the M2L kernel (3b) (because it is not a translation), which occurs many more times in the FMM algorithm than the M2M and L2L kernels. To accelerate the M2L kernel, one can exploit that a rotation only costs $\mathcal{O}({p}^{3})$ operations, too. Thus, if one first rotates into a frame in which the interaction is along the *z*-axis, applies the M2L kernel in the rotated frame, and finally rotates back into the original frame, the total costs are still $\mathcal{O}({p}^{3})$.

#### A.6.1 Fast rotations

*n*, and consequently the operation count is $\mathcal{O}({p}^{3})$. Thus, a general rotation is of the form

**r**in the rotated frame. Unfortunately, the matrices ${\mathsf{\Gamma}}_{n}$, also known as Wigner functions, are generally dense and non-trivial functions of the Euler angles. However, a rotation by angle

*α*around the

*z*-axis is simple:

*z*-axis, then swapping

*z*and

*x*, rotating again about the

*z*-axis (the

*x*-axis of the original frame), swapping

*z*and

*x*again, and performing a final rotation around the

*z*-axis. Like rotations, swapping coordinate axes does not mix between different orders

*n*and can be represented as

**r**in the frame obtained by swapping two Cartesian coordinates. The important difference between equations (59) and (61) is that the matrices ${\mathsf{B}}_{n}$ are

*constants*. Recursive relations for these swap matrices can be derived via the operator algebra of Section A.3. For example, for swapping

*x*and

*z*, one finds

*y*and

*z*reveals that the swap matrices are given by ${i}^{m-l}{\mathsf{B}}_{n}^{ml}$, while the corresponding swap matrices for ${\Upsilon}_{n}^{m}$ are given by the transpose (because these matrices are orthonormal and the product (46) is invariant under coordinate swapping). Whereas the matrices ${\mathsf{B}}_{n}$ are dense, the corresponding matrices for the real-valued harmonics (equations (58)) are not (Pinchon and Hoggan [2007]). For example, the matrices for swapping

*x*and

*z*for ${\Theta}_{4}^{m}$ and ${T}_{4}^{m}$ are (omitting zero entries)

respectively. Thus, this method of achieving a general rotation not only avoids the (recursive) computation of the Wigner functions ${\mathsf{\Gamma}}_{n}$ (which itself costs $\mathcal{O}({p}^{3})$ operations), but also benefits from the facts that the swap matrices ${\mathsf{B}}_{n}$ have ≈4 times fewer non-zero entries than the ${\mathsf{\Gamma}}_{n}$ and are known a priori, such that they can be ‘hard-wired’ into computer code.

#### A.6.2 A fast M2L kernel

*z*-axis) by angle ${\alpha}_{z}=arctan(y/x)$, swaps

*x*and

*z*, rotates by ${\alpha}_{x}=arctan\sqrt{{x}^{2}+{y}^{2}}/z$, and swaps

*x*and

*z*back. The obtained ${\tilde{\mathcal{M}}}_{k}^{l}$ has

*z*-axis aligned with the interaction direction, and the M2L kernel can be performed via

Finally, one must rotate ${\tilde{\mathcal{F}}}_{n}^{m}$ back to the original frame by first swapping *x* and *z*, rotating by $-{\alpha}_{x}$, swapping *x* and *z* again, followed by a final rotation by $-{\alpha}_{z}$.

These rotations and swaps can be accelerated further by exploiting that in (66) only multipoles ${\tilde{\mathcal{M}}}_{n}^{m}$ with $|m|\le min\{n,p-n\}$ are needed and, similarly, that ${\tilde{\mathcal{F}}}_{n}^{m}=0$ for $|m|>min\{n,p-n\}$. As Figure 1 demonstrates, the overhead due to the rotations pays off already for $p=5$.

## Appendix 2: The energy error of a simulation

The gravitational forces (and potentials) used in *N*-body simulations always carry some error. When using direct summation, this is solely due to round-off errors, while for approximate methods the approximation error should dominate round-off. Here, I investigate the consequences of these errors for the non-conservation of the total energy.

### B.1 The energy error due to force errors

*τ*,

*σ*, and typical acceleration $\overline{a}$. If further assuming virial equilibrium and a relative acceleration error

*ε*,

Thus, the relative energy error resulting from the force errors alone is much smaller than *ε*, simply because it is some average over many force errors.

### B.2 The measurement error

*ε*, the resulting error for the total energy is

If the same precision *ε* is used for computing the particle potentials and accelerations, this is much larger than the energy error (69) due to force errors.

### B.3 Approximate gravity solvers

The situation is different for approximative methods, such as the tree code, FMM, and mesh-based techniques. All of these approximate the true potential, but use the exact derivatives of the approximated potential for the accelerations. Therefore, the total *approximated* energy should be conserved (modulo round-off errors), even if the approximation is poor.

For the FMM and the tree code the situation is actually different, because the approximated potential is not globally continuous but only piece-wise. This is because the concrete form of the approximation used for a given particle depends on its position (which determines how FMM approximates each pair-wise force). A particle crossing a boundary between such continuous regions suffers a jump in the (approximated) potential, and hence energy, while the corresponding kick in velocity (to conserve energy) is ignored. These discontinuities are part of the approximation error and their amplitudes proportional. The implication is that for the tree code and FMM energy is not conserved (even for accurate time integration) and the degree of non-conservation actually reflects the amplitude of the approximation errors in an average sense.

Cheng et al.’s ([1999]) expressions are quite cumbersome because they are given in terms of the surface spherical harmonics ${Y}_{n}^{m}$ in polar coordinates and because they contain phase-factors like ${i}^{|m|-m}$ owing to their unconventional definition for the ${Y}_{n}^{m}$ which implies ${Y}_{n}^{-m}={Y}_{n}^{m\ast}$ instead of ${Y}_{n}^{-m}={(-1)}^{m}{Y}_{n}^{m\ast}$.

Expressions like $\mathcal{O}({p}^{n})$ for the operation count relate to the asymptotic behaviour at large expansion orders *p*. While this is straightforward to specify, it is not necessarily very relevant, since in the range up to $p\sim 10$, as required in practice, the actual costs usually grow more slowly than implied by the asymptotic behaviour (see Figure 1 for a typical example) and because the numerical implementation may be data-dominated rather than computation dominated.

The original definition used in the tree code of Barnes and Hut ([1986]) did not ensure bounded errors, causing the infamous ‘exploding galaxies’ bug first reported by Salmon and Warren ([1994]).

The situation is different for *N*-body simulations of collisionless stellar dynamics, where reversible integrators are used and the accepted force errors, and thus their time asymmetries, are significantly larger.

The increase of this ratio to ≈20 towards small errors may well be caused by inaccuracies of the direct summation used for calculating the errors.

The timings for the sapporo library also include additional computations (nearest neighbour finding and neighbour listing). These contribute negligibly at large *N*, but at small *N* they are, together with latency on the GPU, responsible for the deviation of the observed complexity from ${N}^{2}$.

Using *multi*-*index* notation $\mathbf{n}\equiv ({\mathrm{n}}_{x},{\mathrm{n}}_{y},{\mathrm{n}}_{z})$ with $n\equiv |\mathbf{n}|\equiv {\mathrm{n}}_{x}+{\mathrm{n}}_{y}+{\mathrm{n}}_{z}$, such that the first sum in (26) is over non-negative integer triples **n** with ${\mathrm{n}}_{x}+{\mathrm{n}}_{y}+{\mathrm{n}}_{z}\le p$. Furthermore $\mathbf{n}!\equiv {\mathrm{n}}_{x}!{\mathrm{n}}_{y}!{\mathrm{n}}_{z}!$ and ${\mathbf{r}}^{\mathbf{n}}\equiv {r}_{x}^{{\mathrm{n}}_{x}}{r}_{y}^{{\mathrm{n}}_{y}}{r}_{z}^{{\mathrm{n}}_{z}}$.

## Declarations

### Acknowledgements

The author thanks Joachim Stadel for many helpful discussions and the suggestion to allow $\mathbf{z}\ne \mathbf{s}$, Alessia Gualandris for running sapporo to provide the data for Figure 3, and Simon Portegies Zwart and Jeroen Bédorf for providing the timings for sapporo 2 in Figure 11. This work was supported by STFC consolidated grant ST/K001000/1.

## Authors’ Affiliations

## References

- Ahmad A, Cohen L:
**A numerical integration scheme for the**N**-body gravitational problem.***J. Comput. Phys.*1973,**12:**389–402. 10.1016/0021-9991(73)90160-5ADSView ArticleGoogle Scholar - Applequist J:
**Traceless Cartesian tensor forms for spherical harmonic functions: new theorems and applications to electrostatics of dielectric media.***J. Phys. A, Math. Gen.*1989,**22:**4303–4330. 10.1088/0305-4470/22/20/011MathSciNetADSView ArticleGoogle Scholar - Barnes J, Hut P:
**A hierarchical O(N log N) force-calculation algorithm.***Nature*1986,**324:**446–449. 10.1038/324446a0ADSView ArticleGoogle Scholar - Capuzzo-Dolcetta R, Miocchi P:
**A comparison between the fast multipole algorithm and the tree-code to evaluate gravitational forces in 3-D.***J. Comput. Phys.*1998,**143:**29–48. 10.1006/jcph.1998.5949MathSciNetADSView ArticleGoogle Scholar - Cheng H, Greengard L, Rokhlin V:
**A fast adaptive multipole algorithm in three dimensions.***J. Comput. Phys.*1999,**155:**468–498. 10.1006/jcph.1999.6355MathSciNetADSView ArticleGoogle Scholar - Dehnen W:
**A very fast and momentum-conserving tree code.***Astrophys. J.*2000,**536:**L39-L42. 10.1086/312724ADSView ArticleGoogle Scholar - Dehnen W:
**Towards optimal softening in three-dimensional**N**-body codes - I. Minimizing the force error.***Mon. Not. R. Astron. Soc.*2001,**324:**273–291. 10.1046/j.1365-8711.2001.04237.xADSView ArticleGoogle Scholar - Dehnen W:
**A hierarchical O(N log N) force calculation algorithm.***J. Comput. Phys.*2002,**179:**27–42. 10.1006/jcph.2002.7026MathSciNetADSView ArticleGoogle Scholar - Dehnen W, Read JI: N
**-Body simulations of gravitational dynamics.***Eur. Phys. J. Plus*2011.,**126:**Article ID 55 10.1140/epjp/i2011-11055-3Google Scholar - Fischer, K, Gärtner, B, Herrmann, T, Hoffmann, M, Schönherr, S: Bounding volumes. In: CGAL User and Reference Manual, 4.2 edn., CGAL Editorial Board (2013). http://www.cgal.org/Manual/4.2, Fischer, K, Gärtner, B, Herrmann, T, Hoffmann, M, Schönherr, S: Bounding volumes. In: CGAL User and Reference Manual, 4.2 edn., CGAL Editorial Board (2013). http://www.cgal.org/Manual/4.2
- Gaburov E, Harfst S, Portegies Zwart S:
**SAPPORO: a way to turn your graphics cards into a GRAPE-6.***New Astron.*2009,**14**(7):630–637. 10.1016/j.newast.2009.03.002ADSView ArticleGoogle Scholar - Gradshteyn IS, Ryzhik I:
*Table of Integrals, Series, and Products*. 5th edition. Academic Press, London; 1994.Google Scholar - Greengard L, Rokhlin V:
**A fast algorithm for particle simulations.***J. Comput. Phys.*1987,**73:**325–348. 10.1016/0021-9991(87)90140-9MathSciNetADSView ArticleGoogle Scholar - Hinsen K, Felderhof BU:
**Reduced description of electric multipole potential in Cartesian coordinates.***J. Math. Phys.*1992,**33:**3731–3735. 10.1063/1.529869MathSciNetADSView ArticleGoogle Scholar - Hobson EW:
*The Theory of Spherical and Ellipsoidal Harmonics*. Cambridge University Press, Cambridge; 1931.Google Scholar - James RW:
**Transformation of spherical harmonics under change of reference frame.***Geophys. J. Int.*1969,**17:**305–316. 10.1111/j.1365-246X.1969.tb00239.xADSView ArticleGoogle Scholar - Makino J:
**Optimal order and time-step criterion for Aarseth-type**N**-body integrators.***Astrophys. J.*1991,**369:**200–212. 10.1086/169751MathSciNetADSView ArticleGoogle Scholar - Makino J, Taiji M:
*Scientific Simulations with Special-Purpose Computers: The GRAPE Systems*. Wiley, New York; 1998.Google Scholar - Matoušek J, Sharir M, Welzl E:
**A subexponential bound for linear programming.***Algorithmica*1996,**16:**498–516. 10.1007/BF01940877MathSciNetView ArticleGoogle Scholar - Maxwell JC:
*Treatise on Electricity and Magnetism*. Oxford University Press, Oxford; 1892.Google Scholar - Pinchon D, Hoggan PE:
**Rotation matrices for real spherical harmonics: general rotations of atomic orbitals in space-fixed axes.***J. Phys. A, Math. Theor.*2007,**40:**1597–1610. 10.1088/1751-8113/40/7/011MathSciNetADSView ArticleGoogle Scholar - Plummer HC:
**On the problem of distribution in globular star clusters.***Mon. Not. R. Astron. Soc.*1911,**71:**460–470. 10.1093/mnras/71.5.460ADSView ArticleGoogle Scholar - Price DJ, Monaghan JJ:
**An energy-conserving formalism for adaptive gravitational force softening in smoothed particle hydrodynamics and**N**-body codes.***Mon. Not. R. Astron. Soc.*2007,**374:**1347–1358. 10.1111/j.1365-2966.2006.11241.xADSView ArticleGoogle Scholar - Reinders J:
*Intel Threading Building Blocks*. O’Reilly Media, Sebastopol; 2007.Google Scholar - Salmon JK, Warren MS:
**Skeletons from the treecode closet.***J. Comput. Phys.*1994,**111:**136–155. 10.1006/jcph.1994.1050ADSView ArticleGoogle Scholar - Taura K, Nakashima J, Yokota R, Maruyama N:
**A task parallel implementation of fast multipole methods.***Proceedings of the 2012 SC Companion: High Performance Computing, Networking Storage and Analysis*2012, 617–625. 10.1109/SC.Companion.2012.86View ArticleGoogle Scholar

## Copyright

This article is published under license to BioMed Central Ltd. **Open Access** This is an Open Access article distributed under the terms of the Creative Commons Attribution License http://(http://creativecommons.org/licenses/by/2.0), which permits unrestricted use, distribution, and reproduction in any medium, provided the original work is properly credited.