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



Clamped Beam: Difference between revisions

remove preliminary and stub warnings
No edit summary
 
(4 intermediate revisions by 2 users not shown)
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]]
{{Infobox
|Title          = Clamped Beam
|Benchmark ID    = clampedBeam_n348m1q1
|Category        = slicot
|System-Class    = LTI-FOS
|nstates        = 348
|ninputs        = 1
|noutputs        = 1
|nparameters    = 0
|components      = A, B, C
|License        = NA
|Creator        = [[User:Himpe]]
|Editor          =
* [[User:Himpe]]
* [[User:Mlinaric]]
|Zenodo-link    = NA
}}


==Description: Clamped Beam Model==
==Description: Clamped Beam Model==
Line 15: Line 36:
This benchmark is part of the '''SLICOT Benchmark Examples for Model Reduction'''<ref name="chahlaoui05"/>.
This benchmark is part of the '''SLICOT Benchmark Examples for Model Reduction'''<ref name="chahlaoui05"/>.


==Data==
The system matrices <math>A</math>, <math>B</math>, <math>C</math> are available from the [https://www.slicot.org/20-site/126-benchmark-examples-for-model-reduction SLICOT benchmarks] page: [https://www.slicot.org/objects/software/shared/bench-data/beam.zip beam.zip] and are stored as MATLAB [https://www.mathworks.com/help/matlab/import_export/mat-file-versions.html .mat] file.
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):
:<syntaxhighlight lang="python">
import numpy as np
from scipy.io import loadmat
mat = loadmat('beam.mat')
A = mat['A'].toarray()
B = mat['B']
C = mat['C'].astype(np.float64)
</syntaxhighlight>
The <math>(A, B, C)</math> represents a second-order system
:<math>
\begin{align}
  \ddot{q}(t) + E_{so} \dot{q}(t) + a K_{so} q(t) &= a B_{so} u(t), \\
  y(t) &= C_{so} q(t),
\end{align}
</math>
as
:<math>
\begin{align}
  A &=
  \begin{pmatrix}
    0 & a I \\
    -K_{so} & -E_{so}
  \end{pmatrix}, \\
  B &=
  \begin{pmatrix}
    0 \\
    B_{so}
  \end{pmatrix}, \\
  C &=
  \begin{pmatrix}
    C_{so} & 0
  \end{pmatrix},
\end{align}
</math>
where <math>a \approx 21.3896</math>.
Here is [https://www.python.org Python] code for checking the structure and extracting the second-order matrices:


==Data==
:<syntaxhighlight lang="python">
n = 348
n2 = n // 2


The system matrices <math>A</math>, <math>B</math>, <math>C</math> are available from the [http://slicot.org/20-site/126-benchmark-examples-for-model-reduction SLICOT benchmarks] page: [http://slicot.org/objects/software/shared/bench-data/beam.zip beam.zip] and are stored as MATLAB [https://www.mathworks.com/help/matlab/import_export/mat-file-versions.html .mat] file.
assert np.all(A[:n2, :n2] == 0)
assert np.all(A[:n2, n2:] == A[0, n2] * np.eye(n2))
assert np.all(B[:n2] == 0)
assert np.all(C[:, n2:] == 0)


a = A[0, n2]
Eso = -A[n2:, n2:]
Kso = -a * A[n2:, :n2]
Bso = a * B[n2:]
Cso = C[:, :n2]
</syntaxhighlight>


==Dimensions==
==Dimensions==
===First differential order===


System structure:
System structure:


:<math>
:<math>
\begin{array}{rcl}
\begin{align}
\dot{x}(t) &=& Ax(t) + Bu(t) \\
  \dot{x}(t) &= A x(t) + B u(t) \\
y(t) &=& Cx(t)
  y(t) &= C x(t)
\end{array}
\end{align}
</math>
</math>


Line 38: Line 121:
<math>C \in \mathbb{R}^{1 \times 348}</math>.
<math>C \in \mathbb{R}^{1 \times 348}</math>.


===Second differential order===
System structure:
:<math>
\begin{align}
  \ddot{x}(t) + E \dot{x}(t) + K x(t) &= B u(t) \\
  y(t) &= C_p x(t)
\end{align}
</math>
System dimensions:
<math>E, K \in \mathbb{R}^{174 \times 174}</math>,
<math>B \in \mathbb{R}^{174 \times 1}</math>,
<math>C_p \in \mathbb{R}^{1 \times 174}</math>.


==Citation==
==Citation==

Latest revision as of 08:57, 5 June 2025


Clamped Beam
Background
Benchmark ID

clampedBeam_n348m1q1

Category

slicot

System-Class

LTI-FOS

Parameters
nstates
348
ninputs

1

noutputs

1

nparameters

0

components

A, B, C

Copyright
License

NA

Creator

User:Himpe

Editor
Location

NA


Description: Clamped Beam Model

This benchmark models a cantilever beam, which is a beam clamped on one end. More details can be found in [1] and [2], [3].

For larger beam-type benchmarks see the linear 1d beam and electrostatic beam benchmarks.

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: beam.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('beam.mat')
A = mat['A'].toarray()
B = mat['B']
C = mat['C'].astype(np.float64)

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

q¨(t)+Esoq˙(t)+aKsoq(t)=aBsou(t),y(t)=Csoq(t),

as

A=(0aIKsoEso),B=(0Bso),C=(Cso0),

where a21.3896.

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

n = 348
n2 = n // 2

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

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

Dimensions

First differential order

System structure:

x˙(t)=Ax(t)+Bu(t)y(t)=Cx(t)

System dimensions:

A348×348, B348×1, C1×348.

Second differential order

System structure:

x¨(t)+Ex˙(t)+Kx(t)=Bu(t)y(t)=Cpx(t)

System dimensions:

E,K174×174, B174×1, Cp1×174.

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_beam,
 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.