Skip to main content

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

The following optional packages are 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
    

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.2606.

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

Release files for pymor 2026.1.1

For a detailed explanation of source distributions (sdists) and built distributions (wheels), please see the package formats documentation.

Source distribution (sdist)

Source distribution for pymor 2026.1.1
File Size Uploaded
pymor-2026.1.1.tar.gz 845.9 kB Details

Built distribution (wheel)

Table of built distributions (wheels) for pymor 2026.1.1
File Interpreter ABI Platform
pymor-2026.1.1-py3-none-any.whl Python 3 none any Details

Total release size: 1.5 MB

Release files / pymor-2026.1.1.tar.gz

Download URL pymor-2026.1.1.tar.gz
Size 845.9 kB
Tags Source
SHA-256 checksum
How to use checksums
3c13192c1453b1db1797cc67ef9938042dca48e2bcae6c828c36e925c55b0da7
BLAKE2b-256 checksum
How to use checksums
5262cf8f313c1f4443b6404a1075a207cb96e8ea471bfa4f7750db86bfaab0ed
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.18.0 {"ci":null,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.12.3"},"installer":{"name":"hatch","version":"1.18.0"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.12.3","system":{"name":"Linux","release":"7.0.0-31-generic"}} HTTPX2/2.12.0

Release files / pymor-2026.1.1-py3-none-any.whl

Download URL pymor-2026.1.1-py3-none-any.whl
Size 646.6 kB
Tags Python 3
SHA-256 checksum
How to use checksums
64af16f4d628d1a6d882627f02f07526fd99e798e777a97083bf7457ac763c92
BLAKE2b-256 checksum
How to use checksums
2e55739d398a76c2c49e2b03dee672718278bbd5c9f0e49e88b7143f3c0514c4
Upload date
Uploaded using Trusted Publishing?
What is trusted publishing?
No
Uploaded via Hatch/1.18.0 {"ci":null,"cpu":"x86_64","distro":{"id":"noble","libc":{"lib":"glibc","version":"2.39"},"name":"Ubuntu","version":"24.04"},"implementation":{"name":"CPython","version":"3.12.3"},"installer":{"name":"hatch","version":"1.18.0"},"openssl_version":"OpenSSL 3.0.13 30 Jan 2024","python":"3.12.3","system":{"name":"Linux","release":"7.0.0-31-generic"}} HTTPX2/2.12.0

Release history Release notifications | RSS feed

This release

2026.1.1 This release

2 release files

0.5.2

4 release files

0.5.1

4 release files

0.4.2

1 release file

0.4.1

1 release file

0.4.0

1 release file

0.3.2

1 release file

0.3.1

1 release file

0.3.0

1 release file

0.2.2

1 release file

0.2.1

1 release file

0.2.0

1 release file

Anthropic, PBC Visionary sponsor Bloomberg Visionary sponsor Hudson River Trading Visionary sponsor Meta Visionary sponsor NVIDIA Visionary sponsor Microsoft Sustainability sponsor Depot Continuous Integration AWS Cloud computing and Security Sponsor Datadog Monitoring Fastly CDN Google Download Analytics Sentry Error logging StatusPage Status page