Anonymous
×
Create a new article
Write your page title here:
We currently have 105 articles on MOR Wiki. Type your article name above or click on one of the titles below and start writing!



MOR Wiki

Difference between revisions of "Building Model"

(Small fix, Python code, second-order form)
(Edit categories, replace source tags)
Line 1: Line 1:
 
[[Category:benchmark]]
 
[[Category:benchmark]]
 
[[Category:SLICOT]]
 
[[Category:SLICOT]]
[[Category:Sparse]]
+
[[Category:linear]]
  +
[[Category:time invariant]]
  +
[[Category:first differential order]]
  +
[[Category:second differential order]]
 
[[Category:SISO]]
 
[[Category:SISO]]
   
Line 23: Line 26:
 
Here is [https://www.python.org Python] code for loading the matrices (<math>A</math> is stored as a sparse matrix that is mostly full and <math>C</math> is stored as an array of 8-bit unsigned integers):
 
Here is [https://www.python.org Python] code for loading the matrices (<math>A</math> is stored as a sparse matrix that is mostly full and <math>C</math> is stored as an array of 8-bit unsigned integers):
   
:<source lang="python">
+
:<syntaxhighlight lang="python">
 
import numpy as np
 
import numpy as np
 
from scipy.io import loadmat
 
from scipy.io import loadmat
Line 31: Line 34:
 
B = mat['B']
 
B = mat['B']
 
C = mat['C'].astype(np.float_)
 
C = mat['C'].astype(np.float_)
  +
</syntaxhighlight>
</source>
 
   
 
The <math>(A, B, C)</math> represents a second-order system
 
The <math>(A, B, C)</math> represents a second-order system
Line 65: Line 68:
 
Here is [https://www.python.org Python] code for checking the structure and extracting the second-order matrices:
 
Here is [https://www.python.org Python] code for checking the structure and extracting the second-order matrices:
   
:<source lang="python">
+
:<syntaxhighlight lang="python">
 
n = 48
 
n = 48
 
n2 = n // 2
 
n2 = n // 2
Line 78: Line 81:
 
Bso = B[n2:]
 
Bso = B[n2:]
 
Cso = C[:, n2:]
 
Cso = C[:, n2:]
  +
</syntaxhighlight>
</source>
 
   
 
==Dimensions==
 
==Dimensions==

Revision as of 18:37, 29 August 2023


Description: Motion Problem in a Building

This benchmark models the displacement of a multi-story building for example during an Earthquake. More details can be found in [1] and [2], [3].

Earthquake Model

Origin

This benchmark is part of the SLICOT Benchmark Examples for Model Reduction[3].

Data

The system matrices A, B, C are available from the SLICOT benchmarks page: build.zip and are stored as MATLAB .mat file.

Here is Python code for loading the matrices (A is stored as a sparse matrix that is mostly full and C is stored as an array of 8-bit unsigned integers):

import numpy as np
from scipy.io import loadmat

mat = loadmat('build.mat')
A = mat['A'].toarray()
B = mat['B']
C = mat['C'].astype(np.float_)

The (A, B, C) represents a second-order system


\begin{align}
  \ddot{q}(t) + E_{so} \dot{q}(t) + K_{so} q(t) &= B_{so} u(t), \\
  y(t) &= C_{so} \dot{q}(t),
\end{align}

as


\begin{align}
  A &=
  \begin{pmatrix}
    0 & I \\
    -K_{so} & -E_{so}
  \end{pmatrix}, \\
  B &=
  \begin{pmatrix}
    0 \\
    B_{so}
  \end{pmatrix}, \\
  C &=
  \begin{pmatrix}
    0 & C_{so}
  \end{pmatrix}
\end{align}

Here is Python code for checking the structure and extracting the second-order matrices:

n = 48
n2 = n // 2

assert np.all(A[:n2, :n2] == 0)
assert np.all(A[:n2, n2:] == np.eye(n2))
assert np.all(B[:n2] == 0)
assert np.all(C[:, :n2] == 0)

Eso = -A[n2:, n2:]
Kso = -A[n2:, :n2]
Bso = B[n2:]
Cso = C[:, n2:]

Dimensions

First differential order

System structure:


\begin{align}
  \dot{x}(t) &= A x(t) + B u(t) \\
  y(t) &= C x(t)
\end{align}

System dimensions:

A \in \mathbb{R}^{48 \times 48}, B \in \mathbb{R}^{48 \times 1}, C \in \mathbb{R}^{1 \times 48}.

Second differential order

System structure:


\begin{align}
  \ddot{x}(t) + E \dot{x}(t) + K x(t) &= B u(t) \\
  y(t) &= C_v \dot{x}(t)
\end{align}

System dimensions:

E, K \in \mathbb{R}^{24 \times 24}, B \in \mathbb{R}^{24 \times 1}, C_v \in \mathbb{R}^{1 \times 24}.

Citation

To cite this benchmark, use the following references:

  • For the benchmark itself and its data:
Niconet e.V., SLICOT - Subroutine Library in Systems and Control Theory, http://www.slicot.org
@MANUAL{slicot_build,
 title =        {{SLICOT} - Subroutine Library in Systems and Control Theory},
 organization = {Niconet e.V.}
 address =      {\url{http://www.slicot.org}},
 key =          {SLICOT}
}
  • For the background on the benchmark:
@ARTICLE{morAntSG01,
 author =       {A.C. Antoulas, D.C. Sorensen and S. Gugercin},
 title =        {A survey of model reduction methods for large-scale systems},
 journal =      {Contemporary Mathematics},
 volume =       {280},
 pages =        {193--219},
 year =         {2001},
 doi =          {10.1090/conm/280}
}

References

  1. A.C. Antoulas, D.C. Sorensen and S. Gugercin. A survey of model reduction methods for large-scale systems. Contemporary Mathematics, 280: 193--219, 2001.
  2. Y. Chahlaoui, P. Van Dooren, A collection of Benchmark examples for model reduction of linear time invariant dynamical systems, Working Note 2002-2: 2002.
  3. 3.0 3.1 Y. Chahlaoui, P. Van Dooren, Benchmark Examples for Model Reduction of Linear Time-Invariant Dynamical Systems, Dimension Reduction of Large-Scale Systems, Lecture Notes in Computational Science and Engineering, vol 45: 379--392, 2005.