This library contains methods which can be used to solve linear systems in parallel with PETSc, with interfaces in C/Fortran/Python.
It aims to provide fast & scalable iterative methods for asymmetric linear systems, in parallel and on both CPUs and GPUs.
Some examples of asymmetric linear systems that PFLARE can scalably solve include:
- Advection equations
- Streaming operators from Boltzmann applications
- Space-time discretisations
- Heavily anisotropic Poisson/diffusion equations
without requiring Gauss-Seidel methods. This includes time dependent or independent equations, with structured or unstructured grids, with lower triangular structure or without.
PFLARE adds new methods to PETSc, including:
- Polynomial approximate inverses, e.g., GMRES and Neumann polynomials
- Reduction multigrids, e.g., AIRG, nAIR and lAIR
- CF splittings, e.g., PMISR DDC
- Methods to extract diagonally dominant submatrices
You can get started with PFLARE in one of four ways:
- PFLARE is now available directly through the PETSc configure with:
--download-pflare, see docs/installation.md - To run the Jupyter notebooks in
notebooks/in your browser without requiring a local install, click the Binder badge above - To download a Docker image with PFLARE installed, run
docker run -it stevendargaville/pflare && make check - To build from source, see docs/installation.md
For details about PFLARE, please see:
| Path | Contents |
|---|---|
| docs/new_methods.md | Details on the new methods added by PFLARE |
| docs/installation.md | How to install PFLARE |
| docs/use_pflare.md | How to use PFLARE |
| docs/gpus.md | Using GPUs with PFLARE |
| docs/reuse.md | Re-using components of PFLARE |
| docs/options.md | List of the options available in PFLARE |
| docs/faq.md | Frequently asked questions and help! |
and the Jupyter notebooks:
| Path | Contents |
|---|---|
| notebooks/01_getting_started.ipynb | Introduce PFLARE |
| notebooks/02_pcpflareinv.ipynb | Examine some of the approximate inverses found in PCPFLAREINV |
| notebooks/03_cf_splitting.ipynb | Visualise the C/F splitting and explore the PMISR-DDC algorithm |
| notebooks/04_pcair.ipynb | Introduce PCAIR and the AIRG method |
| notebooks/05_parallel.ipynb | Discuss PCAIR, parallelism and GPUs |
| notebooks/06_reuse.ipynb | Discuss PCAIR and reuse |
For more ways to use the library please see the Fortran/C examples and the Makefile in tests/, along with the Python examples in python/.
Please see the references below for more details. If you use PFLARE in your work, please consider citing [1-3].
- S. Dargaville, R. P. Smedley-Stevenson, P. N. Smith, C. C. Pain, AIR multigrid with GMRES polynomials (AIRG) and additive preconditioners for Boltzmann transport, Journal of Computational Physics 518 (2024) 113342
- S. Dargaville, R. P. Smedley-Stevenson, P. N. Smith, C. C. Pain, Coarsening and parallelism with reduction multigrids for hyperbolic Boltzmann transport, The International Journal of High Performance Computing Applications 39(3) (2025) 364-384
- S. Dargaville, R. P. Smedley-Stevenson, P. N. Smith, C. C. Pain, Solving advection equations with reduction multigrids on GPUs (2025) http://arxiv.org/abs/2508.17517
- T. A. Manteuffel, S. Münzenmaier, J. Ruge, B. Southworth, Nonsymmetric Reduction-Based Algebraic Multigrid, SIAM Journal on Scientific Computing 41 (2019) S242–S268
- T. A. Manteuffel, J. Ruge, B. S. Southworth, Nonsymmetric algebraic multigrid based on local approximate ideal restriction (lAIR), SIAM Journal on Scientific Computing 40 (2018) A4105–A4130
- A. Ali, J. J. Brannick, K. Kahl, O. A. Krzysik, J. B. Schroder, B. S. Southworth, Constrained local approximate ideal restriction for advection-diffusion problems, SIAM Journal on Scientific Computing (2024) S96–S122
- T. Zaman, N. Nytko, A. Taghibakhshi, S. MacLachlan, L. Olson, M. West, Generalizing reduction-based algebraic multigrid, Numerical Linear Algebra with Applications 31(3) (2024) e2543
- Loe, J.A., Morgan, R.B, Toward efficient polynomial preconditioning for GMRES. Numerical Linear Algebra with Applications 29 (2022) e2427
