Package: pymor
pyMOR - Model Order Reduction with PythonpyMOR is a software library for buildingmodel order reductionapplications 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.FeaturesReduced 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.LicensepyMOR is licensed under BSD-2-clause.
SeeLICENSE.txt.CitingIf you use pyMOR for academic work, please consider citing ourpublication:R. Milk, S. Rave, F. Schindler
pyMOR - Generic Algorithms and Interfaces for Model Order Reduction
SIAM J. Sci. Comput., 38(5), pp. S194--S216, 2016Installation via pipWe recommend installation of pyMOR in avirtual environment.pyMOR can easily be installed with thepipcommand.
Please note that pip versions prior to 21.1 might have problems resolving all
dependencies, so running the following first is recommended:pip install --upgrade pipIf you are not operating in a virtual environment, you can pass the optional--userargument to pip.
pyMOR will then only be installed for your local user, not requiring
administrator privileges.Latest Release (without Optional Dependencies)For an installation with minimal dependencies, runpip install pymorNote that most included demo scripts additionally require Qt bindings such aspyside2to function.
Therefore we recommend install pyMOR with theguiextra:pip install pymor[gui]  # 2023.1 and laterLatest Release (with all Optional Dependencies)The following installs the latest release of pyMOR on your system with most
optional dependencies:pip install pymor[full]There are some optional packages not included withpymor[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 mpi4pySlycot:
dense matrix equation solvers for system-theoretic methods and
H-infinity norm calculation (requires OpenBLAS headers and a
Fortran compiler):pip install slycotLatest Development VersionTo install the latest development version of pyMOR, executepip install 'pymor[full] @ git+https://github.com/pymor/pymor'which requires that thegitversion control system is
installed on your system.Current Release Branch VersionFrom time to time, the main branch of pyMOR undergoes major changes and things
might break (this is usually announced in ourdiscussion forum),
so you might prefer to install pyMOR from the current release branch:pip install 'pymor[full] @ git+https://github.com/pymor/pymor@2023.2.x'Release branches will always stay stable and will only receive bugfix commits
after the corresponding release has been made.Installation via condaWe recommend installation of pyMOR in aconda environment.pyMOR can be installed using conda by runningconda install -c conda-forge pymorDocumentationDocumentation is availableonline.
We recommend starting withgetting started,tutorials, andtechnical overview.To build the documentation locally,
run the following from inside the root directory of the pyMOR source tree:make docsThis will generate HTML documentation indocs/_build/html.External PDE SolverspyMOR has been designed with easy integration of external PDE solvers in mind.We provide bindings for the following solver libraries:FEniCSMPI-compatible wrapper classes for dolfin linear algebra data structures are
shipped with pyMOR (pymor.bindings.fenics).
For an example seepymordemos.thermalblock,pymordemos.thermalblock_simple.
It is tested using FEniCS version 2019.1.0.deal.IIPython bindings and pyMOR wrapper classes can be foundhere.NGSolveWrapper classes for the NGSolve finite element library are shipped with pyMOR
(pymor.bindings.ngsolve).
For an example seepymordemos.thermalblock_simple.
It is tested using NGSolve version v6.2.2104.A simple example for direct integration of pyMOR with a a custom solver
can be found inpymordemos.minimal_cpp_demo.An alternative approach is to import system matrices from file and usescipy.sparse-based solvers.Environments for pyMOR Development and TestsPlease see theDeveloper Documentation.ContactShould you have any questions regarding pyMOR or wish to contribute,
do not hesitate to send us an email atmain.developers@pymor.org