All Projects → pymor → pymor

pymor / pymor

Licence: other
pyMOR - Model Order Reduction with Python

Programming Languages

python
139335 projects - #7 most used programming language
shell
77523 projects
Makefile
30231 projects
C++
36643 projects - #6 most used programming language
powershell
5483 projects
Dockerfile
14818 projects

Projects that are alternatives of or similar to pymor

EZyRB
Easy Reduced Basis method
Stars: ✭ 49 (-75.25%)
Mutual labels:  data-driven, model-reduction, model-order-reduction, reduced-basis
RBniCS
RBniCS - reduced order modelling in FEniCS
Stars: ✭ 5 (-97.47%)
Mutual labels:  model-order-reduction, fenics, reduced-basis
sssMOR
sssMOR - Sparse State-Space and Model Order Reduction Toolbox
Stars: ✭ 20 (-89.9%)
Mutual labels:  state-space, model-reduction, model-order-reduction
fem
Notes on finite element method
Stars: ✭ 20 (-89.9%)
Mutual labels:  fenics, dealii
python4selftrackers
Presentations on Quantified Self and Self-Tracking with Python
Stars: ✭ 26 (-86.87%)
Mutual labels:  data-driven
NonlinearDynamicsTextbook
Nonlinear Dynamics: A concise introduction interlaced with code
Stars: ✭ 145 (-26.77%)
Mutual labels:  nonlinear-dynamics
minimalist
Observable Property and Signal for building data-driven UI without Rx
Stars: ✭ 88 (-55.56%)
Mutual labels:  data-driven
paramak
Create parametric 3D fusion reactor CAD models
Stars: ✭ 36 (-81.82%)
Mutual labels:  parametric
wetlandmapR
Scripts, tools and example data for mapping wetland ecosystems using data driven R statistical methods like Random Forests and open source GIS
Stars: ✭ 16 (-91.92%)
Mutual labels:  data-driven
wham
State-space, age-structured fish stock assessment model
Stars: ✭ 25 (-87.37%)
Mutual labels:  state-space
microblx
microblx: real-time, embedded, reflective function blocks.
Stars: ✭ 37 (-81.31%)
Mutual labels:  control-systems
ariyana
Ariyana is an ECS work in progress game engine written in Orthodox C++ and Beef with a focus on cross-platform and multiplayer games
Stars: ✭ 73 (-63.13%)
Mutual labels:  data-driven
pressio
Model reduction for linear and nonlinear dynamical systems: core C++ library
Stars: ✭ 35 (-82.32%)
Mutual labels:  nonlinear-dynamics
Helicopter-Simulation
A complete 6DOF helicopter simulation (physics engine + visualization)
Stars: ✭ 45 (-77.27%)
Mutual labels:  state-space
RecurrenceAnalysis.jl
Recurrence Quantification Analysis in Julia
Stars: ✭ 37 (-81.31%)
Mutual labels:  nonlinear-dynamics
Pontryagin-Differentiable-Programming
A unified end-to-end learning and control framework that is able to learn a (neural) control objective function, dynamics equation, control policy, or/and optimal trajectory in a control system.
Stars: ✭ 111 (-43.94%)
Mutual labels:  control-systems
paramak
Create parametric 3D fusion reactor CAD and neutronics models
Stars: ✭ 40 (-79.8%)
Mutual labels:  parametric
Algorithms-for-Automated-Driving
Each chapter of this (mini-)book guides you in programming one important software component for automated driving.
Stars: ✭ 153 (-22.73%)
Mutual labels:  control-systems
deal2lkit
A ToolKit library for deal.II
Stars: ✭ 16 (-91.92%)
Mutual labels:  dealii
multiphenics
multiphenics - easy prototyping of multiphysics problems in FEniCS
Stars: ✭ 33 (-83.33%)
Mutual labels:  fenics

pyMOR Logo

pyMOR - Model Order Reduction with Python

pyMOR is a software library for building model order reduction applications with 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 or IRKA (Iterative Rational Krylov Algorithm). All algorithms in pyMOR are formulated in terms of abstract interfaces for seamless integration with external PDE (Partial Differential Equation) solver packages. Moreover, pure Python implementations of FEM (Finite Element Method) and FVM (Finite Volume Method) discretizations using the NumPy/SciPy scientific computing stack are provided for getting started quickly.

PyPI PyPI Docs DOI GitLab Pipeline Conda Tests codecov

License

Copyright pyMOR developers and contributors. All rights reserved.

Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met:

  • Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer.
  • Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution.

THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT HOLDER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.

The following files contain source code originating from other open source software projects:

  • docs/source/pymordocstring.py (sphinxcontrib-napoleon)
  • src/pymor/algorithms/genericsolvers.py (SciPy)

See these files for more information.

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

We recommend installation of pyMOR in a virtual environment.

pyMOR can easily be installed with the pip command:

pip install --upgrade pip  # make sure that pip is reasonably new
pip install pymor[full]

(Please note that pip versions prior to 21.1 might have problems resolving all dependencies)

This will install the latest release of pyMOR on your system with most optional dependencies. For Linux we provide binary wheels, so no further system packages should be required. Use

pip install pymor

for an installation with minimal dependencies. There are some optional packages not included with pymor[full] because they need additional setup on your system:

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

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

    pip install slycot
    
  • dense and sparse matrix equation solver for system-theoretic MOR methods (other backends available):

If you are not operating in a virtual environment, you can pass the optional --user argument to pip. pyMOR will then only be installed for your local user, not requiring administrator privileges.

To install the latest development version of pyMOR, execute

pip install git+https://github.com/pymor/pymor#egg=pymor[full]

which will require that the git version control system is installed on your system.

From time to time, the main branch of pyMOR undergoes major changes and things might break (this is usually announced in our discussion forum), so you might prefer to install pyMOR from the current release branch:

pip install git+https://github.com/pymor/[email protected]#egg=pymor[full]

Release branches will always stay stable and will only receive bugfix commits after the corresponding release has been made.

Installation via conda

pyMOR can be installed using conda by running

conda install -c conda-forge pymor

Documentation

Documentation is available online or you can build it yourself from inside the root directory of the pyMOR source tree by executing:

make docs

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

Useful Links

External PDE solvers

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

A basic approach is to use the solver only to generate high-dimensional system matrices which are then read by pyMOR from disk (pymor.discretizers.disk). Another possibility is to steer the solver via an appropriate network protocol.

Whenever possible, we recommend to recompile the solver as a Python extension module which gives pyMOR direct access to the solver without any communication overhead. A basic example using pybind11 can be found in src/pymordemos/minimal_cpp_demo. Moreover, we provide bindings for the following solver libraries:

  • FEniCS

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

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

Do not hesitate to contact us if you need help with the integration of your PDE solver.

External Matrix Equation Solvers

pyMOR also provides bindings to matrix equation solvers (in pymor.bindings), which are needed for the system-theoretic methods and need to be installed separately. Bindings for the following solver libraries are included:

  • Py-M.E.S.S.

    The Matrix Equation Sparse Solver library is intended for solving large sparse matrix equations (pymor.bindings.pymess).

  • Slycot

    Python wrapper for the Subroutine Library in Systems and Control Theory (SLICOT) is also used for Hardy norm computations (pymor.bindings.slycot).

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 contact us via our GitHub discussions forum:

https://github.com/pymor/pymor/discussions

Note that the project description data, including the texts, logos, images, and/or trademarks, for each open source project belongs to its rightful owner. If you wish to add or remove any projects, please contact us at [email protected].