pyamg


Namepyamg JSON
Version 5.2.1 PyPI version JSON
download
home_pagehttps://github.com/pyamg/pyamg
SummaryPyAMG: Algebraic Multigrid Solvers in Python
upload_time2024-06-27 04:45:28
maintainerLuke Olson
docs_urlNone
authorNathan Bell, Luke Olson, and Jacob Schroder
requires_python>=3.9
licenseMIT
keywords algebraic multigrid amg sparse matrix preconditioning
VCS
bugtrack_url
requirements numpy scipy
Travis-CI No Travis.
coveralls test coverage No coveralls.
            [![ci](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/ci.yml?style=flat-square&label=tests)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-test+branch%3Amain)
[![lint](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/lint.yml?style=flat-square&label=lint)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-lint+branch%3Amain)
[![PyPI - Version](https://img.shields.io/pypi/v/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)
[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)
[![Codecov](https://img.shields.io/codecov/c/github/pyamg/pyamg?style=flat-square)](https://app.codecov.io/gh/pyamg/pyamg)
[![joss](https://joss.theoj.org/papers/10.21105/joss.05495/status.svg?style=flat-square)](https://doi.org/10.21105/joss.05495)

# 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.

![](https://raw.githubusercontent.com/pyamg/pyamg/main/docs/logo/pyamg_logo_withtext.png)

PyAMG is currently developed and maintained by
[Luke Olson](http://lukeo.cs.illinois.edu),
[Jacob Schroder](https://www.unm.edu/~jbschroder), and
[Ben Southworth](https://arxiv.org/a/southworth_b_1.html).
The organization of the project can be found in [`organization.md`](organization.md) and
examples of use can be found in [`pyamg-examples`](https://github.com/pyamg/pyamg-examples).

**Acknowledgements:**
PyAMG was created by
[Nathan Bell](http://wnbell.com/), 
[Luke Olson](http://lukeo.cs.illinois.edu), and
[Jacob Schroder](https://www.unm.edu/~jbschroder).
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:

<pre>
@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},
}
</pre>

# Getting Help

- For documentation see [http://pyamg.readthedocs.io/en/latest/](http://pyamg.readthedocs.io/en/latest/).

- Create an [issue](https://github.com/pyamg/pyamg/issues).

- Look at the [Tutorial](https://github.com/pyamg/pyamg/wiki/Tutorial) or the [examples](https://github.com/pyamg/pyamg-examples) (for instance  the [0_start_here](https://github.com/pyamg/pyamg-examples/blob/main/0_start_here/demo.py) example).

- Run the unit tests (`pip install pytest`):
  - With PyAMG installed and from a non-source directory:
  ```python
  import pyamg
  pyamg.test()
  ```
  - From the PyAMG source directory and installed (e.g. with `pip install -e .`):
  ```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.

````python
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:

<pre>
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
</pre>

# Conda

More information can be found at [conda-forge/pyamg-feedstock](https://github.com/conda-forge/pyamg-feedstock).

*Linux:*
[![Circle CI](https://circleci.com/gh/conda-forge/pyamg-feedstock.svg?style=shield)](https://circleci.com/gh/conda-forge/pyamg-feedstock)

*OSX:*
[![TravisCI](https://travis-ci.org/conda-forge/pyamg-feedstock.svg?branch=master)](https://travis-ci.org/conda-forge/pyamg-feedstock)

*Windows:*
[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/conda-forge/pyamg-feedstock?svg=True)](https://ci.appveyor.com/project/conda-forge/pyamg-feedstock/branch/master)

*Version:*
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/version.svg)](https://anaconda.org/conda-forge/pyamg)

*Downloads:*
[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/downloads.svg)](https://anaconda.org/conda-forge/pyamg)

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

            

Raw data

            {
    "_id": null,
    "home_page": "https://github.com/pyamg/pyamg",
    "name": "pyamg",
    "maintainer": "Luke Olson",
    "docs_url": null,
    "requires_python": ">=3.9",
    "maintainer_email": "luke.olson@gmail.com",
    "keywords": "algebraic multigrid, AMG, sparse matrix, preconditioning",
    "author": "Nathan Bell, Luke Olson, and Jacob Schroder",
    "author_email": "luke.olson@gmail.com",
    "download_url": "https://github.com/pyamg/pyamg/releases",
    "platform": null,
    "description": "[![ci](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/ci.yml?style=flat-square&label=tests)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-test+branch%3Amain)\n[![lint](https://img.shields.io/github/actions/workflow/status/pyamg/pyamg/lint.yml?style=flat-square&label=lint)](https://github.com/pyamg/pyamg/actions?query=workflow%3ACI-lint+branch%3Amain)\n[![PyPI - Version](https://img.shields.io/pypi/v/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)\n[![PyPI - Python Version](https://img.shields.io/pypi/pyversions/pyamg?style=flat-square)](https://pypi.org/project/pyamg/)\n[![Codecov](https://img.shields.io/codecov/c/github/pyamg/pyamg?style=flat-square)](https://app.codecov.io/gh/pyamg/pyamg)\n[![joss](https://joss.theoj.org/papers/10.21105/joss.05495/status.svg?style=flat-square)](https://doi.org/10.21105/joss.05495)\n\n# Installation\nPyAMG requires `numpy` and `scipy`\n\n```\npip install pyamg\n```\n\nor from source:\n\n```\npip install .\n```\n\n(`python setup.py install` will no longer work)\n\nor with conda (see details below)\n\n```\nconda config --add channels conda-forge\nconda install pyamg\n```\n\n# Introduction\n\nPyAMG is a library of **Algebraic Multigrid (AMG)** solvers with a convenient Python interface.\n\n![](https://raw.githubusercontent.com/pyamg/pyamg/main/docs/logo/pyamg_logo_withtext.png)\n\nPyAMG is currently developed and maintained by\n[Luke Olson](http://lukeo.cs.illinois.edu),\n[Jacob Schroder](https://www.unm.edu/~jbschroder), and\n[Ben Southworth](https://arxiv.org/a/southworth_b_1.html).\nThe organization of the project can be found in [`organization.md`](organization.md) and\nexamples of use can be found in [`pyamg-examples`](https://github.com/pyamg/pyamg-examples).\n\n**Acknowledgements:**\nPyAMG was created by\n[Nathan Bell](http://wnbell.com/), \n[Luke Olson](http://lukeo.cs.illinois.edu), and\n[Jacob Schroder](https://www.unm.edu/~jbschroder).\nPortions of the project were partially supported by the NSF under award DMS-0612448.\n\n# Citing\n\nIf you use PyAMG in your work, please consider using the following citation:\n\n<pre>\n@article{pyamg2023,\n  author    = {Nathan Bell and Luke N. Olson and Jacob Schroder and Ben Southworth},\n  title     = {{PyAMG}: Algebraic Multigrid Solvers in Python},\n  journal   = {Journal of Open Source Software},\n  year      = {2023},\n  publisher = {The Open Journal},\n  volume    = {8},\n  number    = {87},\n  pages     = {5495},\n  doi       = {10.21105/joss.05495},\n  url       = {https://doi.org/10.21105/joss.05495},\n}\n</pre>\n\n# Getting Help\n\n- For documentation see [http://pyamg.readthedocs.io/en/latest/](http://pyamg.readthedocs.io/en/latest/).\n\n- Create an [issue](https://github.com/pyamg/pyamg/issues).\n\n- Look at the [Tutorial](https://github.com/pyamg/pyamg/wiki/Tutorial) or the [examples](https://github.com/pyamg/pyamg-examples) (for instance  the [0_start_here](https://github.com/pyamg/pyamg-examples/blob/main/0_start_here/demo.py) example).\n\n- Run the unit tests (`pip install pytest`):\n  - With PyAMG installed and from a non-source directory:\n  ```python\n  import pyamg\n  pyamg.test()\n  ```\n  - From the PyAMG source directory and installed (e.g. with `pip install -e .`):\n  ```python\n  pytest .\n  ```\n\n# What is AMG?\n\n 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.\n\n# PyAMG Features\n\nPyAMG features implementations of:\n\n- **Ruge-Stuben (RS)** or *Classical AMG*\n- AMG based on **Smoothed Aggregation (SA)**\n\nand experimental support for:\n\n- **Adaptive Smoothed Aggregation (\u03b1SA)**\n- **Compatible Relaxation (CR)**\n\nThe predominant portion of PyAMG is written in Python with a smaller amount of supporting C++ code for performance critical operations.\n\n# Example Usage\n\nPyAMG is easy to use!  The following code constructs a two-dimensional Poisson problem and solves the resulting linear system with Classical AMG.\n\n````python\nimport pyamg\nimport numpy as np\nA = pyamg.gallery.poisson((500,500), format='csr')  # 2D Poisson problem on 500x500 grid\nml = pyamg.ruge_stuben_solver(A)                    # construct the multigrid hierarchy\nprint(ml)                                           # print hierarchy information\nb = np.random.rand(A.shape[0])                      # pick a random right hand side\nx = ml.solve(b, tol=1e-10)                          # solve Ax=b to a tolerance of 1e-10\nprint(\"residual: \", np.linalg.norm(b-A*x))          # compute norm of residual vector\n````\n\nProgram output:\n\n<pre>\nmultilevel_solver\nNumber of Levels:     9\nOperator Complexity:  2.199\nGrid Complexity:      1.667\nCoarse Solver:        'pinv2'\n  level   unknowns     nonzeros\n    0       250000      1248000 [45.47%]\n    1       125000      1121002 [40.84%]\n    2        31252       280662 [10.23%]\n    3         7825        70657 [ 2.57%]\n    4         1937        17971 [ 0.65%]\n    5          483         4725 [ 0.17%]\n    6          124         1352 [ 0.05%]\n    7           29          293 [ 0.01%]\n    8            7           41 [ 0.00%]\n\nresidual:  1.24748994988e-08\n</pre>\n\n# Conda\n\nMore information can be found at [conda-forge/pyamg-feedstock](https://github.com/conda-forge/pyamg-feedstock).\n\n*Linux:*\n[![Circle CI](https://circleci.com/gh/conda-forge/pyamg-feedstock.svg?style=shield)](https://circleci.com/gh/conda-forge/pyamg-feedstock)\n\n*OSX:*\n[![TravisCI](https://travis-ci.org/conda-forge/pyamg-feedstock.svg?branch=master)](https://travis-ci.org/conda-forge/pyamg-feedstock)\n\n*Windows:*\n[![AppVeyor](https://ci.appveyor.com/api/projects/status/github/conda-forge/pyamg-feedstock?svg=True)](https://ci.appveyor.com/project/conda-forge/pyamg-feedstock/branch/master)\n\n*Version:*\n[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/version.svg)](https://anaconda.org/conda-forge/pyamg)\n\n*Downloads:*\n[![Anaconda-Server Badge](https://anaconda.org/conda-forge/pyamg/badges/downloads.svg)](https://anaconda.org/conda-forge/pyamg)\n\nInstalling `pyamg` from the `conda-forge` channel can be achieved by adding `conda-forge` to your channels with:\n\n```\nconda config --add channels conda-forge\n```\n\nOnce the `conda-forge` channel has been enabled, `pyamg` can be installed with:\n\n```\nconda install pyamg\n```\n\nIt is possible to list all of the versions of `pyamg` available on your platform with:\n\n```\nconda search pyamg --channel conda-forge\n```\n",
    "bugtrack_url": null,
    "license": "MIT",
    "summary": "PyAMG: Algebraic Multigrid Solvers in Python",
    "version": "5.2.1",
    "project_urls": {
        "Download": "https://github.com/pyamg/pyamg/releases",
        "Homepage": "https://github.com/pyamg/pyamg"
    },
    "split_keywords": [
        "algebraic multigrid",
        " amg",
        " sparse matrix",
        " preconditioning"
    ],
    "urls": [
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "71d29e296528ea5ff0bfedf5fdf79851bac99fdd7b3286d355de68cc1c39ba43",
                "md5": "d6048b8f86f52019ba0ae2edac30d24f",
                "sha256": "486a2b58b53aa6dc606fae5b9f3aebb5dad635a2113cea4f300da16983749716"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "d6048b8f86f52019ba0ae2edac30d24f",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1716541,
            "upload_time": "2024-06-27T04:45:28",
            "upload_time_iso_8601": "2024-06-27T04:45:28.387995Z",
            "url": "https://files.pythonhosted.org/packages/71/d2/9e296528ea5ff0bfedf5fdf79851bac99fdd7b3286d355de68cc1c39ba43/pyamg-5.2.1-cp310-cp310-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "3f188b6512e02cb620e121b75e9291c4ad8c8257cb49cd21b5771f57bd5dc513",
                "md5": "ff2f2bb312bbf5b7f34ad825c45dcdf6",
                "sha256": "5d45d02e21a63e92b29b108ab4ec111e699367116e8541318304c16f52ffa71a"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp310-cp310-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ff2f2bb312bbf5b7f34ad825c45dcdf6",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1658872,
            "upload_time": "2024-06-27T04:45:30",
            "upload_time_iso_8601": "2024-06-27T04:45:30.736823Z",
            "url": "https://files.pythonhosted.org/packages/3f/18/8b6512e02cb620e121b75e9291c4ad8c8257cb49cd21b5771f57bd5dc513/pyamg-5.2.1-cp310-cp310-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7f11d7f8dcc51f28b6b8d65e154b8f8c66217fd942718afe58088b4423501bdc",
                "md5": "54f7d249668effecec0f59d929c712ad",
                "sha256": "22ec55aeabb88724a01751150005d1209fb6edb6de9d8cb6e4129294774b8487"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "54f7d249668effecec0f59d929c712ad",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1954830,
            "upload_time": "2024-06-27T04:45:32",
            "upload_time_iso_8601": "2024-06-27T04:45:32.843806Z",
            "url": "https://files.pythonhosted.org/packages/7f/11/d7f8dcc51f28b6b8d65e154b8f8c66217fd942718afe58088b4423501bdc/pyamg-5.2.1-cp310-cp310-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "34d2bd943fefd7f3a2bbe6f0a0ecf5b8433e85ac3fa53a33f5a6bcbd2c3e0639",
                "md5": "1f4340a545c2827f6543f77de0a4f7e1",
                "sha256": "585723f8e78048da5e6f6ae6336aa343b318154f02365a529867c741c49d529b"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "1f4340a545c2827f6543f77de0a4f7e1",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 2766570,
            "upload_time": "2024-06-27T04:45:34",
            "upload_time_iso_8601": "2024-06-27T04:45:34.883423Z",
            "url": "https://files.pythonhosted.org/packages/34/d2/bd943fefd7f3a2bbe6f0a0ecf5b8433e85ac3fa53a33f5a6bcbd2c3e0639/pyamg-5.2.1-cp310-cp310-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "7e50b2dd5ed70d033e50c0f2f260754c2ca64e67d8aaa3d2fe04cc1e6028ae2b",
                "md5": "5d2ce87baa18016c4ec77049eca9998b",
                "sha256": "b14476eb193b83c4a2537be245b37919b4b5cc49cf4e85e232ae804b02a8f97c"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp310-cp310-win32.whl",
            "has_sig": false,
            "md5_digest": "5d2ce87baa18016c4ec77049eca9998b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1449685,
            "upload_time": "2024-06-27T04:45:36",
            "upload_time_iso_8601": "2024-06-27T04:45:36.386272Z",
            "url": "https://files.pythonhosted.org/packages/7e/50/b2dd5ed70d033e50c0f2f260754c2ca64e67d8aaa3d2fe04cc1e6028ae2b/pyamg-5.2.1-cp310-cp310-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2d32de2e9116e4cc313fb5dffd29c687fddd30ef24caec7b618a7e4d8804fc77",
                "md5": "656f485bd74a342957309e99bff1dd2b",
                "sha256": "f7cb7d4d43e13d67f5e7ad23ea20fa052cb310a186717e763a16b7c176248868"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp310-cp310-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "656f485bd74a342957309e99bff1dd2b",
            "packagetype": "bdist_wheel",
            "python_version": "cp310",
            "requires_python": ">=3.9",
            "size": 1579171,
            "upload_time": "2024-06-27T04:45:38",
            "upload_time_iso_8601": "2024-06-27T04:45:38.293308Z",
            "url": "https://files.pythonhosted.org/packages/2d/32/de2e9116e4cc313fb5dffd29c687fddd30ef24caec7b618a7e4d8804fc77/pyamg-5.2.1-cp310-cp310-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "ae0f5e725b26add355e52abcc9e2f065a85faaabe77e1b0926568743493230bb",
                "md5": "28a33725a3efa6cfd9a26d2970bf649d",
                "sha256": "60d02ce8e1190292cf43710dd45403ba0860255392830140da874492b755a498"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "28a33725a3efa6cfd9a26d2970bf649d",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1728275,
            "upload_time": "2024-06-27T04:45:40",
            "upload_time_iso_8601": "2024-06-27T04:45:40.345966Z",
            "url": "https://files.pythonhosted.org/packages/ae/0f/5e725b26add355e52abcc9e2f065a85faaabe77e1b0926568743493230bb/pyamg-5.2.1-cp311-cp311-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "a823fb5e9ae91de2a9d723f1ba6b484e7b4145d0cd15f4953b6f1ce89f39a602",
                "md5": "ac2fd15d55c3b647f535ac48bad0e66c",
                "sha256": "75d68fac5a7ddb3fb490efa66a5e47902532770bc357fbf5a5a7be613b8d493d"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp311-cp311-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "ac2fd15d55c3b647f535ac48bad0e66c",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1670008,
            "upload_time": "2024-06-27T04:45:41",
            "upload_time_iso_8601": "2024-06-27T04:45:41.576653Z",
            "url": "https://files.pythonhosted.org/packages/a8/23/fb5e9ae91de2a9d723f1ba6b484e7b4145d0cd15f4953b6f1ce89f39a602/pyamg-5.2.1-cp311-cp311-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d3e86898b3b791f369605012e896ed903b6626f3bd1208c6a647d7219c070209",
                "md5": "7a0d54c82a3df6439cc30bcdfd3f6d19",
                "sha256": "679a5904eac3a4880288c8c0e6a29f110a2627ea15a443a4e9d5997c7dc5fab6"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "7a0d54c82a3df6439cc30bcdfd3f6d19",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1967667,
            "upload_time": "2024-06-27T04:45:42",
            "upload_time_iso_8601": "2024-06-27T04:45:42.987442Z",
            "url": "https://files.pythonhosted.org/packages/d3/e8/6898b3b791f369605012e896ed903b6626f3bd1208c6a647d7219c070209/pyamg-5.2.1-cp311-cp311-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d8aedf3ef37e5ab6a21bb93e301eccbc9bb201bf247cfb2533c681a5070edf2f",
                "md5": "bdc7afd44d119e18569b3ce2c2be9b64",
                "sha256": "91a0f8d5f39debbe62ab191c9354fce6c547bd78955961f88cb7ab2ea7a14dc1"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "bdc7afd44d119e18569b3ce2c2be9b64",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 2773740,
            "upload_time": "2024-06-27T04:45:44",
            "upload_time_iso_8601": "2024-06-27T04:45:44.459644Z",
            "url": "https://files.pythonhosted.org/packages/d8/ae/df3ef37e5ab6a21bb93e301eccbc9bb201bf247cfb2533c681a5070edf2f/pyamg-5.2.1-cp311-cp311-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "2af7c3c708cde09268eec830c29f28d569fcde2e164f28a39aa725f636396f38",
                "md5": "6d32c721461fbaa10e20c3417b17a6ae",
                "sha256": "0b2762b24ad61d900ac835120158e64ceea6e497a8a3edb69c3b04776ddde329"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp311-cp311-win32.whl",
            "has_sig": false,
            "md5_digest": "6d32c721461fbaa10e20c3417b17a6ae",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1458501,
            "upload_time": "2024-06-27T04:45:46",
            "upload_time_iso_8601": "2024-06-27T04:45:46.500324Z",
            "url": "https://files.pythonhosted.org/packages/2a/f7/c3c708cde09268eec830c29f28d569fcde2e164f28a39aa725f636396f38/pyamg-5.2.1-cp311-cp311-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d2dee7638d7e9cef62e59480f2ac80ae63e31f7537367031dc9d571427a8d1c6",
                "md5": "63c61a03950339bd843b98e8bf5e40e0",
                "sha256": "487c41ed3c2987b19771854e84415268033a8c3dba681ecac996ddbf1ce4c3be"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp311-cp311-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "63c61a03950339bd843b98e8bf5e40e0",
            "packagetype": "bdist_wheel",
            "python_version": "cp311",
            "requires_python": ">=3.9",
            "size": 1588292,
            "upload_time": "2024-06-27T04:45:48",
            "upload_time_iso_8601": "2024-06-27T04:45:48.462295Z",
            "url": "https://files.pythonhosted.org/packages/d2/de/e7638d7e9cef62e59480f2ac80ae63e31f7537367031dc9d571427a8d1c6/pyamg-5.2.1-cp311-cp311-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "d65dc603b5e5fe0b871095691fcc6453e6f666b4006475f94220f01fba376178",
                "md5": "47ecabbb62b6f1a964089a340c36d173",
                "sha256": "30ae9f374c03897cb257b8eabbf8ceb32007e6df1c0a7ab2a84eb1ed0550087d"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "47ecabbb62b6f1a964089a340c36d173",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1721956,
            "upload_time": "2024-06-27T04:45:49",
            "upload_time_iso_8601": "2024-06-27T04:45:49.762056Z",
            "url": "https://files.pythonhosted.org/packages/d6/5d/c603b5e5fe0b871095691fcc6453e6f666b4006475f94220f01fba376178/pyamg-5.2.1-cp312-cp312-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "0a7c30faaa543a3f5da647deb604f0a7c6f70e62ba157b1b0a7ca977a89cc814",
                "md5": "e9a87e07b5911c4db3222b3b41ad46c8",
                "sha256": "5f1645e50ed8d93d73c7546ca6e77c856dc3ccddf93bf9ded3f97654e600ca1b"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp312-cp312-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "e9a87e07b5911c4db3222b3b41ad46c8",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1663104,
            "upload_time": "2024-06-27T04:45:51",
            "upload_time_iso_8601": "2024-06-27T04:45:51.816292Z",
            "url": "https://files.pythonhosted.org/packages/0a/7c/30faaa543a3f5da647deb604f0a7c6f70e62ba157b1b0a7ca977a89cc814/pyamg-5.2.1-cp312-cp312-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "8cf3d2b4f5c265188bf6f540ecd1d5f208bac2931b332613c116cc33da4e4aa8",
                "md5": "ad263bc901aa4acc857dfdf56dc4ca18",
                "sha256": "1894898370f818be7999ed6872391bc7de4f8a2a95027754b67bac638f23a480"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "ad263bc901aa4acc857dfdf56dc4ca18",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1961942,
            "upload_time": "2024-06-27T04:45:53",
            "upload_time_iso_8601": "2024-06-27T04:45:53.356877Z",
            "url": "https://files.pythonhosted.org/packages/8c/f3/d2b4f5c265188bf6f540ecd1d5f208bac2931b332613c116cc33da4e4aa8/pyamg-5.2.1-cp312-cp312-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e4fc58c3efb48e8bc2cfdbb50c501ac15b67260309c4df5a80905e6ccca7397b",
                "md5": "73dac7d1b212095273c0e54ccf9bd446",
                "sha256": "1eabc5bd1aa21f0911021d17fdbb03d93216bfefaac0a9af357fed1510dd4f65"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "73dac7d1b212095273c0e54ccf9bd446",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 2770007,
            "upload_time": "2024-06-27T04:45:55",
            "upload_time_iso_8601": "2024-06-27T04:45:55.296395Z",
            "url": "https://files.pythonhosted.org/packages/e4/fc/58c3efb48e8bc2cfdbb50c501ac15b67260309c4df5a80905e6ccca7397b/pyamg-5.2.1-cp312-cp312-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "e487b4cc37648e728d4bb92a9956f4d81275cab39000f4fead94322e43e4dd9e",
                "md5": "29e7c8a2f22ac484e1199b8aa5c1856e",
                "sha256": "5ff6202143f0c5fa093b4f99b9de4e6e5195fb7fecaf001a1f6a5a21b1fe329d"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp312-cp312-win32.whl",
            "has_sig": false,
            "md5_digest": "29e7c8a2f22ac484e1199b8aa5c1856e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1459728,
            "upload_time": "2024-06-27T04:45:57",
            "upload_time_iso_8601": "2024-06-27T04:45:57.244980Z",
            "url": "https://files.pythonhosted.org/packages/e4/87/b4cc37648e728d4bb92a9956f4d81275cab39000f4fead94322e43e4dd9e/pyamg-5.2.1-cp312-cp312-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "9ef3cb009732b4f467a63f53fb6be99206568c521d1b7c70fa9809457d7138b3",
                "md5": "51d206a2fe9026799a849150a881832e",
                "sha256": "dac4b0656188cf85e803355aa9065fd2d6d2237fc29bb5e55995331f75e0f616"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp312-cp312-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "51d206a2fe9026799a849150a881832e",
            "packagetype": "bdist_wheel",
            "python_version": "cp312",
            "requires_python": ">=3.9",
            "size": 1592216,
            "upload_time": "2024-06-27T04:45:58",
            "upload_time_iso_8601": "2024-06-27T04:45:58.514848Z",
            "url": "https://files.pythonhosted.org/packages/9e/f3/cb009732b4f467a63f53fb6be99206568c521d1b7c70fa9809457d7138b3/pyamg-5.2.1-cp312-cp312-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "dbb254cf2d888d94a6d60ce2b2fa670f68429e442b625ae6f23f70e58082ca12",
                "md5": "0c621a3911fb5e4f67083b65174667e0",
                "sha256": "4159c8d13ea0c35d881ef76e14b94fa248e99d60bd9140a7762fcca972f34de7"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp39-cp39-macosx_10_9_x86_64.whl",
            "has_sig": false,
            "md5_digest": "0c621a3911fb5e4f67083b65174667e0",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1717634,
            "upload_time": "2024-06-27T04:45:59",
            "upload_time_iso_8601": "2024-06-27T04:45:59.988244Z",
            "url": "https://files.pythonhosted.org/packages/db/b2/54cf2d888d94a6d60ce2b2fa670f68429e442b625ae6f23f70e58082ca12/pyamg-5.2.1-cp39-cp39-macosx_10_9_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "1fbb50c6651ba042d2c196afbc1c5911b19293713794010b3b4ab8f85c3f7f77",
                "md5": "2bc4163aa7641323d00760d99a4a1031",
                "sha256": "6da02369515d56647fadab8390933d510969ff36b396bf5d11eb6738484ce014"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp39-cp39-macosx_11_0_arm64.whl",
            "has_sig": false,
            "md5_digest": "2bc4163aa7641323d00760d99a4a1031",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1659939,
            "upload_time": "2024-06-27T04:46:02",
            "upload_time_iso_8601": "2024-06-27T04:46:02.066801Z",
            "url": "https://files.pythonhosted.org/packages/1f/bb/50c6651ba042d2c196afbc1c5911b19293713794010b3b4ab8f85c3f7f77/pyamg-5.2.1-cp39-cp39-macosx_11_0_arm64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "deb6411b3de91fb23aebee8082af5c970f8345e06d8357ce1c33464837130770",
                "md5": "6537f804570cde37d6a1f760038be22b",
                "sha256": "40acf38eb733dd33f054f2b9a6aa3cee1786b7a5420b602787f2d38eca8051ac"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "has_sig": false,
            "md5_digest": "6537f804570cde37d6a1f760038be22b",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1956522,
            "upload_time": "2024-06-27T04:46:03",
            "upload_time_iso_8601": "2024-06-27T04:46:03.453510Z",
            "url": "https://files.pythonhosted.org/packages/de/b6/411b3de91fb23aebee8082af5c970f8345e06d8357ce1c33464837130770/pyamg-5.2.1-cp39-cp39-manylinux_2_17_x86_64.manylinux2014_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "545b99aaae251b54d7fc5338cac33833e7f75ad19f1856af80eb1524f6550c1e",
                "md5": "f088ed6bb58a6681826e95d18ffff223",
                "sha256": "f297ecd26aa9130ca57c74fe52e40a7590e0f0aef50616b39ce7ab02ebc1a8a9"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "has_sig": false,
            "md5_digest": "f088ed6bb58a6681826e95d18ffff223",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 2765286,
            "upload_time": "2024-06-27T04:46:04",
            "upload_time_iso_8601": "2024-06-27T04:46:04.928107Z",
            "url": "https://files.pythonhosted.org/packages/54/5b/99aaae251b54d7fc5338cac33833e7f75ad19f1856af80eb1524f6550c1e/pyamg-5.2.1-cp39-cp39-musllinux_1_2_x86_64.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "c90ba95880eddb43003dd7ce4e6080e0946b26eae27d4a04e6093cdab43264b6",
                "md5": "77bd1e948795518e278a7823ed0898c9",
                "sha256": "4b7ee45d5b3f96897146b55d2a1829d3f7c692cafb2bc99396e14e2bf1c645b3"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp39-cp39-win32.whl",
            "has_sig": false,
            "md5_digest": "77bd1e948795518e278a7823ed0898c9",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1451071,
            "upload_time": "2024-06-27T04:46:06",
            "upload_time_iso_8601": "2024-06-27T04:46:06.485293Z",
            "url": "https://files.pythonhosted.org/packages/c9/0b/a95880eddb43003dd7ce4e6080e0946b26eae27d4a04e6093cdab43264b6/pyamg-5.2.1-cp39-cp39-win32.whl",
            "yanked": false,
            "yanked_reason": null
        },
        {
            "comment_text": "",
            "digests": {
                "blake2b_256": "f6db8fdfb4b251e5a2c0219f0339a9e749a458fd4cdbfe47d8a62848d17e0e2c",
                "md5": "db69347c853d60ee190e4f86762d5392",
                "sha256": "0bc04266f177bb92f4468af3d30b06b2925de54107e15b3cfc118a06c96a88cf"
            },
            "downloads": -1,
            "filename": "pyamg-5.2.1-cp39-cp39-win_amd64.whl",
            "has_sig": false,
            "md5_digest": "db69347c853d60ee190e4f86762d5392",
            "packagetype": "bdist_wheel",
            "python_version": "cp39",
            "requires_python": ">=3.9",
            "size": 1569058,
            "upload_time": "2024-06-27T04:46:07",
            "upload_time_iso_8601": "2024-06-27T04:46:07.911542Z",
            "url": "https://files.pythonhosted.org/packages/f6/db/8fdfb4b251e5a2c0219f0339a9e749a458fd4cdbfe47d8a62848d17e0e2c/pyamg-5.2.1-cp39-cp39-win_amd64.whl",
            "yanked": false,
            "yanked_reason": null
        }
    ],
    "upload_time": "2024-06-27 04:45:28",
    "github": true,
    "gitlab": false,
    "bitbucket": false,
    "codeberg": false,
    "github_user": "pyamg",
    "github_project": "pyamg",
    "travis_ci": false,
    "coveralls": false,
    "github_actions": true,
    "requirements": [
        {
            "name": "numpy",
            "specs": []
        },
        {
            "name": "scipy",
            "specs": [
                [
                    ">=",
                    "1.11.0"
                ]
            ]
        }
    ],
    "lcname": "pyamg"
}
        
Elapsed time: 0.27943s