Skip to main content

No project description provided

Project description

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

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 9.0.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 on our mailing list), so you might prefer to install pyMOR from the current release branch:

pip install git+https://github.com/pymor/pymor@2020.1.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 at Read the Docs 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).

Setting up an Environment for pyMOR Development

If you already installed a pyMOR release version, please uninstall it

pip uninstall pyMOR

Then, clone the pyMOR git repository using

git clone https://github.com/pymor/pymor $PYMOR_SOURCE_DIR
cd $PYMOR_SOURCE_DIR

and, optionally, switch to the branch you are interested in, e.g.

git checkout 2020.1.x

Then, make an editable installation of pyMOR with

pip install -e .[full]

Tests

pyMOR uses pytest for unit testing. To run the test suite, simply execute make test in the base directory of the pyMOR repository. This will run the pytest suite with the default hypothesis profile "dev". For available profiles see src/pymortests/conftest.py. A profile is selected by running make PYMOR_HYPOTHESIS_PROFILE=PROFILE_NAME test. If docker is available, use make PYMOR_HYPOTHESIS_PROFILE=PROFILE_NAME docker_test to execute the test suite in the same environment as on pyMOR's CI infrastructure. Additional customization points are listed at the top of the Makefile. Run make full-test which will also enable pyflakes and pep8 checks.

All tests are contained within the src/pymortests directory and can be run individually by executing py.test src/pymortests/the_module.py.

Contact

Should you have any questions regarding pyMOR or wish to contribute, do not hestitate to contact us via our development mailing list:

http://listserv.uni-muenster.de/mailman/listinfo/pymor-dev

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

Uploaded Source

Built Distributions

pymor-2020.1.2-cp38-cp38-manylinux2014_x86_64.whl (815.0 kB view details)

Uploaded CPython 3.8

pymor-2020.1.2-cp38-cp38-manylinux2010_x86_64.whl (835.6 kB view details)

Uploaded CPython 3.8 manylinux: glibc 2.12+ x86-64

pymor-2020.1.2-cp38-cp38-manylinux1_x86_64.whl (758.5 kB view details)

Uploaded CPython 3.8

pymor-2020.1.2-cp37-cp37m-manylinux2014_x86_64.whl (793.8 kB view details)

Uploaded CPython 3.7m

pymor-2020.1.2-cp37-cp37m-manylinux2010_x86_64.whl (808.1 kB view details)

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

pymor-2020.1.2-cp37-cp37m-manylinux1_x86_64.whl (749.3 kB view details)

Uploaded CPython 3.7m

pymor-2020.1.2-cp36-cp36m-manylinux2014_x86_64.whl (790.0 kB view details)

Uploaded CPython 3.6m

pymor-2020.1.2-cp36-cp36m-manylinux2010_x86_64.whl (804.3 kB view details)

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

pymor-2020.1.2-cp36-cp36m-manylinux1_x86_64.whl (746.6 kB view details)

Uploaded CPython 3.6m

File details

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

File metadata

  • Download URL: pymor-2020.1.2.tar.gz
  • Upload date:
  • Size: 761.9 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2.tar.gz
Algorithm Hash digest
SHA256 afeae05bb77a4e75235745bb5597f48f976d9ef1ad3d091beaa722c596bf6af3
MD5 88b2add1c595fa222134f01bdd15f675
BLAKE2b-256 10bdbe8a8d6b2f7008edd879a1b5d47b4d3f370cd8fcc955de2285a0889369f6

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.1.2-cp38-cp38-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 815.0 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp38-cp38-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 e5d4e887da8719cf31d28380fa51675b5b0d20cdefb3cca0c31ffe389df6817a
MD5 274fda5fbdca11a3b7f11818bf95e51e
BLAKE2b-256 c6c364652d08d3b3027f6ae1b8a4b0b7e1db76b4140bd9787ae992b2d22a8e38

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.1.2-cp38-cp38-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 835.6 kB
  • Tags: CPython 3.8, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp38-cp38-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 a4f503b3acd3c4ac488f2d352fa4c2ba6378c9273b11564de2a0ac14c47bd2d0
