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

Uploaded Source

Built Distributions

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

Uploaded CPython 3.9

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

Uploaded CPython 3.9 manylinux: glibc 2.12+ x86-64

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

Uploaded CPython 3.8

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

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

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

Uploaded CPython 3.7m

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

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

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

Uploaded CPython 3.6m

pymor-2020.2.2rc1-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.2rc1.tar.gz.

File metadata

  • Download URL: pymor-2020.2.2rc1.tar.gz
  • Upload date:
  • Size: 784.6 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.2rc1.tar.gz
Algorithm Hash digest
SHA256 6f4f2e374e6f3b10007986c293a4c92209b77798fe64c171c5c0bd420770858b
MD5 1890493b940f7cbc24886758ece48a7f
BLAKE2b-256 c6f371ac331adb87ef2dcab7e4acf38de59c711773cab7b653acca9e6053568c

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-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.2rc1-cp39-cp39-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 5698f0b0c22c92c9e3c12b1bd75229479311d4b4cef8e47b10d331969f7e2c85
MD5 9f979bedaa572b8fd2e7517bd41ebbcd
BLAKE2b-256 44701b37af7b003fcb7524b159c680721eba13372dbb82d7f6a591248e89ba58

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-cp39-cp39-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 834.6 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.2rc1-cp39-cp39-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 def27f87d8fb460263626e316fd1e76e94b0b730a66e85bb3fed2d57529d000c
MD5 cd4bd13708d0cf5f233a43dd8ad5352a
BLAKE2b-256 43fb9aaf1bf1b339a26aeb67dcab068915870063eaa9e05b1f908db2aa978f7a

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 854.2 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.2rc1-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 6d2ff8a90606460a675f720f53f8055472f3e49906dc5f03e38756a87f4144ff
MD5 7db80e2ad730f0e2d82891cfad42847a
BLAKE2b-256 c78afa13012d2955d833e77a0e3632e98350a8e0e077e520b94559bd9227b379

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-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.2rc1-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c4a6119a5f4eddfb554e2d5d1a3ad14e319e121a6ef2b74f4e7e519c82b0e007
MD5 58a53094df3d975328893947adc9a7f6
BLAKE2b-256 e53b1011d77721feaeba09673a00304332e8acaa9e1a649f6e649c700eee1391

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-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.2rc1-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f30b9fd258113e21dd0924e528aa2868faf04a72258bdefdae14e6f98944b417
MD5 9fbae69b2ce1197dc54bc8b5c344682a
BLAKE2b-256 58df7b6533e9f9af6d91d03262ec069e4df4ad0ba424d566088667958ce2ca01

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 826.4 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.2rc1-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 084b6f891f41b58c3e56e968d3efdb98ad5e66075545267bda8eac3f00eeb348
MD5 f36ebbd2bf45c4100bb3fa2e278f8b5d
BLAKE2b-256 e408c894b9e5aebcf616d53ee4b3596a1c3d08c4056067ed6965ebeec55259fc

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-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.2rc1-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 69d546e28bab931bceb5b05c27008a61c5a8c068c85687c1b6b241b01eaffbfb
MD5 6242201c30b1380e9de0916379c0816f
BLAKE2b-256 43445139b7e82df1357240993738b0bfb95362be2f2fc4c93322393f96bb6427

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.2.2rc1-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.2rc1-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 c86d07732527c2ef46ccc7d3176803ee8ec3f56c03c7501957fb0776a26d4eb6
MD5 5a44c67db99d7409745165a78be21e1e
BLAKE2b-256 53a79a96b2071b071f880429c1112b290e60e3bf045ca9ba1c2af013448e66c9

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