- project: emgr - EMpirical GRamian Framework
- version: 5.99 (2022-04-13)
- by: Christian Himpe
- under: BSD-2-Clause License
- summary: Empirical system Gramians for (nonlinear) input-output systems.
- 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 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)
- 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
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. Algorithms 11(7): 91, 2018. (open access)
and references therein. See also the reference lists for further theoretical backgrounds on empirical Gramians.
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)
- C. Himpe (2022). emgr -- EMpirical GRamian Framework (Version 5.99) [Software]. https://gramian.de doi:10.5281/zenodo.6457616
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'
README.md
Basic Information (this file)
AUTHORS
Author identity and contributions
CHANGELOG
Version Information
CITATION
Citation Information (BibTeX
)
CITATION.cff
Citation Information (CFF
)
CODE
Meta Information (INI
)
codemeta.json
Meta Information (JSON
)
LICENSE
License Information
VERSION
Current Version Number
RUNME.m
Minimal Code Example
emgr.m
Empirical Gramian Framework (main file, crc32:f76f4638
)
emgrTest.m
Run all tests
est.m
Empirical System Theory (EST) emgr prototype frontend
estTest.m
EST System Tests
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
emgr factorial comparison of singular value decays
test_dwj.m
Test partioned joint Gramian computation
est.scm
EST tree-based documentation in Scheme
emgr-ref.pdf
emgr reference cheat sheet
py/emgr.py
Empirical Gramian Framework (Python variant)
py/RUNME.py
Minimal Code Example (Python variant)
py/emgrProbe.py
Factorial emgr.py tests
More information at: https://gramian.de
See also: C. Himpe: "emgr - EMpirical GRamian Framework 5.99"; Transactions on Mathematical Software, 49(3): 31, 2023.