My favorites | Sign in
Project Logo
Project hosting will be READ-ONLY Wednesday at 8am PST due to brief network maintenance.
                

PyAMG is developed by Nathan Bell, Luke Olson, and Jacob Schroder,

in the Deparment of Computer Science at the University of Illinois at Urbana-Champaign.
Portions of the project were partially supported by the NSF under award DMS-0612448.






Introduction

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

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.

Features

PyAMG features implementations of:

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.

Objectives

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.

from scipy import *
from scipy.linalg import *
from pyamg import *
from pyamg.gallery import *
A = poisson((500,500), format='csr')     # 2D Poisson problem on 500x500 grid
ml = ruge_stuben_solver(A)               # construct the multigrid hierarchy
print ml                                 # print hierarchy information
b = 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-8
print "residual norm is", norm(b - A*x)  # compute norm of residual vector

Program output:

multilevel_solver
Number of Levels:     6
Operator Complexity:  2.198
Grid Complexity:      1.666
Coarse Solver:        'pinv2'
  level   unknowns     nonzeros
    0       250000      1248000 [45.50%]
    1       125000      1121002 [40.87%]
    2        31252       280662 [10.23%]
    3         7825        70657 [ 2.58%]
    4         1937        17973 [ 0.66%]
    5          484         4728 [ 0.17%]

residual norm is 1.86112114946e-06

Refer to Tutorial or Examples for more applications of PyAMG. Complete code documentation can be found here.









Hosted by Google Code