pyamg.readthedocs.io Open in urlscan Pro
2606:4700::6811:2052  Public Scan

Submitted URL: http://pyamg.readthedocs.io/
Effective URL: https://pyamg.readthedocs.io/en/latest/
Submission: On February 27 via api from US — Scanned from DE

Form analysis 2 forms found in the DOM

GET search.html

<form class="bd-search d-flex align-items-center" action="search.html" method="get">
  <svg class="svg-inline--fa fa-magnifying-glass" aria-hidden="true" focusable="false" data-prefix="fas" data-icon="magnifying-glass" role="img" xmlns="http://www.w3.org/2000/svg" viewBox="0 0 512 512" data-fa-i2svg="">
    <path fill="currentColor"
      d="M416 208c0 45.9-14.9 88.3-40 122.7L502.6 457.4c12.5 12.5 12.5 32.8 0 45.3s-32.8 12.5-45.3 0L330.7 376c-34.4 25.2-76.8 40-122.7 40C93.1 416 0 322.9 0 208S93.1 0 208 0S416 93.1 416 208zM208 352a144 144 0 1 0 0-288 144 144 0 1 0 0 288z"></path>
  </svg><!-- <i class="fa-solid fa-magnifying-glass"></i> Font Awesome fontawesome.com -->
  <input type="search" class="form-control" name="q" id="search-input" placeholder="Search the docs ..." aria-label="Search the docs ..." autocomplete="off" autocorrect="off" autocapitalize="off" spellcheck="false">
  <span class="search-button__kbd-shortcut"><kbd class="kbd-shortcut__modifier">Ctrl</kbd>+<kbd>K</kbd></span>
</form>

GET //readthedocs.org/projects/pyamg/search/

<form id="flyout-search-form" class="wy-form" target="_blank" action="//readthedocs.org/projects/pyamg/search/" method="get">
  <input type="text" name="q" aria-label="Dokumente durchsuchen" placeholder="Dokumente durchsuchen">
</form>

Text Content

Skip to main content

Back to top
Ctrl+K
 * PyAMG Reference

Search Ctrl+K

 * GitHub

Search Ctrl+K
 * PyAMG Reference

 * GitHub

JSONBuddy - JSON text and grid editor and unmatched JSON Schema development
environment.
Ad by EthicalAds   ·   ℹ️
v: latest
Versionen latest Auf Read the Docs Projektstartseite Erstellungsprozesse
Downloads Auf GitHub Ansehen Bearbeiten Suche


--------------------------------------------------------------------------------

Bereitgestellt von Read the Docs · Datenschutz-Bestimmungen


