Package: pyamg
InstallationPyAMG requiresnumpyandscipypip install pyamgor from source:pip install .(python setup.py installwill no longer work)or with conda (see details below)conda config --add channels conda-forge
conda install pyamgIntroductionPyAMG is a library ofAlgebraic Multigrid (AMG)solvers with a convenient Python interface.PyAMG is currently developed and maintained byLuke Olson,Jacob Schroder, andBen Southworth.
The organization of the project can be found inorganization.mdand
examples of use can be found inpyamg-examples.Acknowledgements:PyAMG was created byNathan Bell,Luke Olson, andJacob Schroder.
Portions of the project were partially supported by the NSF under award DMS-0612448.CitingIf you use PyAMG in your work, please consider using the following citation:@article{BeOlScSo2023,
  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},
}

@article{BeOlSc2022,
  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       = {https://doi.org/10.21105/joss.04142},
}Getting HelpFor documentation seehttp://pyamg.readthedocs.io/en/latest/.Create anissue.Look at theTutorialor theexamples(for instance  the0_start_hereexample).Run the unit tests (pip install pytest):With PyAMG installed and from a non-source directory:importpyamgpyamg.test()From the PyAMG source directory and installed (e.g. withpip 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 FeaturesPyAMG features implementations of:Ruge-Stuben (RS)orClassical AMGAMG based onSmoothed 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 UsagePyAMG is easy to use!  The following code constructs a two-dimensional Poisson problem and solves the resulting linear system with Classical AMG.importpyamgimportnumpyasnpA=pyamg.gallery.poisson((500,500),format='csr')# 2D Poisson problem on 500x500 gridml=pyamg.ruge_stuben_solver(A)# construct the multigrid hierarchyprint(ml)# print hierarchy informationb=np.random.rand(A.shape[0])# pick a random right hand sidex=ml.solve(b,tol=1e-10)# solve Ax=b to a tolerance of 1e-10print("residual: ",np.linalg.norm(b-A*x))# compute norm of residual vectorProgram output:multilevel_solver
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-08CondaMore information can be found atconda-forge/pyamg-feedstock.Linux:OSX:Windows:Version:Downloads:Installingpyamgfrom theconda-forgechannel can be achieved by addingconda-forgeto your channels with:conda config --add channels conda-forgeOnce theconda-forgechannel has been enabled,pyamgcan be installed with:conda install pyamgIt is possible to list all of the versions ofpyamgavailable on your platform with:conda search pyamg --channel conda-forge