Skip to content
This repository has been archived by the owner on Sep 30, 2023. It is now read-only.

Commit

Permalink
emgr v5.99
Browse files Browse the repository at this point in the history
  • Loading branch information
gramian committed Apr 13, 2022
1 parent 1c7c028 commit 966a20f
Show file tree
Hide file tree
Showing 21 changed files with 1,359 additions and 1,063 deletions.
15 changes: 15 additions & 0 deletions CHANGELOG
Original file line number Diff line number Diff line change
@@ -1,5 +1,20 @@
# emgr Changelog

## emgr 5.99 (2022-04)

* **CHANGED** parameter scale computation
* **ADDED** parameter centering around nominal parameter
* **ADDED** exact Schur complement for (cross-)identifiability Gramian
* **ADDED** inline-if local function for cleaner assignments
* **ADDED** Lie-bracket kernel and hyperbolic-SVD kernel for testing
* **ADDED** reciprocal square-root time-weighting
* **FIXED** normalization bug
* **FIXED** approximate inverse (Python)
* **IMPROVED** observability and adjoint caching
* **IMPROVED** default solver
* **IMPROVED** time-weighting
* **IMPROVED** code readability

## emgr 5.9 (2021-01)

* **CHANGED** chirp input function character changed to 'h'
Expand Down
12 changes: 6 additions & 6 deletions CITATION
Original file line number Diff line number Diff line change
@@ -1,14 +1,14 @@
Cite As:

C. Himpe (2021). emgr - EMpirical GRamian Framework (Version 5.9) [Software].
Available from https://gramian.de . doi:10.5281/zenodo.4454679
C. Himpe (2022). emgr - EMpirical GRamian Framework (Version 5.99) [Software].
Available from https://gramian.de . doi:10.5281/zenodo.6457616

BibTeX Entry:

