Implementation of the fast multipole method (FMM) for the evaluation of potentials and force fields in gravitation/electrostatics problems
C++
The Fast Multipole Method
C++ / Mathematica implementation of the The Fast Multipole Method (FMM) for the evaluation of potentials and force fields in gravitation and electrostatics problems, parallelized via OpenMP. Implementation details are documented in the file FMM_implementation.pdf contained in this repository. A more thorough presentation of the mathematical and algorithmtic aspects of the method, as well as an experimental evaluation of this implementation can be found at the Mathnotes repository
Sample (integrated via Mathematica's symplectic partitioned Runge Kutta integrator):
A plot of error distributions included for its aesthetic value
Overview of the content of various source files:
Tree Classes
file
description
abstract_orthtree.hpp
Abstract base class for quad/octrees
adaptive_orthtree.hpp
Abstract base class for adaptive quad/octrees
balanced_orthtree.hpp
Abstract base class for balanced quad/octrees
abstract_fmm_tree.hpp
Abstract base class for the FMM tree data structure
adaptive_fmm_tree.hpp
Implementation of the adaptive FMM
balanced_fmm_tree.hpp
Implementation of the balanced FMM
Local and Multipole Expansions
file
description
series_expansion.hpp
Abstract base class for series expansions
multipole_expansion.hpp
Implementation of the multipole expansion
local_expansion.hpp
Implementation of the local expansion
vector.hpp
Vector and pointsource classes used in the FMM
fields.hpp
Potential and force field functions, direct algorithm