Skip to main content

Library for building model order reduction applications with Python

Project description

pyMOR Logo

PyPI PyPI Docs DOI GitLab Pipeline Conda Tests codecov pre-commit.ci status Affiliated with NumFOCUS

pyMOR - Model Order Reduction with Python

pyMOR is a software library for building model order reduction applications with the Python programming language. All algorithms in pyMOR are formulated in terms of abstract interfaces, allowing generic implementations to work with different backends, from NumPy/SciPy to external partial differential equation solver packages.

Features

  • Reduced basis methods for parametric linear and non-linear problems.
  • System-theoretic methods for linear time-invariant systems.
  • Neural network-based methods for parametric problems.
  • Proper orthogonal decomposition.
  • Dynamic mode decomposition.
  • Rational interpolation of data (Loewner, AAA).
  • Numerical linear algebra (Gram-Schmidt, time-stepping, ...).
  • Pure Python implementations of finite element and finite volume discretizations using the NumPy/SciPy scientific computing stack.

License

pyMOR is licensed under BSD-2-clause. See LICENSE.txt.

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

pyMOR can easily be installed using Python package managers like pip. We recommend installation of pyMOR into a virtual environment to avoid dependency conflicts.

For an installation with minimal dependencies, run

pip install pymor

Since most included demo scripts require Qt bindings such as pyside6 to function, we recommend install pyMOR with the gui extra:

pip install 'pymor[gui]'

The following installs the latest release of pyMOR on your system with most optional dependencies:

pip install 'pymor[full]'

To obtain an environment with the exact same package versions used in our Linux continuous integration tests, you can use the requirements-ci-current.txt, file from the pyMOR repository

pip install -r requirements-ci-current.txt
pip install pymor

If you are using a stable release, you should download the file from the corresponding release branch of the repository.

Additional dependencies

There are some optional packages not included with pymor[full] because they need additional setup on your system:

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

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

    pip install slycot
    

    Note that building Slycot might fail for the following reasons:

    • The Slycot package contains a cmake check which fails when it detects multiply NumPy include directories. This will cause the build to fail in venvs with any Python interpreter that has NumPy globally installed. To circumvent this problem, use another Python interpreter. If you do not want to build CPython yourself, you can use pyenv, uv or mise-en-place to easily install another interpreter.
    • Slycot's build environment contains numpy>=2. However, scikit-builds's FindF2PY.cmake will select any globally installed f2py3 executable to generate the Fortran wrapper code. On most systems, an older NumPy version is installed, whose f2py will generate incorrect wrapper code for numpy>=2. To mitigate this issue, install numpy>=2 into your venv and link f2py3 to f2py its /bin directory.
    • Building Slycot on Windows is challenging. We recommend using conda-forge packages instead. If you do not want to install the pyMOR conda-forge package, you can also pip install pyMOR into an existing conda environment.

    If you are on Linux and don't want to build Slycot yourself, you can try our experimental manylinux wheels for Slycot.

Installation via conda

pyMOR is packaged in conda-forge and can be installed by running

conda install -c conda-forge pymor

This will install pyMOR with its core dependencies into the current active conda environment. To replicate an environment with most optional dependencies, which is also used in our continuous integration tests, you can use the conda-linux-64.lock, conda-osx-64.lock, conda-win-64.lock lock files from the pyMOR repository:

conda create -n pymorenv --file ./conda-{linux,osx,win}-64.lock
conda activate pymorenv
conda install pymor

Documentation

Documentation is available online. We recommend starting with getting started, tutorials, and technical overview.

To build the documentation locally, run the following from inside the root directory of the pyMOR source tree:

make docs

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

External PDE Solvers

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

We provide bindings for the following solver libraries:

  • FEniCS

    MPI-compatible wrapper classes for dolfin linear algebra data structures and nonlinear operators are shipped with pyMOR (pymor.bindings.fenics). For an example see pymordemos.thermalblock, pymordemos.thermalblock_simple. The bindings are tested using FEniCS version 2019.1.0.

  • FEniCSx

    Wrapper classes for dolfinx linear algebra data structures and nonlinear operators are shipped with pyMOR (pymor.bindings.fenicsx). For an example see pymordemos.thermalblock_simple. The bindings are tested using FEniCSx 0.10.

  • 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 NGSolve version v6.2.2104.

A simple example for direct integration of pyMOR with a custom solver can be found in pymordemos.minimal_cpp_demo.

An alternative approach is to import system matrices from file and use scipy.sparse-based solvers.

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 hesitate to send us an email at

main.developers@pymor.org

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

Uploaded Source

Built Distribution

If you're not sure about the file name format, learn more about wheel file names.

pymor-2025.2.2-py3-none-any.whl (620.9 kB view details)

Uploaded Python 3

File details

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

File metadata

  • Download URL: pymor-2025.2.2.tar.gz
  • Upload date:
  • Size: 826.0 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"x86_64","distro":{"id":"trixie","libc":{"lib":"glibc","version":"2.41"},"name":"Debian GNU/Linux","version":"13"},"implementation":{"name":"CPython","version":"3.14.5"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.5.6 7 Apr 2026","python":"3.14.5","system":{"name":"Linux","release":"6.12.90+deb13-amd64"}} HTTPX2/2.3.0

File hashes

Hashes for pymor-2025.2.2.tar.gz
Algorithm Hash digest
SHA256 48d6e556675eb867ff2465a97eddbd7d5b204e05aae5a6a5c0711d2abc01a421
MD5 fd940e0751ebe536f35734d2193de787
BLAKE2b-256 9809d12ad674b47a8d0248c90332c20327b9961af8618173b5866502a110c56d

See more details on using hashes here.

File details

Details for the file pymor-2025.2.2-py3-none-any.whl.

File metadata

  • Download URL: pymor-2025.2.2-py3-none-any.whl
  • Upload date:
  • Size: 620.9 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: Hatch/1.17.0 {"ci":null,"cpu":"x86_64","distro":{"id":"trixie","libc":{"lib":"glibc","version":"2.41"},"name":"Debian GNU/Linux","version":"13"},"implementation":{"name":"CPython","version":"3.14.5"},"installer":{"name":"hatch","version":"1.17.0"},"openssl_version":"OpenSSL 3.5.6 7 Apr 2026","python":"3.14.5","system":{"name":"Linux","release":"6.12.90+deb13-amd64"}} HTTPX2/2.3.0

File hashes

Hashes for pymor-2025.2.2-py3-none-any.whl
Algorithm Hash digest
SHA256 56d158445aa0d9d1afe7cbc2b65826f11bd5764f72d3708bac6f840acca1aa8b
MD5 1fd537aa5a80a94b8ac668e3e34d9b1d
BLAKE2b-256 ae4cbb5eaef89a7a966dc1a9eaa06d234c96e087fc081494cd27f8f3131a7c04

See more details on using hashes here.

Supported by

Image AWS Cloud computing and Security Sponsor Image Datadog Monitoring Image Depot Continuous Integration Image Fastly CDN Image Google Download Analytics Image Pingdom Monitoring Image Sentry Error logging Image StatusPage Status page