MD5 98c5e1cb6c1e3f9345e23d07ee1a79e0
BLAKE2b-256 274484b220036db0ec4ff685bcc79ad602b9ecc77d78266828401c6a3fc863a6

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.1.2-cp38-cp38-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymor-2020.1.2-cp38-cp38-manylinux1_x86_64.whl
  • Upload date:
  • Size: 758.5 kB
  • Tags: CPython 3.8
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp38-cp38-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 b48385a59ae9509912d1368348cffa1cd3b826a82581d6abbe4aee5d877a7be1
MD5 937f5bea96d83fdb5da57c732cfcd081
BLAKE2b-256 9947f44b7b34be912afc69667068f810d38814ef9c357ffd89d572f43d1323d8

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.1.2-cp37-cp37m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 793.8 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp37-cp37m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 f6437e85059267e4c09322fab8aaaf9f2706c6eb9aecfdd044cba502d83e33c5
MD5 a3158f383e999ae0b0a5f6410427f2c3
BLAKE2b-256 8b24cd82242456c0713bdbb01bdcf075a1a10a348a8cfca6fb9f3855e94096cb

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.1.2-cp37-cp37m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 808.1 kB
  • Tags: CPython 3.7m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp37-cp37m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 8d7b9b40c3f49053c6522dcb545e3b29e87965d6f4e822243b198f36ac7a6890
MD5 8e1920d4183d5decce04f938e8ae5abc
BLAKE2b-256 14a128b3a9a77a974c160ff47d47f0322f2236872fb95dad44e6b5ed3b5d3029

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.1.2-cp37-cp37m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymor-2020.1.2-cp37-cp37m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 749.3 kB
  • Tags: CPython 3.7m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp37-cp37m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 6e77347b6bd86c73fd5fca2073673e67fad0a76bc3f9f2a6f4b26d473a400068
MD5 666168b7f869fa59021dfb10b2c688df
BLAKE2b-256 09ef343cc95c2a222f84ccfb9f8f455d158225b07bade9a342747d5ab7755043

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.1.2-cp36-cp36m-manylinux2014_x86_64.whl
  • Upload date:
  • Size: 790.0 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp36-cp36m-manylinux2014_x86_64.whl
Algorithm Hash digest
SHA256 bf7fbd27cef732c84ba51fba1c7fd506cbcfd3c87857c499d45641aa6ac9213f
MD5 2c9b0e319f0fae38af6082e57562e9cf
BLAKE2b-256 a54e0f0bc4f834f87a2d51e82e7087d9352ee78cd354a299151fc680b61cf46c

See more details on using hashes here.

Provenance

File details

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

File metadata

  • Download URL: pymor-2020.1.2-cp36-cp36m-manylinux2010_x86_64.whl
  • Upload date:
  • Size: 804.3 kB
  • Tags: CPython 3.6m, manylinux: glibc 2.12+ x86-64
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp36-cp36m-manylinux2010_x86_64.whl
Algorithm Hash digest
SHA256 78e4294f17c2a16dbeb9b6b30018269873ac3d17dea8fd5238cb9e6cbc2e9845
MD5 bc005375d4c7f0bad8940f40cf66e822
BLAKE2b-256 a1b51d8fa9d7e6727509fa50e3cc18eb8466db3eab8caa6ece49ddae2bdbf5f4

See more details on using hashes here.

Provenance

File details

Details for the file pymor-2020.1.2-cp36-cp36m-manylinux1_x86_64.whl.

File metadata

  • Download URL: pymor-2020.1.2-cp36-cp36m-manylinux1_x86_64.whl
  • Upload date:
  • Size: 746.6 kB
  • Tags: CPython 3.6m
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/3.2.0 pkginfo/1.5.0.1 requests/2.24.0 setuptools/46.1.3 requests-toolbelt/0.9.1 tqdm/4.48.2 CPython/3.8.2

File hashes

Hashes for pymor-2020.1.2-cp36-cp36m-manylinux1_x86_64.whl
Algorithm Hash digest
SHA256 e6677c1f9f8f8eaae90954ee2ebbe9d75eb116dda93d45d75b098ddb189300de
MD5 eeae2ceab1f8ee72bf25e148332939e8
BLAKE2b-256 1f872690c810bbfae1e5779c31c00c8fe9bdad7605edbb0adf6f25820b441a42

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