Skip to main content

No project description provided

Project description

pyMOR Logo

pyMOR - Model Order Reduction with Python

pyMOR is a software library for building model order reduction applications with the Python programming language. Implemented algorithms include reduced basis methods for parametric linear and non-linear problems, as well as system-theoretic methods such as balanced truncation or IRKA (Iterative Rational Krylov Algorithm). All algorithms in pyMOR are formulated in terms of abstract interfaces for seamless integration with external PDE (Partial Differential Equation) solver packages. Moreover, pure Python implementations of FEM (Finite Element Method) and FVM (Finite Volume Method) discretizations using the NumPy/SciPy scientific computing stack are provided for getting started quickly.

PyPI PyPI Docs DOI GitLab Pipeline Azure Pipeline codecov

License

Copyright 2013-2020 pyMOR developers and contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The following files contain source code originating from other open source software projects:

  • docs/source/pymordocstring.py (sphinxcontrib-napoleon)
  • src/pymor/algorithms/genericsolvers.py (SciPy)

See these files for more information.

Citing

If you use pyMOR for academic work, please consider citing our publication:

R. Milk, S. Rave, F. Schindler
pyMOR - Generic Algorithms and Interfaces for Model Order Reduction
SIAM J. Sci. Comput., 38(5), pp. S194--S216, 2016

Installation via pip

We recommend installation of pyMOR in a virtual environment.

pyMOR can easily be installed with the pip command:

pip install --upgrade pip  # make sure that pip is reasonably new
pip install pymor[full]

(Please note that pip must be at least version 19.0)

This will install the latest release of pyMOR on your system with most optional dependencies. For Linux we provide binary wheels, so no further system packages should be required. Use

pip install pymor

for an installation with minimal dependencies. There are some optional packages not included with pymor[full] because they need additional setup on your system:

  • for support of MPI distributed models and parallelization of greedy algorithms (requires MPI development headers and a C compiler):

    pip install mpi4py
    
  • dense matrix equation solver for system-theoretic MOR methods, required for H-infinity norm calculation (requires OpenBLAS headers and a Fortran compiler):

    pip install slycot
    
  • dense and sparse matrix equation solver for system-theoretic MOR methods (other backends available):

If you are not operating in a virtual environment, you can pass the optional --user argument to pip. pyMOR will then only be installed for your local user, not requiring administrator privileges.

To install the latest development version of pyMOR, execute

pip install git+https://github.com/pymor/pymor#egg=pymor[full]

which will require that the git version control system is installed on your system.

From time to time, the master branch of pyMOR undergoes major changes and things might break (this is usually announced in our discussion forum), so you might prefer to install pyMOR from the current release branch:

pip install git+https://github.com/pymor/pymor@2020.2.x#egg=pymor[full]

Release branches will always stay stable and will only receive bugfix commits after the corresponding release has been made.

Installation via conda

pyMOR can be installed using conda by running

conda install -c conda-forge pymor

Documentation

Documentation is available online or you can build it yourself from inside the root directory of the pyMOR source tree by executing:

make docs

This will generate HTML documentation in docs/_build/html.

Useful Links

External PDE solvers

pyMOR has been designed with easy integration of external PDE solvers in mind.

A basic approach is to use the solver only to generate high-dimensional system matrices which are then read by pyMOR from disk (pymor.discretizers.disk). Another possibility is to steer the solver via an appropriate network protocol.

Whenever possible, we recommend to recompile the solver as a Python extension module which gives pyMOR direct access to the solver without any communication overhead. A basic example using pybind11 can be found in src/pymordemos/minimal_cpp_demo. Moreover, we provide bindings for the following solver libraries:

  • FEniCS

    MPI-compatible wrapper classes for dolfin linear algebra data structures are shipped with pyMOR (pymor.bindings.fenics). For an example see pymordemos.thermalbock, pymordemos.thermalblock_simple. It is tested using version 2019.1.0.

  • deal.II

    Python bindings and pyMOR wrapper classes can be found here.

  • NGSolve

    Wrapper classes for the NGSolve finite element library are shipped with pyMOR (pymor.bindings.ngsolve). For an example see pymordemos.thermalblock_simple. It is tested using version v6.2.2006.

Do not hesitate to contact us if you need help with the integration of your PDE solver.

External Matrix Equation Solvers

pyMOR also provides bindings to matrix equation solvers (in pymor.bindings), which are needed for the system-theoretic methods and need to be installed separately. Bindings for the following solver libraries are included:

  • Py-M.E.S.S.

    The Matrix Equation Sparse Solver library is intended for solving large sparse matrix equations (pymor.bindings.pymess).

  • Slycot

    Python wrapper for the Subroutine Library in Systems and Control Theory (SLICOT) is also used for Hardy norm computations (pymor.bindings.slycot).

Environments for pyMOR Development and Tests

Please see the Developer Documentation.

Contact

Should you have any questions regarding pyMOR or wish to contribute, do not hestitate to contact us via our GitHub discussions forum:

https://github.com/pymor/pymor/discussions

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

