Raw File
README.md
![code meta-data](https://img.shields.io/badge/code_meta--data-%E2%9C%93-brightgreen.svg) 
![zenodo listed](https://zenodo.org/badge/doi/10.5281/zenodo.6457616.png)
![matlab compatible](https://img.shields.io/badge/matlab-compatible-lightgrey.svg)
![SWH](https://archive.softwareheritage.org/badge/origin/https://github.com/gramian/emgr/)

![emgr logo](emgr.png) emgr -- EMpirical GRamian Framework (5.99)
=================================================================

[Website](https://gramian.de) |
[Twitter](https://twitter.com/modelreduction) |
[Feedback](ch@gramian.de)

* project: [emgr - EMpirical GRamian Framework](https://gramian.de)
* version: **5.99** (2022-04-13)
* by: [Christian Himpe](https://orcid.org/0000-0003-2194-6754)
* under: [BSD-2-Clause](https://opensource.org/licenses/BSD-2-Clause) License
* summary: Empirical system Gramians for (nonlinear) input-output systems.

## Scope

* Model Reduction / Model Order Reduction (MOR)
    - Nonlinear Model Order Reduction (nMOR)
    - Parametric Model Order Reduction (pMOR) | Robust Reduction
    - Parameter Reduction
    - Combined State and Parameter Reduction
* Decentralized Control
* Sensitivity Analysis
* Parameter Identification |  Input-Output Identifiability
* Nonlinearity Quantification
* Uncertainty Quantification
* System Norms | System Indices | System Invariants
* Optimal Sensor Placement | Optimal Actuator Placement
* Matrix Equations
* Tau Functions

## Empirical Gramians

* Empirical Controllability Gramian
* Empirical Observability Gramian
* Empirical Cross Gramian
* Empirical Linear Cross Gramian
* Empirical Sensitivity Gramian
* Empirical Augmented Observability Gramian (Empirical Identifiability Gramian)
* Empirical Joint Gramian (Empirical Cross-Identifiability Gramian)

### Features

* Interfaces for:
    - custom solvers / integrators
    - custom inner products / dot products / kernels / pseudo-kernels
    - distributed / partitioned / low-rank cross Gramian
* Configurable non-symmetric cross gramian for:
    - Empirical Cross Gramian
    - Empirical Linear Cross Gramian
    - Empirical Joint Gramian
* Program design:
    - Implicit parallelization via vectorization of bulk matrix operations
    - Explicit parallelization via `parfor` hints
    - Functional design via closures

### Algorithm

For a mathematical summary and technical documentation of the empirical Gramian framework (5.4),
detailing most features and capabilities see:

* C. Himpe.
  [emgr -- the Empirical Gramian Framework](https://doi.org/10.3390/a11070091).
  Algorithms 11(7): 91, 2018. (open access)

and references therein.
See also the [reference lists](https://gramian.de/emgr-est.md) for further theoretical backgrounds on empirical Gramians.

## Compatibility

Successfully tested on:

* Mathworks MATLAB 2017b
* Mathworks MATLAB 2022a
* GNU Octave 5.2.0
* GNU Octave 7.1.0
* Python 3.8.10 (NumPy 1.17.4)

## Citation

* C. Himpe (2022). emgr -- EMpirical GRamian Framework (Version 5.99) [Software].
  https://gramian.de [doi:10.5281/zenodo.6457616](https://doi.org/10.5281/zenodo.6457616)

## Getting Started

Run a minimal example in a Matlab interpreter like OCTAVE or MATLAB:
```
RUNME
```

To run all tests use:
```
emgrTest
```

To run demos use:
```
emgrDemo(id) % with id one of 'hnm', 'isp', 'fss', 'nrc', 'rqo', 'lte', 'aps', 'fbc', 'qso'
```

## Files and Folders

[`README.md`](README.md) Basic Information (this file)

[`AUTHORS`](AUTHORS) Author identity and contributions

[`CHANGELOG`](CHANGELOG) Version Information

[`CITATION`](CITATION) Citation Information (`BibTeX`)

[`CITATION.cff`](CITATION.cff) Citation Information (`CFF`)

[`CODE`](CODE) Meta Information (`INI`)

[`codemeta.json`](coedmeta.json) Meta Information (`JSON`)

[`LICENSE`](LICENSE) License Information

[`VERSION`](VERSION) Current Version Number

[`RUNME.m`](RUNME.m) Minimal Code Example

[`emgr.m`](emgr.m) Empirical Gramian Framework (main file, crc32:`f76f4638`)

[`emgrTest.m`](emgrTest.m) Run all tests

[`est.m`](est.m) Empirical System Theory (EST) emgr prototype frontend

[`estTest.m`](estTest.m) EST System Tests

[`estDemo.m`](estDemo.m) Run demo (sample applications)

* `'hnm'` Hyperbolic Network Model
* `'isp'` Inverse Sylvester Procedure
* `'fss'` Flexible Space Structures
* `'nrc'` Nonlinear Resistor-Capacitor Cascade
* `'rqo'` Random Diagonal System with Quadratic Output
* `'aps'` All Pass System
* `'lte'` Linear Transport Equation
* `'fbc'` Five Body Choreography
* `'qso'` Quasi-Stable Orbits Inside Black Holes

[`estProbe.m`](estProbe.m) emgr factorial comparison of singular value decays

[`test_dwj.m`](test_dwj.m) Test partioned joint Gramian computation

[`est.scm`](est.scm) EST tree-based documentation in [Scheme](https://en.wikipedia.org/wiki/Scheme_(programming_language))

[`emgr-ref.pdf`](emgr-ref.pdf) emgr reference cheat sheet

[`py/emgr.py`](py/emgr.py) Empirical Gramian Framework (Python variant)

[`py/RUNME.py`](RUNME.py) Minimal Code Example (Python variant)

[`py/emgrProbe.py`](emgrProbe.py) Factorial emgr.py tests

## Documentation Table-of-Contents

### [Summary](https://gramian.de/#summary)

### [Scope](https://gramian.de/#scope)

### [Download](https://gramian.de/#download)

### [License](https://gramian.de/#license)

### [Disclaimer](https://gramian.de/#disclaimer)

### [Algorithm](https://gramian.de/#algorithm)

### [Model](https://gramian.de/#model)

### [Usage](https://gramian.de/#usage)

### [Arguments](https://gramian.de/#arguments)

### [Empirical Gramian Types](https://gramian.de/#gramians)

### [Option Flags](https://gramian.de/#options)

### [Return Values](https://gramian.de/#return)

### [Solver Interface](https://gramian.de/#solver)

### [EST Frontend](https://gramian.de/#extra)

### [Minimal Example](https://gramian.de/#example)

### [Tests](https://gramian.de/#tests)

### [Demos](https://gramian.de/#demos)

### [About](https://gramian.de/#about)

### [References](https://gramian.de/#references)

### [Contact](https://gramian.de/#contact)

### [Cite](https://gramian.de/#cite)

### [Links](https://gramian.de/#links)

### [References](https://gramian.de/emgr-est.md)

### [Notes](https://gramian.de/#notes)

### [Troubleshooting](https://gramian.de/#trouble)

### [Frequently Asked Questions](https://gramian.de/#faq)

## More information at: https://gramian.de

**See also:** C. Himpe: "[emgr - EMpirical GRamian Framework 5.99](https://doi.org/10.1145/3609860)"; Transactions on Mathematical Software, 49(3): 31, 2023.
back to top