Coder Social home page Coder Social logo

overfittingstudyroom / pyamg Goto Github PK

View Code? Open in Web Editor NEW

This project forked from pyamg/pyamg

0.0 0.0 0.0 10.76 MB

Algebraic Multigrid Solvers in Python

Home Page: http://pyamg.github.io/

License: MIT License

Shell 0.11% C++ 25.95% Python 73.93% TeX 0.02%

pyamg's Introduction

CI PyPi codecov DOI

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 by Luke Olson and Jacob Schroder.

Citing

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

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

pyamg's People

Contributors

lukeolson avatar wnbell avatar jbschroder avatar bensworth avatar nschloe avatar nicknytko avatar mfergie avatar scottmaclachlan avatar wolfgang-noichl avatar tkonolige avatar okrzysik avatar mayrmt avatar mwest1066 avatar mrkwjc avatar isuruf avatar glemaitre avatar czielinski avatar bitdeli-chef avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.