Synopsis
pyMOR is a BSD-licensed software library for building model order reduction applications in 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 and iterative rational Krylov algorithm. pyMOR is designed from the ground up for easy integration with external PDE solver packages but also offers Python-based discretizations for getting started easily.
Features
Currently, the following model reduction algorithms are provided by pyMOR:
- A generic reduction routine for projection of arbitrary high-dimensional discretizations onto reduced spaces, preserving (possibly nested) affine decompositions of operators and functionals for efficient offline/online decomposition.
- Efficient error estimation for linear affinely decomposed problems.
- Empirical interpolation of arbitrary operators (with efficient evaluation of projected interpolated operators if the operator supports restriction to selected degrees of freedom).
- Parallel adaptive greedy and POD algorithms for reduced space construction.
- Empirical-Interpolation-Greedy and DEIM algorithms for generation of interpolation data for empirical operator interpolation.
- Balanced-based and interpolation-based reduction methods for first-order and second-order linear time-invariant systems.
- Model order reduction using artificial neural networks.
- Data-driven model order reduction with Dynamic Mode Decomposition
- Gram-Schmidt algorithm supporting re-orthogonalization for improved numerical accuracy.
- Time-stepping and Newton algorithms, as well as generic iterative linear solvers.
- Low-rank alternating direction implicit (LR ADI) method for large-scale Lyapunov equations and bindings for matric equations solvers in SLICOT (via slycot) and Py-M.E.S.S.
- Eigenvalue/pole computation using the implicitly restarted Arnoldi method and the subspace accelerated dominant pole (SAMDP) algorithm.
- Modal truncation for kinear time-invariant systems.
- time-dependent parameters.
All these algorithms are formulated in terms of abstract interfaces for seamless integration with external high-dimensional PDE solvers. Bindings for the following PDE solver libraries are available:
- deal.II
- DUNE
- FEniCS
- NGSolve
- scikit-fem (experimental)
Pure Python implementations of discretizations using the NumPy/SciPy scientific computing stack are implemented to provide an easy to use sandbox for experimentation with new model reduction approaches. pyMOR offers:
- Structured 1D and 2D grids, as well as an experimental Gmsh-based grid, implementing the same abstract grid interface.
- Finite element and finite volume operators based on this interface.
- SciPy/SuperLU based iterative and direct solvers for sparse systems.
- Algebraic multigrid solvers through pyAMG bindings.
- OpenGL and matplotlib based visualizations of solutions.
References
- M. Ohlberger, S. Rave, S. Schmidt, S. Zhang. "A Model Reduction Framework for Efficient Simulation of Li-Ion Batteries". Springer Proceedings in Mathematics & Statistics Vol. 78: Finite Volumes for Complex Applications VII-Elliptic, Parabolic and Hyperbolic Problems, Berlin, June 2014.
- R. Milk, S. Rave, F. Schindler. "pyMOR - Generic Algorithms and Interfaces for Model Order Reduction". SIAM Journal on Scientific Computing 38(5): S194--S216, 2016.
Links
- Official website,
- Development of pyMOR can be tracked on GitHub,
- Online documentation.
Contact
For assistance with, and contributions to pyMOR, the developers can be contacted via GitHub discussions.