Black Box Fast Multipole Method (BBFMM)
This crate is a parallel implementation of the Black Box Fast Multipole Method in Rust.
BBFMM is a kernel-independent, hierarchical algorithm for rapidly evaluating all pairwise interactions in a collection of particles.
While originally developed for radial basis function (RBF) interpolation problems,
ferreus_bbfmm has been generalised to support a broad range of FMM use cases where
the kernel is smooth (i.e. non-oscillatory).
Features
- 1D (binary tree), 2D (quadtree) and 3D (octree)
- Optimised low-rank M2L interactions that leverage symmetries and compression
- Adaptive tree structure
- Multiple right-hand sides
- Optional simultaneous evaluation of kernel values and gradients
- Regular target grids stored as axis metadata, with target-aware tree refinement
Install
pip install ferreus_bbfmm
Then in Python:
import ferreus_bbfmm
See the docs and examples/ directories in this package for more detailed
usage and API documentation.
A regular grid can be reused to guide tree refinement and evaluate values or gradients:
from ferreus_bbfmm import TargetGrid
grid = TargetGrid.from_spacing(
[-1.0, -1.0, -1.0, 1.0, 1.0, 1.0],
[0.1, 0.1, 0.1],
)
# When constructing FmmTree, pass target_grid=grid and sparse=False.
# After tree.set_weights(weights):
# values, gradients = tree.evaluate_grid_with_gradients(weights, grid)
See examples/grid_evaluator.py for a complete example.
Attribution and licensing
This package was developed while the author was working at Maptek and has been approved for open‑source distribution under the terms of the MIT license.
Unless otherwise stated, the following copyright applies:
Copyright (c) 2025 Maptek Pty Ltd.
All rights reserved.
This copyright applies to all files in this repository, whether or not an individual file contains an explicit notice.
The code is released under the MIT License – see the top‑level LICENSE file
for details.
References
- Fong, W., & Darve, E. (2009). The black-box fast multipole method. Journal of Computational Physics, 228(23), 8712–8725.
- Messner, M., Bramas, B., Coulaud, O., & Darve, E. (2012). Optimized M2L kernels for the Chebyshev interpolation-based fast multipole method.
- Pouransari, H., & Darve, E. (2015). Optimizing the adaptive fast multipole method for fractal sets. SIAM Journal on Scientific Computing, 37, A1040–A1066.
Metadata
Release files for ferreus-bbfmm 0.3.0
For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.
Built distributions (wheels)
| File | Actions Reset | |||
|---|---|---|---|---|
| ferreus_bbfmm-0.3.0-cp38-abi3-win_amd64.whl | CPython 3.8 | abi3 | Windows x86-64 | Details for ferreus_bbfmm-0.3.0-cp38-abi3-win_amd64.whl |
| ferreus_bbfmm-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl | CPython 3.8 | abi3 | Linux glibc 2.17+ x86-64 | Details for ferreus_bbfmm-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
| ferreus_bbfmm-0.3.0-cp38-abi3-macosx_11_0_arm64.whl | CPython 3.8 | abi3 | macOS 11.0+ ARM64 | Details for ferreus_bbfmm-0.3.0-cp38-abi3-macosx_11_0_arm64.whl |
| ferreus_bbfmm-0.3.0-cp38-abi3-macosx_10_12_x86_64.whl | CPython 3.8 | abi3 | macOS 10.12+ x86-64 | Details for ferreus_bbfmm-0.3.0-cp38-abi3-macosx_10_12_x86_64.whl |
Total release size: 8.1 MB
Release files / ferreus_bbfmm-0.3.0-cp38-abi3-win_amd64.whl
| Download URL | ferreus_bbfmm-0.3.0-cp38-abi3-win_amd64.whl |
|---|---|
| Size | 2.2 MB |
| Tags | CPython 3.8 Windows x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
c2ca84cd716e42f6771fc136fa563d102b12a26419cf1938e903a9921f396abd
|
|
BLAKE2b-256 checksum How to use checksums |
f4546b5faa9fde4228a85e1bb94be63d800fc7966bc9ab62f550cbd5478e3bc6
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / ferreus_bbfmm-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl
| Download URL | ferreus_bbfmm-0.3.0-cp38-abi3-manylinux_2_17_x86_64.manylinux2014_x86_64.whl |
|---|---|
| Size | 2.3 MB |
| Tags | CPython 3.8 Linux glibc 2.17+ x86-64 abi3 |
|
SHA-256 checksum How to use checksums |
800677170152f2a29b24991b2181926fc97b34ebf36f3e52d6441c3d297b8f00
|
|
BLAKE2b-256 checksum How to use checksums |
33ea4a042f0195a8e8909456b3b3a055d205500c57c75883d6315582014ec611
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / ferreus_bbfmm-0.3.0-cp38-abi3-macosx_11_0_arm64.whl
| Download URL | ferreus_bbfmm-0.3.0-cp38-abi3-macosx_11_0_arm64.whl |
|---|---|
| Size | 1.6 MB |
| Tags | CPython 3.8 abi3 macOS 11.0+ ARM64 |
|
SHA-256 checksum How to use checksums |
37ac10786d365655d93a655895718f7c4102076f9cfe4c56299acb8c0a66ebea
|
|
BLAKE2b-256 checksum How to use checksums |
6a69cf2c8761dff1d33fda183b2df0bcf679b6d634379264e0283682bd317c19
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logRelease files / ferreus_bbfmm-0.3.0-cp38-abi3-macosx_10_12_x86_64.whl
| Download URL | ferreus_bbfmm-0.3.0-cp38-abi3-macosx_10_12_x86_64.whl |
|---|---|
| Size | 2.1 MB |
| Tags | CPython 3.8 abi3 macOS 10.12+ x86-64 |
|
SHA-256 checksum How to use checksums |
c129b31307a22d6a4b564ff4739262d889e44525994c7f46236fc20ae65d93a8
|
|
BLAKE2b-256 checksum How to use checksums |
ac07fc6379e83279f2a8362a408593c6656adef3363d6dda1c7f63a80d89f38f
|
| Upload date | |
|
Uploaded using Trusted Publishing? What is trusted publishing? |
Yes |
| Uploaded via |
twine/7.0.0 CPython/3.13.14
|
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logSecurity for ferreus-bbfmm 0.3.0
Provenance
Provenance describes where a file came from. On PyPI, provenance is shared via attestations, which provide a verifiable record of the build or publishing details. View details, limitations and caveats.
Full provenance
All 4 files in this release have been uploaded with provenance metadata.
Attestation for ferreus_bbfmm-0.3.0-cp38-abi3-win_amd64.whl
PyPI Publish Attestation
PyPI verified that this artifact, at this checksum, originated from the publisher listed below.
Signed by GitHub Actions, verified by PyPI on Oct 19, 2026.
Transparency logA note on package security
PyPI is a repository for distributing packages, not a service for auditing them. While third-party security researchers and our staff do their best to detect and remove malicious packages, PyPI cannot guarantee the quality, security or suitability of any given package.
To learn more about protecting yourself from malicious actors, visit our package security documentation.