{"id":13595019,"url":"https://github.com/pymor/pymor","last_synced_at":"2026-01-12T10:53:51.837Z","repository":{"id":7848822,"uuid":"9220688","full_name":"pymor/pymor","owner":"pymor","description":"pyMOR - Model Order Reduction with Python","archived":false,"fork":false,"pushed_at":"2025-12-24T09:08:04.000Z","size":43731,"stargazers_count":338,"open_issues_count":119,"forks_count":118,"subscribers_count":15,"default_branch":"main","last_synced_at":"2026-01-02T20:53:09.258Z","etag":null,"topics":["control-systems","data-driven","dealii","dune","empirical-interpolation","fenics","model-order-reduction","model-reduction","ngsolve","nonlinear-dynamics","parametric","python","reduced-basis","state-space"],"latest_commit_sha":null,"homepage":"https://pymor.org","language":"Python","has_issues":true,"has_wiki":null,"has_pages":null,"mirror_url":null,"source_name":null,"license":"other","status":null,"scm":"git","pull_requests_enabled":true,"icon_url":"https://github.com/pymor.png","metadata":{"files":{"readme":"README.md","changelog":null,"contributing":"CONTRIBUTING.md","funding":null,"license":"LICENSE.txt","code_of_conduct":"CODE_OF_CONDUCT.md","threat_model":null,"audit":null,"citation":"CITATION.cff","codeowners":null,"security":".github/SECURITY.md","support":null,"governance":null,"roadmap":null,"authors":"AUTHORS.md","dei":null,"publiccode":null,"codemeta":null,"zenodo":null,"notice":null,"maintainers":null,"copyright":null,"agents":null,"dco":null,"cla":null}},"created_at":"2013-04-04T14:58:44.000Z","updated_at":"2025-12-23T09:49:29.000Z","dependencies_parsed_at":"2023-12-12T11:39:44.074Z","dependency_job_id":"e077b1fd-ea6c-4ac7-96ec-bb4751ad1e06","html_url":"https://github.com/pymor/pymor","commit_stats":{"total_commits":8239,"total_committers":32,"mean_commits":257.46875,"dds":0.566330865396286,"last_synced_commit":"29a9486b02fe504270bb73ba9133a5a92492a325"},"previous_names":[],"tags_count":55,"template":false,"template_full_name":null,"purl":"pkg:github/pymor/pymor","repository_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pymor%2Fpymor","tags_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pymor%2Fpymor/tags","releases_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pymor%2Fpymor/releases","manifests_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pymor%2Fpymor/manifests","owner_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners/pymor","download_url":"https://codeload.github.com/pymor/pymor/tar.gz/refs/heads/main","sbom_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories/pymor%2Fpymor/sbom","scorecard":null,"host":{"name":"GitHub","url":"https://github.com","kind":"github","repositories_count":286080680,"owners_count":28338850,"icon_url":"https://github.com/github.png","version":null,"created_at":"2022-05-30T11:31:42.601Z","updated_at":"2026-01-12T10:40:25.642Z","status":"ssl_error","status_checked_at":"2026-01-12T10:39:27.820Z","response_time":98,"last_error":"SSL_connect returned=1 errno=0 peeraddr=140.82.121.5:443 state=error: unexpected eof while reading","robots_txt_status":"success","robots_txt_updated_at":"2025-07-24T06:49:26.215Z","robots_txt_url":"https://github.com/robots.txt","online":false,"can_crawl_api":true,"host_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub","repositories_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repositories","repository_names_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/repository_names","owners_url":"https://repos.ecosyste.ms/api/v1/hosts/GitHub/owners"}},"keywords":["control-systems","data-driven","dealii","dune","empirical-interpolation","fenics","model-order-reduction","model-reduction","ngsolve","nonlinear-dynamics","parametric","python","reduced-basis","state-space"],"created_at":"2024-08-01T16:01:42.523Z","updated_at":"2026-01-12T10:53:51.833Z","avatar_url":"https://github.com/pymor.png","language":"Python","readme":"![pyMOR Logo](./logo/pymor_logo.svg)\n\n[![PyPI](https://img.shields.io/pypi/pyversions/pymor.svg)](https://pypi.python.org/pypi/pymor)\n[![PyPI](https://img.shields.io/pypi/v/pymor.svg)](https://pypi.python.org/pypi/pymor)\n[![Docs](https://img.shields.io/endpoint?url=https%3A%2F%2Fdocs.pymor.org%2Fbadge.json)](https://docs.pymor.org/)\n[![DOI](https://zenodo.org/badge/9220688.svg)](https://zenodo.org/badge/latestdoi/9220688)\n[![GitLab Pipeline](https://zivgitlab.uni-muenster.de/pymor/pymor/badges/main/pipeline.svg)](https://zivgitlab.uni-muenster.de/pymor/pymor/commits/main)\n[![Conda Tests](https://github.com/pymor/pymor/actions/workflows/conda_tests.yml/badge.svg)](https://github.com/pymor/pymor/actions/workflows/conda_tests.yml)\n[![codecov](https://codecov.io/gh/pymor/pymor/branch/main/graph/badge.svg)](https://codecov.io/gh/pymor/pymor)\n[![pre-commit.ci status](https://results.pre-commit.ci/badge/github/pymor/pymor/main.svg)](https://results.pre-commit.ci/latest/github/pymor/pymor/main)\n[![Affiliated with NumFOCUS](https://camo.githubusercontent.com/a0f197cee66ccd8ed498cf64e9f3f384c78a072fe1e65bada8d3015356ac7599/68747470733a2f2f696d672e736869656c64732e696f2f62616467652f4e756d464f4355532d616666696c696174656425323070726f6a6563742d6f72616e67652e7376673f7374796c653d666c617426636f6c6f72413d45313532334426636f6c6f72423d303037443841)](https://numfocus.org/sponsored-projects/affiliated-projects)\n\n# pyMOR - Model Order Reduction with Python\n\npyMOR is a software library for building\n[model order reduction](https://modelreduction.org/)\napplications with the Python programming language.\nAll algorithms in pyMOR are formulated in terms of abstract interfaces,\nallowing generic implementations to work with different backends,\nfrom NumPy/SciPy to external partial differential equation solver packages.\n\n## Features\n\n* Reduced basis methods for parametric linear and non-linear problems.\n* System-theoretic methods for linear time-invariant systems.\n* Neural network-based methods for parametric problems.\n* Proper orthogonal decomposition.\n* Dynamic mode decomposition.\n* Rational interpolation of data (Loewner, AAA).\n* Numerical linear algebra (Gram-Schmidt, time-stepping, ...).\n* Pure Python implementations of finite element and finite volume\n  discretizations using the NumPy/SciPy scientific computing stack.\n\n## License\n\npyMOR is licensed under BSD-2-clause.\nSee [LICENSE.txt](LICENSE.txt).\n\n## Citing\n\nIf you use pyMOR for academic work, please consider citing our\n[publication](https://epubs.siam.org/doi/10.1137/15M1026614):\n\n    R. Milk, S. Rave, F. Schindler\n    pyMOR - Generic Algorithms and Interfaces for Model Order Reduction\n    SIAM J. Sci. Comput., 38(5), pp. S194--S216, 2016\n\n## Installation via pip\n\npyMOR can easily be installed using Python package managers like\n[pip](https://pip.pypa.io/en/stable/).\nWe recommend installation of pyMOR into a\n[virtual environment](https://docs.python.org/3/tutorial/venv.html)\nto avoid dependency conflicts.\n\nFor an installation with minimal dependencies, run\n\n    pip install pymor\n\nSince most included demo scripts require Qt bindings such as `pyside6` to function,\nwe recommend install pyMOR with the `gui` extra:\n\n    pip install 'pymor[gui]'\n\nThe following installs the latest release of pyMOR on your system with most\noptional dependencies:\n\n    pip install 'pymor[full]'\n\nTo obtain an environment with the exact same package versions used in our\nLinux continuous integration tests, you can use the\n[requirements-ci-current.txt](https://raw.githubusercontent.com/pymor/pymor/main/requirements-ci-current.txt),\nfile from the pyMOR repository\n\n    pip install -r requirements-ci-current.txt\n    pip install pymor\n\nIf you are using a stable release, you should download the file from the\ncorresponding release branch of the repository.\n\n## Additional dependencies\n\nThere are some optional packages not included with `pymor[full]`\nbecause they need additional setup on your system:\n\n* [mpi4py](https://mpi4py.readthedocs.io/en/stable/mpi4py.html):\n  support of MPI distributed models and parallelization of greedy\n  algorithms (requires MPI development headers and a C compiler):\n\n      pip install mpi4py\n\n* [Slycot](https://github.com/python-control/Slycot):\n  dense matrix equation solvers for system-theoretic methods and\n  H-infinity norm calculation (requires OpenBLAS headers and a\n  Fortran compiler):\n\n      pip install slycot\n\n  Note that building Slycot might fail for the following reasons:\n\n  * The Slycot package contains a cmake check which fails when it\n    detects multiply NumPy include directories. This will cause the\n    build to fail in venvs with any Python interpreter that has NumPy\n    globally installed.\n    To circumvent this problem, use another Python interpreter. If\n    you do not want to build CPython yourself, you can use\n    [pyenv](https://github.com/pyenv/pyenv),\n    [uv](https://github.com/astral-sh/uv) or\n    [mise-en-place](https://mise.jdx.dev/)\n    to easily install another interpreter.\n  * Slycot's build environment contains `numpy\u003e=2`. However,\n    scikit-builds's `FindF2PY.cmake`\n    [will select any globally installed f2py3 executable](https://github.com/scikit-build/scikit-build/issues/449)\n    to generate the Fortran wrapper code.\n    On most systems, an older NumPy version is installed, whose\n    f2py will generate incorrect wrapper code for `numpy\u003e=2`.\n    To mitigate this issue, install `numpy\u003e=2` into your venv\n    and link `f2py3` to `f2py` its `/bin` directory.\n  * Building Slycot on Windows is challenging. We recommend using\n    conda-forge packages instead. If you do not want to install\n    the pyMOR conda-forge package, you can also `pip` install pyMOR\n    into an existing conda environment.\n\n  If you are on Linux and don't want to build Slycot yourself, you\n  can try our experimental\n  [manylinux wheels for Slycot](https://github.com/pymor/slycot-wheels/releases).\n\n## Installation via conda\n\npyMOR is packaged in [conda-forge](https://conda-forge.org/) and can be installed\nby running\n\n    conda install -c conda-forge pymor\n\nThis will install pyMOR with its core dependencies into the current active conda\nenvironment. To replicate an environment with most optional dependencies, which\nis also used in our continuous integration tests, you can use the\n[conda-linux-64.lock](https://raw.githubusercontent.com/pymor/pymor/main/conda-linux-64.lock),\n[conda-osx-64.lock](https://raw.githubusercontent.com/pymor/pymor/main/conda-osx-64.lock),\n[conda-win-64.lock](https://raw.githubusercontent.com/pymor/pymor/main/conda-win-64.lock)\nlock files from the pyMOR repository:\n\n    conda create -n pymorenv --file ./conda-{linux,osx,win}-64.lock\n    conda activate pymorenv\n    conda install pymor\n\n## Documentation\n\nDocumentation is available [online](https://docs.pymor.org/).\nWe recommend starting with\n[getting started](https://docs.pymor.org/latest/getting_started.html),\n[tutorials](https://docs.pymor.org/latest/tutorials.html), and\n[technical overview](https://docs.pymor.org/latest/technical_overview.html).\n\nTo build the documentation locally,\nrun the following from inside the root directory of the pyMOR source tree:\n\n    make docs\n\nThis will generate HTML documentation in `docs/_build/html`.\n\n## External PDE Solvers\n\npyMOR has been designed with easy integration of external PDE solvers in mind.\n\nWe provide bindings for the following solver libraries:\n\n* [FEniCS](https://fenicsproject.org)\n\n    MPI-compatible wrapper classes for dolfin linear algebra data structures\n    and nonlinear operators are shipped with pyMOR (`pymor.bindings.fenics`).\n    For an example see `pymordemos.thermalblock`, `pymordemos.thermalblock_simple`.\n    The bindings are tested using FEniCS version 2019.1.0.\n\n* [FEniCSx](https://fenicsproject.org)\n\n    Wrapper classes for dolfinx linear algebra data structures and nonlinear\n    operators are shipped with pyMOR (`pymor.bindings.fenicsx`).\n    For an example see `pymordemos.thermalblock_simple`.\n    The bindings are tested using FEniCSx 0.10.\n\n* [deal.II](https://dealii.org)\n\n    Python bindings and pyMOR wrapper classes can be found\n    [here](https://github.com/pymor/pymor-deal.II).\n\n* [NGSolve](https://ngsolve.org)\n\n    Wrapper classes for the NGSolve finite element library are shipped with pyMOR\n    (`pymor.bindings.ngsolve`).\n    For an example see `pymordemos.thermalblock_simple`.\n    It is tested using NGSolve version v6.2.2104.\n\nA simple example for direct integration of pyMOR with a custom solver\ncan be found in `pymordemos.minimal_cpp_demo`.\n\nAn alternative approach is to import system matrices from file and use\n`scipy.sparse`-based solvers.\n\n## Environments for pyMOR Development and Tests\n\nPlease see the [Developer Documentation](https://docs.pymor.org/latest/developer_docs.html).\n\n## Contact\n\nShould you have any questions regarding pyMOR or wish to contribute,\ndo not hesitate to send us an email at\n\n    main.developers@pymor.org\n","funding_links":[],"categories":["Python"],"sub_categories":[],"project_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpymor%2Fpymor","html_url":"https://awesome.ecosyste.ms/projects/github.com%2Fpymor%2Fpymor","lists_url":"https://awesome.ecosyste.ms/api/v1/projects/github.com%2Fpymor%2Fpymor/lists"}