pymor-2020.2.0.tar.gz (791.1 kB view details)

Uploaded Source

Built Distributions

pymor-2020.2.0-cp39-cp39-manylinux2014_x86_64.whl (833.5 kB view details)

Uploaded CPython 3.9

pymor-2020.2.0-cp39-cp39-manylinux2010_x86_64.whl (831.9 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

pymor-2020.2.0-cp38-cp38-manylinux2014_x86_64.whl (853.7 kB view details)

Uploaded CPython 3.8

pymor-2020.2.0-cp38-cp38-manylinux2010_x86_64.whl (853.4 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

pymor-2020.2.0-cp37-cp37m-manylinux2014_x86_64.whl (825.9 kB view details)

Uploaded CPython 3.7m

pymor-2020.2.0-cp37-cp37m-manylinux2010_x86_64.whl (826.0 kB view details)

Uploaded CPython 3.7m manylinux: glibc 2.12+ x86-64

pymor-2020.2.0-cp36-cp36m-manylinux2014_x86_64.whl (822.5 kB view details)

Uploaded CPython 3.6m

pymor-2020.2.0-cp36-cp36m-manylinux2010_x86_64.whl (822.2 kB view details)

Uploaded CPython 3.6m manylinux: glibc 2.12+ x86-64

File details

Details for the file pymor-2020.2.0.tar.gz.

File metadata

  • Download URL: pymor-2020.2.0.tar.gz
  • Upload date:
  • Size: 791.1 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0.tar.gz
Algorithm Hash digest
SHA256 e451cb0116137f2409f3d58f63b06d1b568040f3c48f3922bec9d548bc4982ee
MD5 9f21963f012a8cf01fb2cb1d697a7f70
BLAKE2b-256 7b9f5a86e1abd220b8095816033c96b0ea1f48394e18630b8d02d795712900d2

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp39-cp39-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 833.5 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 b00ab1bc1e60cf0abacac980f3aab8c743bb116a1e91793cac09cdd1eee936ab
MD5 650f352ad80c7773127e1bdfafc6c82b
BLAKE2b-256 5b30078515c88d0318d3a300a4e4fd7670187866d44d8935ba8b003f3194a4a8

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp39-cp39-manylinux2010_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp39-cp39-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 831.9 kB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp39-cp39-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 7e969a4342ef1c55c39f01805d6b330632fe56f001e49b0b4715cf633f839075
MD5 ab55b35b9c759327d4f27eeb43cd9ace
BLAKE2b-256 9a9fd539e895bec035387e7fe1fb85a5dc51bb822e6014baa7fd12469d75208f

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp38-cp38-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 853.7 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c89ad095f5f68eb1814598ffd6a7ccec749395934bc6407ae7050450141eb648
MD5 88830b7760fbd7195829dbebef13f8d3
BLAKE2b-256 58c9f6d7db606a6283cd28fca27b5a8d2f771b5c7b1fd5fdb3310a08dcd50407

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp38-cp38-manylinux2010_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 853.4 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 71707c20b3c605c3fc36b29081bdef61bd81801d9acb8c6346d50c18436da48b
MD5 f5dbdd3c4e9b81eb363f5bb56a1738c2
BLAKE2b-256 323cf413a4628f4c75285ce17b9f8d0a3ac19920058c3bca237576919e65f09e

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp37-cp37m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 825.9 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 7ab506e871fa034544041b41b24868ea820eddab8e6c20db49374f4e46a93c17
MD5 11e600942c12af87536b02e3eb0b77a3
BLAKE2b-256 19bf584a00c65ea269d360d2558f826ad18a92769fde3ed284a2c1fb758bf28f

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp37-cp37m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 826.0 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 92cbc5f10c14f2c26717761663e28350ef12ee6cf44708a9ffe232f40c7c912b
MD5 70c6988fb824a753be8ab87cae0d0611
BLAKE2b-256 154645e960dc4e668bb322d58469391c71a62384e7e6395aa7b21165bc2c1790

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp36-cp36m-manylinux2014_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 822.5 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 4f2938a4f307d56abf180fcf82ff05264bace2edcc27e8c3425d298827ad1c22
MD5 dfabee2634a31cc15d5f4ef177691541
BLAKE2b-256 c2a2f01666cda52ae82526ec05eb02fad4b3172cdd53115ad7c9b7ef2fd77912

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.2.0-cp36-cp36m-manylinux2010_x86_64.whl.

File metadata

  • Download URL: pymor-2020.2.0-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 822.2 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.1.1 pkginfo/1.6.1 requests/2.25.0 setuptools/44.0.0 requests-toolbelt/0.9.1 tqdm/4.54.1 CPython/3.8.6

File hashes

Hashes for pymor-2020.2.0-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 17be4849573e713b8616137cdb382819e252e10bc76214a232711b8986f1d260
MD5 89ffa1ae16f704f2e9a3b4e175dc0ee3
BLAKE2b-256 fab69a03060b449a6976545fc6f2081632bc27d02489e4b199d550dc3a589b94

See more details on using hashes here.

Provenance

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page