Skip to main content

PyAMG: Algebraic Multigrid Solvers in Python

Project description

CI PyPi codecov DOI


PyAMG requires numpy and scipy

pip install pyamg

or from source:

pip install .

(python install will no longer work)

or with conda (see details below)

conda config --add channels conda-forge
conda install pyamg


PyAMG is a library of Algebraic Multigrid (AMG) solvers with a convenient Python interface.

PyAMG is currently developed and maintained by Luke Olson, Jacob Schroder, and Ben Southworth. The organization of the project can be found in and examples of use can be found in pyamg-examples.

Acknowledgements: PyAMG was created by Nathan Bell, Luke Olson, and Jacob Schroder. Portions of the project were partially supported by the NSF under award DMS-0612448.


If you use PyAMG in your work, please consider using the following citation:

  author    = {Nathan Bell and Luke N. Olson and Jacob Schroder and Ben S. Southworth},
  title     = {{PyAMG}: Algebraic Multigrid Solvers in Python},
  journal   = {Journal of Open Source Software},
  year      = {2023},
  publisher = {The Open Journal},
  note      = {submitted},

  author    = {Nathan Bell and Luke N. Olson and Jacob Schroder},
  title     = {{PyAMG}: Algebraic Multigrid Solvers in Python},
  journal   = {Journal of Open Source Software},
  year      = {2022},
  publisher = {The Open Journal},
  volume    = {7},
  number    = {72},
  pages     = {4142},
  doi       = {10.21105/joss.04142},
  url       = {},

Getting Help

  • For documentation see

  • Create an issue.

  • Look at the Tutorial or the examples (for instance the 0_start_here example).

  • Run the unit tests (pip install pytest):

    • With PyAMG installed and from a non-source directory:
    import pyamg
    • From the PyAMG source directory and installed (e.g. with pip install -e .):
    pytest .

What is AMG?

AMG is a multilevel technique for solving large-scale linear systems with optimal or near-optimal efficiency. Unlike geometric multigrid, AMG requires little or no geometric information about the underlying problem and develops a sequence of coarser grids directly from the input matrix. This feature is especially important for problems discretized on unstructured meshes and irregular grids.

PyAMG Features

PyAMG features implementations of:

  • Ruge-Stuben (RS) or Classical AMG
  • AMG based on Smoothed Aggregation (SA)

and experimental support for:

  • Adaptive Smoothed Aggregation (αSA)
  • Compatible Relaxation (CR)

The predominant portion of PyAMG is written in Python with a smaller amount of supporting C++ code for performance critical operations.

Example Usage

PyAMG is easy to use! The following code constructs a two-dimensional Poisson problem and solves the resulting linear system with Classical AMG.

import pyamg
import numpy as np
A =,500), format='csr')  # 2D Poisson problem on 500x500 grid
ml = pyamg.ruge_stuben_solver(A)                    # construct the multigrid hierarchy
print(ml)                                           # print hierarchy information
b = np.random.rand(A.shape[0])                      # pick a random right hand side
x = ml.solve(b, tol=1e-10)                          # solve Ax=b to a tolerance of 1e-10
print("residual: ", np.linalg.norm(b-A*x))          # compute norm of residual vector

Program output:

Number of Levels:     9
Operator Complexity:  2.199
Grid Complexity:      1.667
Coarse Solver:        'pinv2'
  level   unknowns     nonzeros
    0       250000      1248000 [45.47%]
    1       125000      1121002 [40.84%]
    2        31252       280662 [10.23%]
    3         7825        70657 [ 2.57%]
    4         1937        17971 [ 0.65%]
    5          483         4725 [ 0.17%]
    6          124         1352 [ 0.05%]
    7           29          293 [ 0.01%]
    8            7           41 [ 0.00%]

residual:  1.24748994988e-08


More information can be found at conda-forge/pyamg-feedstock.

Linux: Circle CI

OSX: TravisCI

Windows: AppVeyor

Version: Anaconda-Server Badge

Downloads: Anaconda-Server Badge

Installing pyamg from the conda-forge channel can be achieved by adding conda-forge to your channels with:

conda config --add channels conda-forge

Once the conda-forge channel has been enabled, pyamg can be installed with:

conda install pyamg

It is possible to list all of the versions of pyamg available on your platform with:

conda search pyamg --channel conda-forge

Project details

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pyamg-5.0.1.tar.gz (4.1 MB view hashes)

Uploaded source

Built Distributions

pyamg-5.0.1-cp311-cp311-win_amd64.whl (1.6 MB view hashes)

Uploaded cp311

pyamg-5.0.1-cp311-cp311-win32.whl (1.4 MB view hashes)

Uploaded cp311

pyamg-5.0.1-cp310-cp310-win_amd64.whl (1.6 MB view hashes)

Uploaded cp310

pyamg-5.0.1-cp310-cp310-win32.whl (1.4 MB view hashes)

Uploaded cp310

pyamg-5.0.1-cp39-cp39-win_amd64.whl (1.5 MB view hashes)

Uploaded cp39

pyamg-5.0.1-cp39-cp39-win32.whl (1.4 MB view hashes)

Uploaded cp39

pyamg-5.0.1-cp38-cp38-win_amd64.whl (1.6 MB view hashes)

Uploaded cp38

pyamg-5.0.1-cp38-cp38-win32.whl (1.4 MB view hashes)

Uploaded cp38

pyamg-5.0.1-cp37-cp37m-win_amd64.whl (1.6 MB view hashes)

Uploaded cp37

pyamg-5.0.1-cp37-cp37m-win32.whl (1.4 MB view hashes)

Uploaded cp37

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page