Huge News!Announcing our $40M Series B led by Abstract Ventures.Learn More
Socket
Sign inDemoInstall
Socket

pyamg

Package Overview
Dependencies
Maintainers
2
Alerts
File Explorer

Advanced tools

Socket logo

Install Socket

Detect and block malicious and high-risk dependencies

Install

pyamg

PyAMG: Algebraic Multigrid Solvers in Python

  • 5.2.1
  • PyPI
  • Socket score

Maintainers
2

ci lint PyPI - Version PyPI - Python Version Codecov joss

Installation

PyAMG requires numpy and scipy

pip install pyamg

or from source:

pip install .

(python setup.py install will no longer work)

or with conda (see details below)

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

Introduction

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 organization.md 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.

Citing

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

@article{pyamg2023,
  author    = {Nathan Bell and Luke N. Olson and Jacob Schroder and Ben Southworth},
  title     = {{PyAMG}: Algebraic Multigrid Solvers in Python},
  journal   = {Journal of Open Source Software},
  year      = {2023},
  publisher = {The Open Journal},
  volume    = {8},
  number    = {87},
  pages     = {5495},
  doi       = {10.21105/joss.05495},
  url       = {https://doi.org/10.21105/joss.05495},
}

Getting Help

  • For documentation see http://pyamg.readthedocs.io/en/latest/.

  • 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
    pyamg.test()
    
    • 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 = pyamg.gallery.poisson((500,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:

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-08

Conda

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

Keywords

FAQs


Did you know?

Socket

Socket for GitHub automatically highlights issues in each pull request and monitors the health of all your open source dependencies. Discover the contents of your packages and block harmful activity before you install or update your dependencies.

Install

Related posts

SocketSocket SOC 2 Logo

Product

  • Package Alerts
  • Integrations
  • Docs
  • Pricing
  • FAQ
  • Roadmap
  • Changelog

Packages

npm

Stay in touch

Get open source security insights delivered straight into your inbox.


  • Terms
  • Privacy
  • Security

Made with ⚡️ by Socket Inc