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.2.tar.gz (784.7 kB view details)

Uploaded Source

Built Distributions

pymor-2020.2.2-cp39-cp39-manylinux2014_x86_64.whl (833.8 kB view details)

Uploaded CPython 3.9

pymor-2020.2.2-cp39-cp39-manylinux2010_x86_64.whl (834.5 kB view details)

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

pymor-2020.2.2-cp38-cp38-manylinux2014_x86_64.whl (854.1 kB view details)

Uploaded CPython 3.8

pymor-2020.2.2-cp38-cp38-manylinux2010_x86_64.whl (854.0 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

pymor-2020.2.2-cp37-cp37m-manylinux2014_x86_64.whl (825.8 kB view details)

Uploaded CPython 3.7m

pymor-2020.2.2-cp37-cp37m-manylinux2010_x86_64.whl (826.3 kB view details)

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

pymor-2020.2.2-cp36-cp36m-manylinux2014_x86_64.whl (821.7 kB view details)

Uploaded CPython 3.6m

pymor-2020.2.2-cp36-cp36m-manylinux2010_x86_64.whl (821.5 kB view details)

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

File details

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

File metadata

  • Download URL: pymor-2020.2.2.tar.gz
  • Upload date:
  • Size: 784.7 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2.tar.gz
Algorithm Hash digest
SHA256 324fb18d24a6b397536854a761dccd8b7d65c30a8b7b4d3b577f9d75c14b58af
MD5 ba320a20d50cd7f53ff000c1fc81215a
BLAKE2b-256 20c9f29c8cec138d34f039aa44e489379b12674b53a3d6c61dce54eef25bd552

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp39-cp39-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 833.8 kB
  • Tags: CPython 3.9
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 d1b76af9f998d331487cde343bcfd7d26bb2aa67b3b1b2331cf24813e9c5ac27
MD5 489a4f88b20630952123a2c0f60e98bd
BLAKE2b-256 dd00fe1806e57e4e18e9c4eedc628cca1637a73a5b129d108487c0e40a5f4662

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp39-cp39-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 834.5 kB
  • Tags: CPython 3.9, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp39-cp39-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 e0aeec33523f9d2818cb72c0d27390a0b62cb5f70624042fbe8f6e103dce9641
MD5 f1ca5fbbfe9a6ad4590d0c702ed4738f
BLAKE2b-256 dc51f920ef605e573193f0e4fb81a8e4134ba8ceb3d02eba4983d3496ddfb5c8

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 854.1 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 163b307742d689ba1b9744309c2d89b0871e2e780622b81b59ad619a9c8ba8d9
MD5 f9047bac634df0c6fb9a19fa0e533442
BLAKE2b-256 f5280ab1f1d6608a5a4c83cc1c62f4db657b6f11e833314989c25582f77b975d

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 854.0 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 8bd3630efe0d1533a8e4bbfa35e71ad0cd28b90b306ffb7aff854f38d46d2b98
MD5 c203e070891f480f9cc085cf8fd83bdc
BLAKE2b-256 aa81d715f0403f9d276785b725065c5cd2885d3cda42af527491f1c18287a267

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 825.8 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 c66cc3a237f9b078f9cc3725d3790385024d419c439f893c8595e04102161742
MD5 428c0bdb58e8c7053591e9ae6cb9fd0d
BLAKE2b-256 a454266f829f647e9a6ac9493e23f1cf99f63ae7d9bf0bddc79c1565b73a4004

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 826.3 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 51ad6cb5886dfc4c9d599e40aacdf32740a764d811b2ea8001a929766190cdc2
MD5 eb73be909f84bfc73b32575eedd6abcf
BLAKE2b-256 0717566e779d03cab0eb7d9effdae0319c8222d99fbcfda8366f18597ac41783

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 821.7 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 1dc0217a7a9434d7f60ed4ded8fdf33d8b4107dc5ca175dc333c0ace92a846a6
MD5 23bf57c9e60c132f11f03e0307287172
BLAKE2b-256 9c6a00490c0244567499206b954edf2ef1c746093fd0eb471a6d2ae71d87793e

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 821.5 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.4.1 importlib_metadata/4.0.1 pkginfo/1.7.0 requests/2.25.1 requests-toolbelt/0.9.1 tqdm/4.60.0 CPython/3.9.5

File hashes

Hashes for pymor-2020.2.2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c8fbe27661569f14e0c4402b2ccbd13df2f80bf404e9aa729f16862dbd6c0930
MD5 c55f560bada87874c7168abcc6278436
BLAKE2b-256 2778e9d9fa2e94a6bb010b8420ac90fd46f758859369b4ea8b2641efb48011d5

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