PYAMG 5.0.1.POST1.DEV21+G2195973#


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` <organization.md>`_ and examples of use can be found in
``pyamg-examples` <pyamg/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: .. code-block::
     python
     
     > import pyamg pyamg.test()
   
   * From the PyAMG source directory and installed (e.g. with pip install -e .):
     .. code-block:: python
     
     > 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:

OSX:

Windows:

Version:

Downloads:

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



REFERENCE#

 * Index

 * Module Index

 * PyAMG Reference
   * Multigrid data structure (“The Multilevel Hierarchy”)
     * pyamg.multilevel
       * MultilevelSolver
       * coarse_grid_solver()
       * multilevel_solver
   * Core AMG Methods
     * pyamg.aggregation
       * adaptive_sa_solver()
       * balanced_lloyd_aggregation()
       * energy_prolongation_smoother()
       * fit_candidates()
       * jacobi_prolongation_smoother()
       * lloyd_aggregation()
       * naive_aggregation()
       * pairwise_solver()
       * richardson_prolongation_smoother()
       * rootnode_solver()
       * smoothed_aggregation_solver()
       * standard_aggregation()
     * pyamg.classical
       * air_solver()
       * ruge_stuben_solver()
   * Common AMG Components
     * pyamg.relaxation
     * pyamg.strength
       * affinity_distance()
       * algebraic_distance()
       * classical_strength_of_connection()
       * distance_measure_common()
       * distance_strength_of_connection()
       * energy_based_strength_of_connection()
       * evolution_strength_of_connection()
       * ode_strength_of_connection()
       * relaxation_vectors()
       * symmetric_strength_of_connection()
   * Helper Routings
     * pyamg.graph
       * asgraph()
       * bellman_ford()
       * breadth_first_search()
       * connected_components()
       * lloyd_cluster()
       * maximal_independent_set()
       * pseudo_peripheral_node()
       * symmetric_rcm()
       * vertex_coloring()
     * pyamg.util
       * make_system()
       * upcast()
   * Krylov Methods
     * pyamg.krylov
       * Functions
       * References
       * bicgstab()
       * cg()
       * cgne()
       * cgnr()
       * cr()
       * fgmres()
       * gmres()
       * gmres_householder()
       * gmres_mgs()
       * minimal_residual()
       * steepest_descent()
   * Gallery Problems
     * pyamg.gallery
       * Functions
       * advection_2d()
       * demo()
       * diffusion_stencil_2d()
       * gauge_laplacian()
       * linear_elasticity()
       * linear_elasticity_p1()
       * load_example()
       * poisson()
       * regular_triangle_mesh()
       * sprand()
       * stencil_grid()
   * amg_core
     * pyamg.amg_core
       * apply_absolute_distance_filter()
       * apply_distance_filter()
       * apply_givens()
       * apply_householders()
       * approx_ideal_restriction_pass1()
       * approx_ideal_restriction_pass2()
       * bellman_ford()
       * block_approx_ideal_restriction_pass2()
       * block_gauss_seidel()
       * block_jacobi()
       * block_jacobi_indexed()
       * breadth_first_search()
       * bsr_gauss_seidel()
       * bsr_jacobi()
       * bsr_jacobi_indexed()
       * calc_BtB()
       * classical_strength_of_connection_abs()
       * classical_strength_of_connection_min()
       * cljp_naive_splitting()
       * cluster_center()
       * cluster_node_incidence()
       * connected_components()
       * cr_helper()
       * csc_scale_columns()
       * csc_scale_rows()
       * evolution_strength_helper()
       * extract_subblocks()
       * filter_matrix_rows()
       * fit_candidates()
       * gauss_seidel()
       * gauss_seidel_indexed()
       * gauss_seidel_ne()
       * gauss_seidel_nr()
       * householder_hornerscheme()
       * incomplete_mat_mult_bsr()
       * incomplete_mat_mult_csr()
       * jacobi()
       * jacobi_indexed()
       * jacobi_ne()
       * lloyd_cluster()
       * lloyd_cluster_exact()
       * maximal_independent_set_k_parallel()
       * maximal_independent_set_parallel()
       * maximal_independent_set_serial()
       * maximum_row_value()
       * min_blocks()
       * naive_aggregation()
       * one_point_interpolation()
       * overlapping_schwarz_csr()
       * pairwise_aggregation()
       * pinv_array()
       * remove_strong_FF_connections()
       * rs_cf_splitting()
       * rs_cf_splitting_pass2()
       * rs_classical_interpolation_pass1()
       * rs_classical_interpolation_pass2()
       * rs_direct_interpolation_pass1()
       * rs_direct_interpolation_pass2()
       * satisfy_constraints_helper()
       * standard_aggregation()
       * symmetric_strength_of_connection()
       * truncate_rows_csr()
       * vertex_coloring_LDF()
       * vertex_coloring_jones_plassmann()
       * vertex_coloring_mis()

next

PyAMG Reference

On this page
 * PyAMG 5.0.1.post1.dev21+g2195973
 * Installation
 * Introduction
 * Citing
 * Getting Help
 * What is AMG?
 * PyAMG Features
 * Example Usage
 * Conda
 * Reference

Show Source


© Copyright 2022, Luke Olson.


Created using Sphinx 7.2.6.


Built with the PyData Sphinx Theme 0.15.2.