@MISC{emgr59,
@MISC{emgr599,
author = {C.~Himpe},
title = {{emgr - EMpirical GRamian Framework} (Version~5.9)},
title = {{emgr - EMpirical GRamian Framework} (Version~5.99)},
howpublished = {\url{https://gramian.de}},
year = {2021},
doi = {10.5281/zenodo.4454679}
year = {2022},
doi = {10.5281/zenodo.6457616}
}
16 changes: 10 additions & 6 deletions CITATION.cff
Original file line number Diff line number Diff line change
@@ -1,15 +1,19 @@
cff-version: 1.1.0
cff-version: 1.2.0
message: "If you use this software, please cite it as below."
authors:
- family-names: Himpe
given-names: Christian
orcid: https://orcid.org/0000-0003-2194-6754
title: "emgr - EMpirical GRamian Framework"
version: 5.9
date-released: 2021-01-21
doi: 10.5281/zenodo.4454679
version: 5.99
date-released: 2022-04-13
doi: 10.5281/zenodo.6457616
license: BSD-2-Clause
url: https://gramian.de
abstract: "Empirical system Gramians for (nonlinear) input-output systems."
keywords: Controllability, Observability, Empirical Gramians, Model Reduction, Model Order Reduction

keywords:
- "Controllability"
- "Observability"
- "Empirical Gramians"
- "Model Reduction"
- "Model Order Reduction"
6 changes: 3 additions & 3 deletions CODE
Original file line number Diff line number Diff line change
@@ -1,9 +1,9 @@
# code.ini
name: Empirical Gramian Framework
shortname: emgr
version: 5.9
release-date: 2021-01-21
id: 10.5281/zenodo.4454679
version: 5.99
release-date: 2022-04-13
id: 10.5281/zenodo.6457616
id-type: doi
author: Christian Himpe
orcid: 0000-0003-2194-6754
Expand Down
2 changes: 1 addition & 1 deletion LICENSE
Original file line number Diff line number Diff line change
@@ -1,6 +1,6 @@
All source code is licensed under the open source BSD-2-Clause license:

Copyright (c) 2013--2021, Christian Himpe
Copyright (c) 2013--2022, Christian Himpe

All rights reserved.

Expand Down
38 changes: 22 additions & 16 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,17 +1,17 @@
![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.4454679.png)
![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.9)
================================================================
![emgr logo](emgr.png) emgr -- EMpirical GRamian Framework (5.99)
=================================================================

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

* [emgr - EMpirical GRamian Framework](https://gramian.de)
* version: **5.9** (2021-01-21)
* 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.
Expand All @@ -25,7 +25,7 @@
- Combined State and Parameter Reduction
* Decentralized Control
* Sensitivity Analysis
* Parameter Identification | Structural Identifiability | Input-Output Identifiability
* Parameter Identification | Input-Output Identifiability
* Nonlinearity Quantification
* Uncertainty Quantification
* System Norms | System Indices | System Invariants
Expand Down Expand Up @@ -65,7 +65,7 @@ detailing most features and capabilities see:

* C. Himpe.
[emgr -- the Empirical Gramian Framework](https://doi.org/10.3390/a11070091).
Algorithms 11(7): 91, 2018.
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.
Expand All @@ -75,15 +75,15 @@ See also the [reference lists](https://gramian.de/emgr-est.md) for further theor
Successfully tested on:

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

## Citation

* C. Himpe (2021). emgr -- EMpirical GRamian Framework (Version 5.9) [Software].
https://gramian.de [doi:10.5281/zenodo.4454679](https://doi.org/10.5281/zenodo.4454679)
* 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

Expand All @@ -110,21 +110,25 @@ emgrDemo(id) % with id one of 'hnm', 'isp', 'fss', 'nrc', 'rqo', 'lte', 'aps', '

[`CHANGELOG`](CHANGELOG) Version Information

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

[`CODE`](CODE) Meta Information
[`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:`c136507c`)
[`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 frontend
[`est.m`](est.m) Empirical System Theory (EST) emgr prototype frontend

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

Expand All @@ -142,6 +146,8 @@ emgrDemo(id) % with id one of 'hnm', 'isp', 'fss', 'nrc', 'rqo', 'lte', 'aps', '

[`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
Expand Down
28 changes: 14 additions & 14 deletions RUNME.m
Original file line number Diff line number Diff line change
@@ -1,25 +1,25 @@
%%% project: emgr - EMpirical GRamian Framework ( https://gramian.de )
%%% version: 5.9 (2021-01-21)
%%% version: 5.99 (2022-04-13)
%%% authors: Christian Himpe (0000-0003-2194-6754)
%%% license: BSD-2-Clause (opensource.org/licenses/BSD-2-Clause)
%%% summary: RUNME - minimal test script

emgr_VERSION = emgr('version')

% Linear System
A = -eye(4) % System Matrix
B = [0;1;0;1] % Input Matrix
C = [0,0,1,1] % Output Matrix
A = -eye(4) % System Matrix
B = [0;1;0;1] % Input Matrix
C = [0,0,1,1] % Output Matrix

P = zeros(4,1); % Parameter Vector
Q = [zeros(4,1),[0.25;0.5;0.75;1.0]]; % Min and Max Parameter Box
P = zeros(4,1); % Parameter Vector
Q = [0.01*ones(4,1),[0.25;0.5;0.75;1.0]]; % Min and Max Parameter Box

f = @(x,u,p,t) A*x + B*u + p; % (Affine) Linear Vector Field
g = @(x,u,p,t) C*x; % Linear Output Functional
h = @(x,u,p,t) A'*x + C'*u; % Adjoint Vector Field
f = @(x,u,p,t) A*x + B*u + p; % (Affine) Linear Vector Field
g = @(x,u,p,t) C*x; % Linear Output Functional
h = @(x,u,p,t) A'*x + C'*u; % Adjoint Vector Field

s = [1,4,1]; % System dimension
t = [0.01,1.0]; % Time discretization
s = [1,4,1]; % System dimension
t = [0.01,1.0]; % Time discretization

% (Empircal) Controllability Gramian
WC = emgr(f,g,s,t,'c',P)
Expand All @@ -34,11 +34,11 @@
WY = emgr(f,h,s,t,'y',P)

% (Empirical) Sensitivity Gramian
WCWS = emgr(f,g,s,t,'s',Q); WS = WCWS{2}
WCWS = emgr(f,g,s,t,'s',Q)

% (Empirical) Identifiability Gramian
WOWI = emgr(f,g,s,t,'i',Q); WI = WOWI{2}
WOWI = emgr(f,g,s,t,'i',Q)

% (Empirical) Cross-Identifiability Gramian
WXWJ = emgr(f,g,s,t,'j',Q); WJ = WXWJ{2}
WXWJ = emgr(f,g,s,t,'j',Q)

2 changes: 1 addition & 1 deletion VERSION
Original file line number Diff line number Diff line change
@@ -1 +1 @@
5.9
5.99
26 changes: 26 additions & 0 deletions codemeta.json
Original file line number Diff line number Diff line change
@@ -0,0 +1,26 @@
{
"@context": "10.5281/zenodo.6457616",
"@type": "SoftwareSourceCode",
"identifier": "emgr",
"name": "emgr -- EMpirical GRamian Framework",
"author": { "@type": "Person", "givenName": "Christian", "familyName": "Himpe", "@id": "http://orcid.org/0000-0003-2194-6754" },
"description": "Empirical system Gramians for (nonlinear) input-output systems.",
"version": "5.99",
"datePublished": "2022-04-13",
"license": "https://opensource.org/licenses/BSD-2-Clause",
"copyrightHolder": "Christian Himpe",
"copyrightYear": "2013",
"programmingLanguage": "Matlab",
"runtimePlatform": [ "Mathworks MATLAB >=2017b", "GNU Octave >=5.2" ],
"url": "https://gramian.de",
"downloadUrl": "https://gramian.de/emgr.m",
"codeRepository": "https://github.com/gramian/emgr",
"readme": "https://gramian.de/README.md",
"releaseNotes": "https://gramian.de/CHANGELOG",
"citation": [ "https://gramian.de/CITATION", "https://gramian.de/CITATION.cff"],
"codemeta": [ "https://gramian.de/codemeta.json", "https://gramian.de/CODE" ],
"referencePublication": "https://doi.org/10.3390/a11070091",
"applicationCategory": "Science",
"applicationSubCategory": "Mathematics",
"keywords": [ "Controllability", "Observability", "Cross Gramian", "Model Reduction", "Model Order Reduction" ]
}
Binary file modified emgr-ref.pdf
Binary file not shown.
Loading

0 comments on commit 966a20f

Please sign in to comment.