|
1 |
| -# MORpH |
| 1 | +# MORpH: Model reduction of linear port-Hamiltonian systems |
| 2 | + |
| 3 | +## Description |
| 4 | + |
| 5 | +**MORpH** is a MATLAB toolbox designed for |
| 6 | +- efficient storage, |
| 7 | +- system analysis, |
| 8 | +- interconnection and |
| 9 | +- structure-preserving model reduction (MOR) |
| 10 | + |
| 11 | +of large-scale port-Hamiltonian (pH) models. The model class of pH systems enables energy-based modeling and a flexible coupling of models across different physical domains. This makes them well-suited for the simulation and control of complex technical systems. |
| 12 | + |
| 13 | +### The *phs* class |
| 14 | + |
| 15 | +In **MORpH**, pH models are represented as objects of the *phs* class. They can be created in the following way: |
| 16 | +``` |
| 17 | +sys = phs(J,R,Q,G,E,P,S,N); |
| 18 | +``` |
| 19 | +Upon object creation, the *phs* class checks the pH structural constraints. The system matrices are saved in MATLAB's *sparse* format to reduce storage demands for large-scale systems. |
| 20 | + |
| 21 | +With the *phs* class comes a set of wrappers for system analysis. For example, you can create a Bode plot for your system via |
| 22 | +``` |
| 23 | +bode(sys) |
| 24 | +``` |
| 25 | + |
| 26 | +### Structure-preserving MOR |
| 27 | + |
| 28 | +**MORpH** offers different ways to reduce large-scale pH models in a structure-preserving way, meaning that the reduced model also has pH form. |
| 29 | +For example, we can reduce our created pH model ```sys``` with the IRKA-PH algorithm (see [[1]](https://doi.org/10.1016/j.automatica.2012.05.052)) to a system with dimension ```redOrder``` via |
| 30 | +``` |
| 31 | +redSys = irkaPH(sys, redOrder, Opts); |
| 32 | +``` |
| 33 | +The ```Opts``` struct can be used to configure the algorithm's parameters. |
| 34 | +An overview of the implemented algorithms is given [HERE](src/MOR/README.md). For a more detailed description of the different algorithms, pleases have a look at the [DEMO](/demos) files. |
| 35 | + |
| 36 | + |
| 37 | +## Installation |
| 38 | + |
| 39 | +After downloading **MORpH**, change to the installation directory in MATLAB and run the script `setup_morph.m`. |
| 40 | +It also assists with the installation of third-party software that may be required for some functionalities within **MORpH**. |
| 41 | + |
| 42 | +### Toolbox structure |
| 43 | +The toolbox is structured as follows: |
| 44 | + |
| 45 | +**MORpH** (main folder) |
| 46 | +- **src** |
| 47 | + - **@phs**: Class definition and functions to store and analyze large-scale, sparse pH models |
| 48 | + - **MOR**: Algorithms for structure-preserving MOR of pH models |
| 49 | + - **@phsRed**: Class to store reduced pH models |
| 50 | + - **pa-ENF**: Passivity enforcement algorithms |
| 51 | + - **pa-MOR**: Passivity-preserving MOR algorithms |
| 52 | + - **pH-MOR**: PH-preserving MOR algorithms |
| 53 | + - **thirdParty**: Third-party code |
| 54 | + - **Utility**: Helper functions |
| 55 | +- **demos**: Test systems and demos for different algorithms |
| 56 | +- **test**: Unit tests for core functionalities |
| 57 | + |
| 58 | +## Dependencies |
| 59 | +Additional to the Control System Toolbox and Optimization Toolbox of MATLAB, **MORpH** partially relies on (or provides interfaces to) the following third-party open-source software packages which are greatfully acknowledged: |
| 60 | +- [Manopt](https://github.com/NicolasBoumal/manopt) for optimization on manifolds |
| 61 | +- [M-M.E.S.S.](https://github.com/mpimd-csc/mmess) for solving matrix equations |
| 62 | +- [GRANSO](https://gitlab.com/timmitchell/GRANSO) for optimization |
| 63 | +- [CVX](https://github.com/cvxr/CVX) for optimization |
| 64 | +- [YALMIP](https://github.com/yalmip/YALMIP) for optimization |
| 65 | +- [SADPA/SAMDP](https://sites.google.com/site/rommes/software) for computing dominant spectral zeros |
| 66 | +- [LINORM_SUBSP](http://www.math.tu-berlin.de/index.php?id=186267&L=1) for H-infinity norm computations |
| 67 | +- [HINORM](http://www.mpi-magdeburg.mpg.de/mpcsc/software/infnorm) for H-infinity norm computations |
| 68 | + |
| 69 | +> Note: If any of these software packages is used, please comply with the licensing and citation rules of each package! |
| 70 | +
|
| 71 | +## Contributing |
| 72 | +Pull requests are welcome! For major changes, please open an issue first to discuss what you would like to change. |
| 73 | +For more information on how to contribute, please look [HERE](/CONTRIBUTING.md). |
| 74 | + |
| 75 | +## Copyright |
| 76 | +This toolbox is developed by [MORLab](https://www.epc.ed.tum.de/en/rt/research/model-order-reduction/), the model reduction lab at the [Chair of Automatic Control](https://www.epc.ed.tum.de/en/rt/home/) at [TUM](https://www.tum.de/en/). |
| 77 | +For more information, see [HERE](/LICENSE.md). |
0 commit comments