### Initialization
#### Notebook stuff

```python
from IPython.display import display, Latex, HTML
display(HTML(open('01.css').read()))
```

#### Numpy and Scipy

```python
import numpy as np
from numpy import array, cos, diag, eye, linspace, pi
from numpy import poly1d, sign, sin, sqrt, where, zeros
from scipy.linalg import eigh, inv, det
```

#### Matplotlib

```python
%matplotlib inline
import matplotlib.pyplot as plt
plt.style.use('seaborn-paper')
plt.rcParams['figure.dpi'] = 115
plt.rcParams['figure.figsize'] = (7.5, 2.5)
plt.rcParams['axes.grid'] = True
```

#### Miscellaneous definitions

In the following `ld` and `pmat` are used to display mathematical formulas generated by the program, `rounder` ensures that a floating point number _close_ to an integer will be rounded correctly when formatted as an integer, `p` is a shorthand to calling `poly1d` that is long and requires a single argument, `vw` computes the virtual work done by moments `m` for the curvatures `c`, when the lengths of the beams are `l` and eventually
`p0_p1` given an array of values `p` returns first `p[0], p[1]` then `p[1], p[2]` then...

```python
def ld(*items):
    display(Latex('$$' + ' '.join(items) + '$$'))
def pmat(mat, env='bmatrix', fmt='%+f'):
    opener = '\\begin{'+env+'}\n  '
    closer = '\n\\end{'+env+'}'
    formatted = '\\\\\n  '.join('&'.join(fmt%elt for elt in row) for row in mat)
    return opener+formatted+closer
def rounder(mat): return mat+0.01*sign(mat)
def p(*l): return poly1d(l)
def vw(emme, chi, L):
    return sum(((m*c).integ()(l)-(m*c).integ()(0)) for (m, c, l) in zip(emme, chi, L))
def p0_p1(p):
    from itertools import tee
    a, b = tee(p)
    next(b, None)
    return zip(a, b)
```

# 3 DOF System

## Input motion

We need the imposed displacement, the imposed velocity (an intermediate result) and the imposed acceleration.  It is convenient to express these quantities in terms of an adimensional time coordinate $a = \omega_0 t$,

\begin{align}
   u        &= \frac{4/3\omega_0 t - \sin(4/3\omega_0 t)}{2\pi}
             = \frac{\lambda_0 a- \sin(\lambda_0 a)}{2\pi},\\
   \dot{u}  &= \frac{4}{3}\omega_0 \frac{1-\cos(4/3\omega_0t)}{2\pi}
             = \lambda_0 \omega_0 \frac{1-\cos(\lambda_0 a)}{2\pi},\\
   \ddot{u} &= \frac{16}{9}\omega_0^2 \frac{\sin(4/3\omega_0t)}{2\pi}
             = \lambda_0^2\omega_0^2 \frac{\sin(\lambda_0 a)}{2\pi},
\end{align}

with $\lambda_0=4/3$.

The equations above are valid in the interval

$$ 0 \le t \le \frac{2\pi}{4/3 \omega_0} \rightarrow
   0 \le a \le \frac{3\pi}2 $$

(we have multiplied all terms by $\omega_0$  and simplified the last term).
Following a similar reasoning, the plotting interval is equal to $0\le a\le2\pi$.

```python
l0 = 4/3
# define a function to get back the time array and the 3 dependent vars
def a_uA_vA_aA(t0, t1, npoints):
    a  = linspace(t0, t1, npoints)
    uA = where(a<3*pi/2, (l0*a-sin(l0*a))/2/pi, 1)
    vA = where(a<3*pi/2, (1-cos(l0*a))/2/pi, 0)
    aA = where(a<3*pi/2, 16*sin(l0*a)/18/pi, 0)
    return a, uA, vA, aA
# and use it
a, uA, vA, aA = a_uA_vA_aA(0, 2*pi, 501)
```

#### The plots

```python

plt.plot(a/pi, uA)
plt.xlabel(r'$\omega_0 t/\pi$')
plt.ylabel(r'$u_A/\delta$')
plt.title('Imposed support motion');
```

```python
plt.plot(a/pi, vA)
plt.xlabel(r'$\omega_0 t/\pi$')
plt.ylabel(r'$\dot u_A/\delta\omega_0$')
plt.title('Imposed support velocity');
```

```python
plt.plot(a/pi, aA)
plt.xlabel(r'$\omega_0 t/\pi$')
plt.ylabel(r'$\ddot u_A/\delta\omega_0^2$')
plt.title('Imposed support acceleration');
```

##  Equation of Motion

The EoM expressed in adimensional coordinates and using adimensional structural matrices is

$$ m\omega_0^2\hat{\boldsymbol M} \frac{\partial^2\boldsymbol x}{\partial a^2}
 + \frac{EJ}{L^3}\hat{\boldsymbol K}\boldsymbol x =
 m \hat{\boldsymbol M} \boldsymbol e \omega_0^2 \frac{\partial^2 u_A}{\partial a^2}
$$

using the dot notation to denote derivatives with respect to $a$, if we divide both members by $m\omega_0^2$ we have

$$ \hat{\boldsymbol M} \ddot{\boldsymbol x}
 + \hat{\boldsymbol K}\boldsymbol x =
 \hat{\boldsymbol M} \boldsymbol e \ddot{u}_A.
$$

We must determine the influence vector $\boldsymbol e$ and the adimensional structural matrices

### Influence vector

To impose a horizontal displacement in $A$ we must remove one constraint, so that the structure has 1 DOF as a rigid system and the influence vector must be determined by a kinematic analysis.

```python
display(HTML(open('figures/trab1kin_conv.svg').read()))
```

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="757.158pt" height="381.639pt" viewBox="0 0 757.158 381.639" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 9.796875 -8.421875 C 9.125 -8.296875 8.875 -7.8125 8.875 -7.421875 C 8.875 -6.921875 9.28125 -6.75 9.5625 -6.75 C 10.1875 -6.75 10.625 -7.296875 10.625 -7.84375 C 10.625 -8.71875 9.625 -9.109375 8.765625 -9.109375 C 7.5 -9.109375 6.796875 -7.875 6.609375 -7.484375 C 6.140625 -9.03125 4.859375 -9.109375 4.484375 -9.109375 C 2.375 -9.109375 1.265625 -6.40625 1.265625 -5.953125 C 1.265625 -5.859375 1.34375 -5.765625 1.484375 -5.765625 C 1.65625 -5.765625 1.6875 -5.890625 1.734375 -5.96875 C 2.4375 -8.265625 3.828125 -8.703125 4.421875 -8.703125 C 5.34375 -8.703125 5.53125 -7.828125 5.53125 -7.328125 C 5.53125 -6.875 5.40625 -6.40625 5.171875 -5.40625 L 4.46875 -2.578125 C 4.15625 -1.34375 3.546875 -0.203125 2.453125 -0.203125 C 2.359375 -0.203125 1.84375 -0.203125 1.40625 -0.46875 C 2.140625 -0.625 2.3125 -1.234375 2.3125 -1.484375 C 2.3125 -1.90625 2 -2.140625 1.609375 -2.140625 C 1.109375 -2.140625 0.578125 -1.71875 0.578125 -1.046875 C 0.578125 -0.1875 1.546875 0.203125 2.4375 0.203125 C 3.421875 0.203125 4.125 -0.578125 4.5625 -1.421875 C 4.890625 -0.203125 5.921875 0.203125 6.6875 0.203125 C 8.796875 0.203125 9.921875 -2.5 9.921875 -2.953125 C 9.921875 -3.0625 9.828125 -3.140625 9.703125 -3.140625 C 9.515625 -3.140625 9.5 -3.03125 9.4375 -2.875 C 8.875 -1.046875 7.6875 -0.203125 6.75 -0.203125 C 6.03125 -0.203125 5.640625 -0.75 5.640625 -1.59375 C 5.640625 -2.046875 5.71875 -2.375 6.046875 -3.734375 L 6.78125 -6.546875 C 7.078125 -7.78125 7.78125 -8.703125 8.734375 -8.703125 C 8.78125 -8.703125 9.359375 -8.703125 9.796875 -8.421875 Z M 9.796875 -8.421875 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 2.640625 -5.15625 C 2.390625 -5.140625 2.34375 -5.125 2.34375 -4.984375 C 2.34375 -4.84375 2.40625 -4.84375 2.671875 -4.84375 L 3.328125 -4.84375 C 4.546875 -4.84375 5.09375 -3.84375 5.09375 -2.46875 C 5.09375 -0.59375 4.109375 -0.09375 3.40625 -0.09375 C 2.71875 -0.09375 1.546875 -0.421875 1.140625 -1.359375 C 1.59375 -1.296875 2.015625 -1.546875 2.015625 -2.0625 C 2.015625 -2.484375 1.703125 -2.765625 1.3125 -2.765625 C 0.96875 -2.765625 0.59375 -2.5625 0.59375 -2.015625 C 0.59375 -0.75 1.859375 0.296875 3.453125 0.296875 C 5.15625 0.296875 6.421875 -1 6.421875 -2.453125 C 6.421875 -3.765625 5.359375 -4.8125 3.984375 -5.046875 C 5.234375 -5.40625 6.03125 -6.453125 6.03125 -7.578125 C 6.03125 -8.703125 4.859375 -9.53125 3.46875 -9.53125 C 2.03125 -9.53125 0.96875 -8.65625 0.96875 -7.609375 C 0.96875 -7.046875 1.421875 -6.921875 1.640625 -6.921875 C 1.9375 -6.921875 2.28125 -7.140625 2.28125 -7.578125 C 2.28125 -8.03125 1.9375 -8.234375 1.625 -8.234375 C 1.53125 -8.234375 1.5 -8.234375 1.46875 -8.21875 C 2.015625 -9.1875 3.359375 -9.1875 3.421875 -9.1875 C 3.90625 -9.1875 4.828125 -8.984375 4.828125 -7.578125 C 4.828125 -7.296875 4.796875 -6.5 4.375 -5.875 C 3.9375 -5.25 3.453125 -5.203125 3.0625 -5.1875 Z M 2.640625 -5.15625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-2">
<path style="stroke:none;" d="M 6.3125 -2.40625 L 6 -2.40625 C 5.953125 -2.171875 5.84375 -1.375 5.6875 -1.140625 C 5.59375 -1.015625 4.78125 -1.015625 4.34375 -1.015625 L 1.6875 -1.015625 C 2.078125 -1.34375 2.953125 -2.265625 3.328125 -2.609375 C 5.515625 -4.625 6.3125 -5.359375 6.3125 -6.78125 C 6.3125 -8.4375 5 -9.53125 3.34375 -9.53125 C 1.671875 -9.53125 0.703125 -8.125 0.703125 -6.890625 C 0.703125 -6.15625 1.328125 -6.15625 1.375 -6.15625 C 1.671875 -6.15625 2.046875 -6.375 2.046875 -6.828125 C 2.046875 -7.234375 1.78125 -7.5 1.375 -7.5 C 1.25 -7.5 1.21875 -7.5 1.171875 -7.484375 C 1.453125 -8.46875 2.21875 -9.125 3.15625 -9.125 C 4.375 -9.125 5.125 -8.109375 5.125 -6.78125 C 5.125 -5.5625 4.421875 -4.5 3.59375 -3.578125 L 0.703125 -0.34375 L 0.703125 0 L 5.9375 0 Z M 6.3125 -2.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph1-3">
<path style="stroke:none;" d="M 4.125 -9.1875 C 4.125 -9.53125 4.125 -9.53125 3.84375 -9.53125 C 3.5 -9.15625 2.78125 -8.625 1.3125 -8.625 L 1.3125 -8.203125 C 1.640625 -8.203125 2.359375 -8.203125 3.140625 -8.578125 L 3.140625 -1.109375 C 3.140625 -0.59375 3.09375 -0.421875 1.84375 -0.421875 L 1.390625 -0.421875 L 1.390625 0 C 1.78125 -0.03125 3.171875 -0.03125 3.640625 -0.03125 C 4.109375 -0.03125 5.5 -0.03125 5.875 0 L 5.875 -0.421875 L 5.4375 -0.421875 C 4.171875 -0.421875 4.125 -0.59375 4.125 -1.109375 Z M 4.125 -9.1875 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M 7.1875 -2.671875 L 6.875 -2.671875 C 6.703125 -1.453125 6.5625 -1.234375 6.484375 -1.140625 C 6.40625 -1 5.171875 -1 4.921875 -1 L 1.625 -1 C 2.234375 -1.671875 3.4375 -2.890625 4.90625 -4.3125 C 5.953125 -5.296875 7.1875 -6.46875 7.1875 -8.171875 C 7.1875 -10.203125 5.5625 -11.375 3.75 -11.375 C 1.859375 -11.375 0.703125 -9.71875 0.703125 -8.15625 C 0.703125 -7.484375 1.203125 -7.40625 1.40625 -7.40625 C 1.578125 -7.40625 2.09375 -7.5 2.09375 -8.109375 C 2.09375 -8.640625 1.65625 -8.796875 1.40625 -8.796875 C 1.3125 -8.796875 1.203125 -8.78125 1.140625 -8.75 C 1.46875 -10.203125 2.46875 -10.9375 3.515625 -10.9375 C 5.015625 -10.9375 5.984375 -9.75 5.984375 -8.171875 C 5.984375 -6.6875 5.109375 -5.390625 4.125 -4.265625 L 0.703125 -0.390625 L 0.703125 0 L 6.765625 0 Z M 7.1875 -2.671875 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 5.875 -1 C 6.09375 -0.03125 6.921875 0.171875 7.328125 0.171875 C 7.890625 0.171875 8.296875 -0.1875 8.578125 -0.78125 C 8.875 -1.390625 9.09375 -2.40625 9.09375 -2.46875 C 9.09375 -2.546875 9.015625 -2.625 8.921875 -2.625 C 8.765625 -2.625 8.75 -2.53125 8.671875 -2.265625 C 8.375 -1.078125 8.0625 -0.171875 7.375 -0.171875 C 6.859375 -0.171875 6.859375 -0.734375 6.859375 -0.96875 C 6.859375 -1.359375 6.90625 -1.53125 7.078125 -2.25 C 7.203125 -2.71875 7.3125 -3.1875 7.421875 -3.671875 L 8.125 -6.46875 C 8.25 -6.90625 8.25 -6.9375 8.25 -6.984375 C 8.25 -7.25 8.046875 -7.421875 7.78125 -7.421875 C 7.28125 -7.421875 7.15625 -6.984375 7.0625 -6.5625 C 6.890625 -5.890625 5.953125 -2.1875 5.84375 -1.578125 C 5.8125 -1.578125 5.140625 -0.171875 3.890625 -0.171875 C 3 -0.171875 2.828125 -0.953125 2.828125 -1.578125 C 2.828125 -2.5625 3.3125 -3.9375 3.75 -5.09375 C 3.953125 -5.640625 4.046875 -5.875 4.046875 -6.21875 C 4.046875 -6.953125 3.515625 -7.59375 2.6875 -7.59375 C 1.109375 -7.59375 0.46875 -5.09375 0.46875 -4.953125 C 0.46875 -4.890625 0.53125 -4.796875 0.65625 -4.796875 C 0.8125 -4.796875 0.828125 -4.875 0.890625 -5.109375 C 1.3125 -6.59375 1.984375 -7.25 2.640625 -7.25 C 2.8125 -7.25 3.078125 -7.234375 3.078125 -6.6875 C 3.078125 -6.234375 2.890625 -5.734375 2.640625 -5.078125 C 1.875 -3.03125 1.796875 -2.375 1.796875 -1.859375 C 1.796875 -0.109375 3.109375 0.171875 3.828125 0.171875 C 4.921875 0.171875 5.53125 -0.578125 5.875 -1 Z M 5.875 -1 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 2.03125 -1.328125 C 1.609375 -0.625 1.203125 -0.375 0.640625 -0.34375 C 0.5 -0.328125 0.40625 -0.328125 0.40625 -0.125 C 0.40625 -0.046875 0.46875 0 0.546875 0 C 0.765625 0 1.296875 -0.03125 1.515625 -0.03125 C 1.859375 -0.03125 2.25 0 2.578125 0 C 2.65625 0 2.796875 0 2.796875 -0.234375 C 2.796875 -0.328125 2.703125 -0.34375 2.625 -0.34375 C 2.359375 -0.375 2.125 -0.46875 2.125 -0.75 C 2.125 -0.921875 2.203125 -1.046875 2.359375 -1.3125 L 3.265625 -2.828125 L 6.3125 -2.828125 C 6.328125 -2.71875 6.328125 -2.625 6.328125 -2.515625 C 6.375 -2.203125 6.515625 -0.953125 6.515625 -0.734375 C 6.515625 -0.375 5.90625 -0.34375 5.71875 -0.34375 C 5.578125 -0.34375 5.453125 -0.34375 5.453125 -0.125 C 5.453125 0 5.5625 0 5.625 0 C 5.828125 0 6.078125 -0.03125 6.28125 -0.03125 L 6.953125 -0.03125 C 7.6875 -0.03125 8.21875 0 8.21875 0 C 8.3125 0 8.4375 0 8.4375 -0.234375 C 8.4375 -0.34375 8.328125 -0.34375 8.15625 -0.34375 C 7.5 -0.34375 7.484375 -0.453125 7.453125 -0.8125 L 6.71875 -8.265625 C 6.6875 -8.515625 6.640625 -8.53125 6.515625 -8.53125 C 6.390625 -8.53125 6.328125 -8.515625 6.21875 -8.328125 Z M 3.46875 -3.171875 L 5.875 -7.1875 L 6.28125 -3.171875 Z M 3.46875 -3.171875 "/>
</symbol>
</g>
<clipPath id="clip1">
  <path d="M 4 4 L 753 4 L 753 381.640625 L 4 381.640625 Z M 4 4 "/>
</clipPath>
<clipPath id="clip2">
  <path d="M 284 190 L 286 190 L 286 248 L 284 248 Z M 284 190 "/>
</clipPath>
<clipPath id="clip3">
  <path d="M 0 381.640625 L 758 381.640625 L 758 -0.359375 L 0 -0.359375 Z M 283.785156 189.828125 L 285.730469 189.828125 L 288.929688 209.71875 L 280.585938 209.71875 Z M 283.785156 189.828125 "/>
</clipPath>
<clipPath id="clip4">
  <path d="M 565 190 L 567 190 L 567 248 L 565 248 Z M 565 190 "/>
</clipPath>
<clipPath id="clip5">
  <path d="M 0 381.640625 L 758 381.640625 L 758 -0.359375 L 0 -0.359375 Z M 565.441406 189.828125 L 567.386719 189.828125 L 570.585938 209.71875 L 562.242188 209.71875 Z M 565.441406 189.828125 "/>
</clipPath>
<clipPath id="clip6">
  <path d="M 666 252 L 724 252 L 724 254 L 666 254 Z M 666 252 "/>
</clipPath>
<clipPath id="clip7">
  <path d="M 0 381.640625 L 758 381.640625 L 758 -0.359375 L 0 -0.359375 Z M 723.863281 252.417969 L 723.863281 254.363281 L 703.976562 257.5625 L 703.976562 249.21875 Z M 723.863281 252.417969 "/>
</clipPath>
</defs>
<g id="surface1">
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 3.101562 165.765625 L 754.1875 165.765625 L 754.1875 153.246094 L 3.101562 153.246094 Z M 3.101562 165.765625 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 3.101562 71.878906 L 754.1875 71.878906 L 754.1875 59.359375 L 3.101562 59.359375 Z M 3.101562 71.878906 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 3.101562 259.652344 L 754.1875 259.652344 L 754.1875 247.132812 L 3.101562 247.132812 Z M 3.101562 259.652344 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 3.101562 353.535156 L 754.1875 353.535156 L 754.1875 341.019531 L 3.101562 341.019531 Z M 3.101562 353.535156 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 90.726562 378.574219 L 103.246094 378.574219 L 103.246094 3.03125 L 90.726562 3.03125 Z M 90.726562 378.574219 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 184.613281 378.574219 L 197.132812 378.574219 L 197.132812 3.03125 L 184.613281 3.03125 Z M 184.613281 378.574219 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 278.496094 378.574219 L 291.015625 378.574219 L 291.015625 3.03125 L 278.496094 3.03125 Z M 278.496094 378.574219 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 372.382812 378.574219 L 384.902344 378.574219 L 384.902344 3.03125 L 372.382812 3.03125 Z M 372.382812 378.574219 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 466.269531 378.574219 L 478.789062 378.574219 L 478.789062 3.03125 L 466.269531 3.03125 Z M 466.269531 378.574219 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 560.15625 378.574219 L 572.671875 378.574219 L 572.671875 3.03125 L 560.15625 3.03125 Z M 560.15625 378.574219 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(90.039062%,90.039062%,90.039062%);fill-opacity:1;" d="M 654.039062 378.574219 L 666.558594 378.574219 L 666.558594 3.03125 L 654.039062 3.03125 Z M 654.039062 378.574219 "/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.015625 2221.311875 L 7541.875 2221.311875 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.015625 3160.179063 L 7541.875 3160.179063 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.015625 1282.48375 L 7541.875 1282.48375 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 31.015625 343.616563 L 7541.875 343.616563 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 969.84375 3786.0775 L 969.84375 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1908.710938 3786.0775 L 1908.710938 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2847.578125 3786.0775 L 2847.578125 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3786.445312 3786.0775 L 3786.445312 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 4725.273438 3786.0775 L 4725.273438 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5664.140625 3786.0775 L 5664.140625 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(100%,100%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6603.007812 3786.0775 L 6603.007812 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(38.792419%,38.792419%,38.792419%);stroke-opacity:1;stroke-dasharray:125.181;stroke-miterlimit:10;" d="M 7228.90625 30.647813 L 343.945312 3473.147813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
</g>
<path style="fill:none;stroke-width:20.8635;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(38.792419%,38.792419%,38.792419%);stroke-opacity:1;stroke-dasharray:125.181;stroke-miterlimit:10;" d="M 969.84375 3473.147813 L 969.84375 30.647813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 65.691406 153.246094 L 128.28125 153.246094 L 128.28125 121.953125 L 65.691406 121.953125 Z M 65.691406 153.246094 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 969.84375 2221.311875 L 1078.359375 2409.124375 L 861.367188 2409.124375 Z M 969.84375 2221.311875 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 844.6875 2471.7025 L 1095.039062 2471.7025 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6603.007812 343.616563 L 6102.265625 343.616563 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6603.007812 343.616563 L 6477.8125 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6477.8125 343.616563 L 6352.65625 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6352.65625 343.616563 L 6227.460938 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6227.460938 343.616563 L 6102.265625 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 7103.710938 343.616563 L 6603.007812 343.616563 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 7103.710938 343.616563 L 6978.554688 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6978.554688 343.616563 L 6853.359375 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6853.359375 343.616563 L 6728.164062 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6728.164062 343.616563 L 6603.007812 218.42125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1470.585938 2471.7025 L 969.84375 2471.7025 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1470.585938 2471.7025 L 1345.390625 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1345.390625 2471.7025 L 1220.234375 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1220.234375 2471.7025 L 1095.039062 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1095.039062 2471.7025 L 969.84375 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 969.84375 2471.7025 L 469.140625 2471.7025 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 969.84375 2471.7025 L 844.6875 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 844.6875 2471.7025 L 719.492188 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 719.492188 2471.7025 L 594.296875 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 594.296875 2471.7025 L 469.140625 2596.897813 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,68.943787%,68.943787%);fill-opacity:1;" d="M 578.933594 253.390625 C 578.933594 260.304688 573.328125 265.910156 566.414062 265.910156 C 559.5 265.910156 553.894531 260.304688 553.894531 253.390625 C 553.894531 246.476562 559.5 240.871094 566.414062 240.871094 C 573.328125 240.871094 578.933594 246.476562 578.933594 253.390625 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5789.335938 1282.48375 C 5789.335938 1213.343125 5733.28125 1157.288438 5664.140625 1157.288438 C 5595 1157.288438 5538.945312 1213.343125 5538.945312 1282.48375 C 5538.945312 1351.624375 5595 1407.679063 5664.140625 1407.679063 C 5733.28125 1407.679063 5789.335938 1351.624375 5789.335938 1282.48375 Z M 5789.335938 1282.48375 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,68.943787%,68.943787%);fill-opacity:1;" d="M 297.273438 253.390625 C 297.273438 260.304688 291.671875 265.910156 284.757812 265.910156 C 277.84375 265.910156 272.238281 260.304688 272.238281 253.390625 C 272.238281 246.476562 277.84375 240.871094 284.757812 240.871094 C 291.671875 240.871094 297.273438 246.476562 297.273438 253.390625 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2972.734375 1282.48375 C 2972.734375 1213.343125 2916.71875 1157.288438 2847.578125 1157.288438 C 2778.4375 1157.288438 2722.382812 1213.343125 2722.382812 1282.48375 C 2722.382812 1351.624375 2778.4375 1407.679063 2847.578125 1407.679063 C 2916.71875 1407.679063 2972.734375 1351.624375 2972.734375 1282.48375 Z M 2972.734375 1282.48375 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5977.109375 1532.835313 C 5977.109375 1498.265 5949.0625 1470.257188 5914.492188 1470.257188 C 5879.921875 1470.257188 5851.914062 1498.265 5851.914062 1532.835313 C 5851.914062 1567.405625 5879.921875 1595.413438 5914.492188 1595.413438 C 5949.0625 1595.413438 5977.109375 1567.405625 5977.109375 1532.835313 Z M 5977.109375 1532.835313 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3160.507812 1532.835313 C 3160.507812 1498.265 3132.5 1470.257188 3097.929688 1470.257188 C 3063.359375 1470.257188 3035.351562 1498.265 3035.351562 1532.835313 C 3035.351562 1567.405625 3063.359375 1595.413438 3097.929688 1595.413438 C 3132.5 1595.413438 3160.507812 1567.405625 3160.507812 1532.835313 Z M 3160.507812 1532.835313 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:41.727;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 969.84375 2221.311875 L 969.84375 1282.48375 L 6603.007812 1282.48375 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:41.727;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6603.007812 343.616563 L 6603.007812 2221.311875 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<g clip-path="url(#clip3)" clip-rule="evenodd">
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2847.578125 1345.061875 L 2847.578125 1908.382188 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2889.296875 1719.2025 L 2847.578125 1886.116563 L 2805.859375 1719.2025 Z M 2889.296875 1719.2025 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<g clip-path="url(#clip5)" clip-rule="evenodd">
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5664.140625 1345.061875 L 5664.140625 1908.382188 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5705.859375 1719.2025 L 5664.140625 1886.116563 L 5622.421875 1719.2025 Z M 5705.859375 1719.2025 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<g clip-path="url(#clip6)" clip-rule="nonzero">
<g clip-path="url(#clip7)" clip-rule="evenodd">
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6665.585938 1282.48375 L 7228.90625 1282.48375 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 7039.765625 1240.765 L 7206.640625 1282.48375 L 7039.765625 1324.2025 Z M 7039.765625 1240.765 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1095.039062 2221.311875 L 1220.234375 1282.48375 L 4975.664062 1783.186875 L 6853.359375 1282.48375 L 6603.007812 343.616563 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,100%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6853.359375 1282.48375 L 7103.710938 2221.311875 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 969.84375 1094.710313 L 1220.234375 1094.710313 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 969.84375 1157.288438 L 969.84375 1032.093125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1220.234375 1157.288438 L 1220.234375 1032.093125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2847.578125 1032.093125 L 2847.578125 1157.288438 L 2847.578125 1094.710313 L 3097.929688 1094.710313 L 3097.929688 1157.288438 L 3097.929688 1032.093125 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3223.125 1532.835313 L 3348.28125 1532.835313 L 3285.703125 1532.835313 L 3285.703125 1282.48375 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5476.367188 1282.48375 L 5476.367188 1532.835313 L 5413.789062 1532.835313 L 5538.945312 1532.835313 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 5664.140625 1094.710313 L 5664.140625 969.515 L 5664.140625 1032.093125 L 5914.492188 1032.093125 L 5914.492188 1094.710313 L 5914.492188 969.515 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 478.789062 253.390625 C 478.789062 256.847656 475.984375 259.652344 472.527344 259.652344 C 469.070312 259.652344 466.269531 256.847656 466.269531 253.390625 C 466.269531 249.933594 469.070312 247.132812 472.527344 247.132812 C 475.984375 247.132812 478.789062 249.933594 478.789062 253.390625 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 4787.890625 1282.48375 C 4787.890625 1247.913438 4759.84375 1219.866563 4725.273438 1219.866563 C 4690.703125 1219.866563 4662.695312 1247.913438 4662.695312 1282.48375 C 4662.695312 1317.054063 4690.703125 1345.061875 4725.273438 1345.061875 C 4759.84375 1345.061875 4787.890625 1317.054063 4787.890625 1282.48375 Z M 4787.890625 1282.48375 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 666.558594 347.277344 C 666.558594 350.734375 663.757812 353.535156 660.300781 353.535156 C 656.84375 353.535156 654.039062 350.734375 654.039062 347.277344 C 654.039062 343.820312 656.84375 341.019531 660.300781 341.019531 C 663.757812 341.019531 666.558594 343.820312 666.558594 347.277344 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6665.585938 343.616563 C 6665.585938 309.04625 6637.578125 281.038438 6603.007812 281.038438 C 6568.4375 281.038438 6540.390625 309.04625 6540.390625 343.616563 C 6540.390625 378.186875 6568.4375 406.194688 6603.007812 406.194688 C 6637.578125 406.194688 6665.585938 378.186875 6665.585938 343.616563 Z M 6665.585938 343.616563 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 103.246094 159.507812 C 103.246094 162.960938 100.441406 165.765625 96.984375 165.765625 C 93.53125 165.765625 90.726562 162.960938 90.726562 159.507812 C 90.726562 156.050781 93.53125 153.246094 96.984375 153.246094 C 100.441406 153.246094 103.246094 156.050781 103.246094 159.507812 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1032.460938 2221.311875 C 1032.460938 2186.780625 1004.414062 2158.73375 969.84375 2158.73375 C 935.3125 2158.73375 907.265625 2186.780625 907.265625 2221.311875 C 907.265625 2255.882188 935.3125 2283.929063 969.84375 2283.929063 C 1004.414062 2283.929063 1032.460938 2255.882188 1032.460938 2221.311875 Z M 1032.460938 2221.311875 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 93.925781 137.53125 C 93.925781 139.296875 92.492188 140.726562 90.726562 140.726562 C 88.960938 140.726562 87.527344 139.296875 87.527344 137.53125 C 87.527344 135.761719 88.960938 134.328125 90.726562 134.328125 C 92.492188 134.328125 93.925781 135.761719 93.925781 137.53125 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 939.257812 2441.0775 C 939.257812 2423.42125 924.921875 2409.124375 907.265625 2409.124375 C 889.609375 2409.124375 875.273438 2423.42125 875.273438 2441.0775 C 875.273438 2458.772813 889.609375 2473.10875 907.265625 2473.10875 C 924.921875 2473.10875 939.257812 2458.772813 939.257812 2441.0775 Z M 939.257812 2441.0775 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 106.445312 137.53125 C 106.445312 139.296875 105.011719 140.726562 103.246094 140.726562 C 101.476562 140.726562 100.046875 139.296875 100.046875 137.53125 C 100.046875 135.761719 101.476562 134.328125 103.246094 134.328125 C 105.011719 134.328125 106.445312 135.761719 106.445312 137.53125 "/>
<path style="fill:none;stroke-width:10.4318;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1064.453125 2441.0775 C 1064.453125 2423.42125 1050.117188 2409.124375 1032.460938 2409.124375 C 1014.765625 2409.124375 1000.46875 2423.42125 1000.46875 2441.0775 C 1000.46875 2458.772813 1014.765625 2473.10875 1032.460938 2473.10875 C 1050.117188 2473.10875 1064.453125 2458.772813 1064.453125 2441.0775 Z M 1064.453125 2441.0775 " transform="matrix(0.1,0,0,-0.1,0,381.639)"/>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph0-1" x="578.856" y="203.337"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph1-1" x="590.353" y="206.436"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph0-1" x="297.216" y="203.337"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph1-2" x="308.713" y="206.436"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph0-1" x="710.287" y="284.699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph1-3" x="721.784" y="287.799"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph2-1" x="508.282" y="240.889"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="516.178" y="240.889"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="525.772" y="243.471"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph2-1" x="597.632" y="284.699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="605.527" y="284.699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="615.121" y="287.282"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph2-1" x="128.233" y="284.699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="136.128" y="284.699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="145.722" y="287.282"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph2-1" x="315.992" y="284.699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="323.888" y="284.699"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="333.481" y="287.282"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph2-1" x="334.768" y="247.148"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="342.664" y="247.148"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="352.257" y="249.73"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="115.715" y="165.785"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="125.309" y="168.367"/>
</g>
</g>
</svg>

The left beam is constrained by a roller and by the right beam, the first requires that the Centre of Instantaneous Rotation (CIR) belongs to the vertical line in $A$, while the second requires that the CIR belongs to the line that connects the hinges
of the right beam.

The angles of rotation are $\theta_\text{left} = u_A/L$ and $\theta_\text{right}
= -2 u_A/L$ and eventually we have $x_1=x_2=x_3=2u_A$ and

$$ \boldsymbol e = \begin{Bmatrix}2\\2\\2\end{Bmatrix}.$$

```python
e = array((2.0, 2.0, 2.0))
```

### Structural Matrices

```python
display(HTML(open('figures/trab1_conv.svg').read()))
```

<?xml version="1.0" encoding="UTF-8"?>
<svg xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" width="334.147pt" height="147.344pt" viewBox="0 0 334.147 147.344" version="1.1">
<defs>
<g>
<symbol overflow="visible" id="glyph0-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph0-1">
<path style="stroke:none;" d="M 5.46875 -1.484375 C 5.515625 -1.015625 5.609375 -0.609375 5.671875 -0.375 C 5.78125 0.046875 5.828125 0.265625 6.21875 0.265625 C 6.640625 0.265625 7.34375 -0.140625 7.34375 -0.328125 C 7.34375 -0.34375 7.34375 -0.390625 7.265625 -0.390625 C 7.25 -0.390625 7.140625 -0.375 6.96875 -0.28125 C 6.875 -0.234375 6.859375 -0.234375 6.828125 -0.234375 C 6.5625 -0.234375 6.5 -0.515625 6.390625 -1.046875 C 6.3125 -1.4375 6.25 -1.71875 6.15625 -3.046875 C 6.09375 -3.84375 6.046875 -4.625 6.046875 -5.421875 L 6.046875 -6.265625 C 6.046875 -6.4375 6.046875 -6.484375 5.953125 -6.484375 C 5.84375 -6.484375 5.484375 -6.359375 5.28125 -6.09375 L 5.21875 -5.984375 C 5.203125 -5.96875 4.5625 -4.5625 3.421875 -2.765625 C 2.953125 -2.046875 1.890625 -0.390625 1.375 -0.390625 C 1.125 -0.390625 0.734375 -0.578125 0.640625 -0.890625 C 0.625 -0.953125 0.625 -1 0.578125 -1 C 0.4375 -1 0.234375 -0.53125 0.234375 -0.296875 C 0.234375 0.015625 0.625 0.453125 1.078125 0.453125 C 1.625 0.453125 2.3125 -0.53125 2.96875 -1.484375 Z M 5.265625 -5.390625 L 5.265625 -5 C 5.265625 -3.984375 5.375 -2.484375 5.421875 -1.984375 L 3.734375 -1.984375 C 3.578125 -1.984375 3.453125 -1.984375 3.203125 -1.828125 C 3.765625 -2.6875 4.046875 -3.15625 4.375 -3.71875 C 4.9375 -4.734375 5.125 -5.140625 5.25 -5.390625 Z M 5.265625 -5.390625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-2">
<path style="stroke:none;" d="M 2.5625 -6.25 C 2.5625 -6.3125 2.53125 -6.328125 2.453125 -6.328125 C 2.359375 -6.328125 2.09375 -6.1875 1.90625 -6.09375 C 1.453125 -5.859375 1.125 -5.703125 1.125 -5.546875 C 1.125 -5.5 1.171875 -5.484375 1.21875 -5.484375 C 1.3125 -5.484375 1.578125 -5.625 1.765625 -5.703125 C 1.609375 -4.59375 1.4375 -3.671875 1.28125 -2.921875 C 1.015625 -1.71875 0.828125 -0.953125 0.390625 -0.109375 C 0.28125 0.109375 0.28125 0.125 0.28125 0.140625 C 0.28125 0.203125 0.359375 0.203125 0.375 0.203125 C 0.46875 0.203125 0.90625 0.046875 1.078125 -0.265625 C 1.25 -0.625 1.53125 -1.140625 1.75 -2 C 1.890625 -2.53125 2.265625 -4.015625 2.96875 -4.953125 C 3.328125 -5.421875 3.6875 -5.828125 4.375 -5.828125 C 4.859375 -5.828125 5.3125 -5.546875 5.3125 -5.03125 C 5.3125 -4.3125 4.59375 -4.03125 3.40625 -3.625 C 2.875 -3.453125 2.75 -3.25 2.75 -3.1875 C 2.75 -3.125 2.796875 -3.125 2.84375 -3.125 C 2.90625 -3.125 3.09375 -3.15625 3.296875 -3.15625 C 4.21875 -3.15625 4.984375 -2.625 4.984375 -1.765625 C 4.984375 -0.515625 3.796875 -0.3125 3.171875 -0.3125 C 2.71875 -0.3125 2.328125 -0.453125 2 -0.796875 C 1.953125 -0.859375 1.9375 -0.859375 1.875 -0.859375 C 1.75 -0.859375 1.5625 -0.765625 1.453125 -0.703125 C 1.25 -0.5625 1.25 -0.53125 1.1875 -0.40625 C 1.34375 -0.234375 1.6875 0.203125 2.5625 0.203125 C 3.875 0.203125 5.765625 -0.703125 5.765625 -2.15625 C 5.765625 -3.015625 5.0625 -3.53125 4.296875 -3.625 C 4.828125 -3.890625 6.09375 -4.5 6.09375 -5.421875 C 6.09375 -5.96875 5.625 -6.328125 4.984375 -6.328125 C 4.359375 -6.328125 3.25 -5.984375 2.359375 -4.859375 L 2.34375 -4.859375 Z M 2.5625 -6.25 "/>
</symbol>
<symbol overflow="visible" id="glyph0-3">
<path style="stroke:none;" d="M 4.59375 -1.40625 C 4.59375 -1.453125 4.5625 -1.484375 4.515625 -1.484375 C 4.421875 -1.484375 4.03125 -1.359375 3.828125 -1.0625 C 3.609375 -0.75 3.234375 -0.28125 2.5 -0.28125 C 1.65625 -0.28125 0.90625 -0.890625 0.90625 -2.25 C 0.90625 -2.859375 1.109375 -4.046875 1.890625 -5.03125 C 2.296875 -5.53125 2.8125 -5.828125 3.546875 -5.828125 C 3.96875 -5.828125 4.125 -5.65625 4.125 -5.34375 C 4.125 -5.015625 3.75 -4.34375 3.703125 -4.265625 C 3.625 -4.140625 3.625 -4.109375 3.625 -4.09375 C 3.625 -4.046875 3.6875 -4.03125 3.71875 -4.03125 C 3.875 -4.03125 4.25 -4.21875 4.375 -4.421875 C 4.40625 -4.46875 4.90625 -5.3125 4.90625 -5.734375 C 4.90625 -6.15625 4.65625 -6.328125 4.15625 -6.328125 C 3.078125 -6.328125 2 -5.734375 1.3125 -4.953125 C 0.453125 -3.984375 0.125 -2.6875 0.125 -1.859375 C 0.125 -0.5 0.875 0.21875 1.890625 0.21875 C 3.359375 0.21875 4.59375 -1.203125 4.59375 -1.40625 Z M 4.59375 -1.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph0-4">
<path style="stroke:none;" d="M 1.921875 0 C 4.078125 0 7.0625 -1.59375 7.0625 -4.03125 C 7.0625 -4.828125 6.6875 -5.375 6.078125 -5.71875 C 5.3125 -6.125 4.546875 -6.125 3.6875 -6.125 C 2.921875 -6.125 2.3125 -6.125 1.53125 -5.78125 C 0.3125 -5.21875 0.1875 -4.484375 0.1875 -4.453125 C 0.1875 -4.40625 0.203125 -4.375 0.28125 -4.375 C 0.34375 -4.375 0.515625 -4.421875 0.6875 -4.53125 C 0.921875 -4.6875 0.9375 -4.734375 0.984375 -4.890625 C 1.109375 -5.25 1.3125 -5.5625 2.53125 -5.625 C 2.421875 -3.84375 1.984375 -2.109375 1.3125 -0.46875 C 0.890625 -0.328125 0.765625 -0.109375 0.765625 -0.0625 C 0.765625 -0.015625 0.765625 0 0.984375 0 Z M 1.953125 -0.5 C 2.796875 -2.53125 3.109375 -3.984375 3.296875 -5.625 C 3.953125 -5.625 6.28125 -5.625 6.28125 -3.640625 C 6.28125 -1.859375 4.65625 -0.5 2.46875 -0.5 Z M 1.953125 -0.5 "/>
</symbol>
<symbol overflow="visible" id="glyph1-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph1-1">
<path style="stroke:none;" d="M 1.6875 -1.40625 C 1.796875 -1.828125 1.96875 -2.484375 1.96875 -2.5625 C 1.984375 -2.609375 2.21875 -3.046875 2.53125 -3.359375 C 2.796875 -3.59375 3.140625 -3.734375 3.484375 -3.734375 C 3.96875 -3.734375 3.96875 -3.265625 3.96875 -3.109375 C 3.96875 -3 3.96875 -2.875 3.859375 -2.4375 L 3.65625 -1.640625 C 3.375 -0.484375 3.296875 -0.203125 3.296875 -0.15625 C 3.296875 -0.046875 3.375 0.09375 3.578125 0.09375 C 3.703125 0.09375 3.84375 0.015625 3.90625 -0.09375 C 3.921875 -0.140625 4 -0.4375 4.046875 -0.609375 L 4.25 -1.40625 C 4.34375 -1.828125 4.515625 -2.484375 4.53125 -2.5625 C 4.546875 -2.609375 4.765625 -3.046875 5.09375 -3.359375 C 5.359375 -3.59375 5.6875 -3.734375 6.046875 -3.734375 C 6.53125 -3.734375 6.53125 -3.265625 6.53125 -3.109375 C 6.53125 -2.5625 6.109375 -1.46875 6.015625 -1.1875 C 5.90625 -0.921875 5.859375 -0.828125 5.859375 -0.65625 C 5.859375 -0.171875 6.234375 0.09375 6.640625 0.09375 C 7.5 0.09375 7.84375 -1.1875 7.84375 -1.28125 C 7.84375 -1.328125 7.828125 -1.390625 7.734375 -1.390625 C 7.625 -1.390625 7.625 -1.34375 7.59375 -1.234375 C 7.359375 -0.46875 6.984375 -0.125 6.65625 -0.125 C 6.59375 -0.125 6.4375 -0.125 6.4375 -0.40625 C 6.4375 -0.640625 6.53125 -0.875 6.59375 -1.0625 C 6.78125 -1.53125 7.140625 -2.46875 7.140625 -2.984375 C 7.140625 -3.78125 6.546875 -3.96875 6.078125 -3.96875 C 5.21875 -3.96875 4.75 -3.328125 4.59375 -3.109375 C 4.5 -3.84375 3.890625 -3.96875 3.515625 -3.96875 C 2.6875 -3.96875 2.25 -3.375 2.09375 -3.1875 C 2.046875 -3.671875 1.671875 -3.96875 1.234375 -3.96875 C 0.859375 -3.96875 0.65625 -3.6875 0.53125 -3.4375 C 0.390625 -3.125 0.265625 -2.625 0.265625 -2.578125 C 0.265625 -2.5 0.328125 -2.46875 0.390625 -2.46875 C 0.484375 -2.46875 0.5 -2.515625 0.546875 -2.703125 C 0.71875 -3.40625 0.90625 -3.734375 1.203125 -3.734375 C 1.484375 -3.734375 1.484375 -3.453125 1.484375 -3.3125 C 1.484375 -3.125 1.40625 -2.859375 1.359375 -2.625 C 1.296875 -2.390625 1.203125 -2 1.171875 -1.890625 L 0.8125 -0.421875 C 0.75 -0.203125 0.75 -0.1875 0.75 -0.15625 C 0.75 -0.046875 0.828125 0.09375 1.015625 0.09375 C 1.140625 0.09375 1.28125 0.015625 1.34375 -0.09375 C 1.375 -0.140625 1.4375 -0.4375 1.484375 -0.609375 Z M 1.6875 -1.40625 "/>
</symbol>
<symbol overflow="visible" id="glyph2-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph2-1">
<path style="stroke:none;" d="M -6.03125 -3.734375 C -6.390625 -3.8125 -6.5 -3.84375 -6.5 -4.78125 C -6.5 -5.078125 -6.5 -5.15625 -6.6875 -5.15625 C -6.8125 -5.15625 -6.8125 -5.046875 -6.8125 -5 C -6.8125 -4.671875 -6.78125 -3.859375 -6.78125 -3.53125 C -6.78125 -3.234375 -6.8125 -2.5 -6.8125 -2.203125 C -6.8125 -2.140625 -6.8125 -2.015625 -6.609375 -2.015625 C -6.5 -2.015625 -6.5 -2.109375 -6.5 -2.296875 C -6.5 -2.3125 -6.5 -2.5 -6.484375 -2.671875 C -6.453125 -2.84375 -6.453125 -2.9375 -6.3125 -2.9375 C -6.28125 -2.9375 -6.25 -2.9375 -6.125 -2.90625 L -0.78125 -1.5625 C -0.390625 -1.46875 -0.3125 -1.453125 -0.3125 -0.65625 C -0.3125 -0.484375 -0.3125 -0.390625 -0.109375 -0.390625 C 0 -0.390625 0 -0.484375 0 -0.65625 L 0 -5.28125 C 0 -5.515625 0 -5.515625 -0.171875 -5.578125 L -2.328125 -6.375 C -2.4375 -6.40625 -2.453125 -6.40625 -2.46875 -6.40625 C -2.5 -6.40625 -2.578125 -6.375 -2.578125 -6.296875 C -2.578125 -6.203125 -2.515625 -6.1875 -2.359375 -6.125 C -1.453125 -5.78125 -0.3125 -5.34375 -0.3125 -3.625 L -0.3125 -2.6875 C -0.3125 -2.546875 -0.3125 -2.515625 -0.3125 -2.46875 C -0.328125 -2.359375 -0.34375 -2.328125 -0.421875 -2.328125 C -0.453125 -2.328125 -0.46875 -2.328125 -0.640625 -2.375 Z M -6.03125 -3.734375 "/>
</symbol>
<symbol overflow="visible" id="glyph3-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph3-1">
<path style="stroke:none;" d="M 1.265625 -0.765625 L 2.328125 -1.796875 C 3.875 -3.171875 4.46875 -3.703125 4.46875 -4.703125 C 4.46875 -5.84375 3.578125 -6.640625 2.359375 -6.640625 C 1.234375 -6.640625 0.5 -5.71875 0.5 -4.828125 C 0.5 -4.28125 1 -4.28125 1.03125 -4.28125 C 1.203125 -4.28125 1.546875 -4.390625 1.546875 -4.8125 C 1.546875 -5.0625 1.359375 -5.328125 1.015625 -5.328125 C 0.9375 -5.328125 0.921875 -5.328125 0.890625 -5.3125 C 1.109375 -5.96875 1.65625 -6.328125 2.234375 -6.328125 C 3.140625 -6.328125 3.5625 -5.515625 3.5625 -4.703125 C 3.5625 -3.90625 3.078125 -3.125 2.515625 -2.5 L 0.609375 -0.375 C 0.5 -0.265625 0.5 -0.234375 0.5 0 L 4.203125 0 L 4.46875 -1.734375 L 4.234375 -1.734375 C 4.171875 -1.4375 4.109375 -1 4 -0.84375 C 3.9375 -0.765625 3.28125 -0.765625 3.0625 -0.765625 Z M 1.265625 -0.765625 "/>
</symbol>
<symbol overflow="visible" id="glyph4-0">
<path style="stroke:none;" d=""/>
</symbol>
<symbol overflow="visible" id="glyph4-1">
<path style="stroke:none;" d="M 3.734375 -6.03125 C 3.8125 -6.390625 3.84375 -6.5 4.78125 -6.5 C 5.078125 -6.5 5.15625 -6.5 5.15625 -6.6875 C 5.15625 -6.8125 5.046875 -6.8125 5 -6.8125 C 4.671875 -6.8125 3.859375 -6.78125 3.53125 -6.78125 C 3.234375 -6.78125 2.5 -6.8125 2.203125 -6.8125 C 2.140625 -6.8125 2.015625 -6.8125 2.015625 -6.609375 C 2.015625 -6.5 2.109375 -6.5 2.296875 -6.5 C 2.3125 -6.5 2.5 -6.5 2.671875 -6.484375 C 2.84375 -6.453125 2.9375 -6.453125 2.9375 -6.3125 C 2.9375 -6.28125 2.9375 -6.25 2.90625 -6.125 L 1.5625 -0.78125 C 1.46875 -0.390625 1.453125 -0.3125 0.65625 -0.3125 C 0.484375 -0.3125 0.390625 -0.3125 0.390625 -0.109375 C 0.390625 0 0.484375 0 0.65625 0 L 5.28125 0 C 5.515625 0 5.515625 0 5.578125 -0.171875 L 6.375 -2.328125 C 6.40625 -2.4375 6.40625 -2.453125 6.40625 -2.46875 C 6.40625 -2.5 6.375 -2.578125 6.296875 -2.578125 C 6.203125 -2.578125 6.1875 -2.515625 6.125 -2.359375 C 5.78125 -1.453125 5.34375 -0.3125 3.625 -0.3125 L 2.6875 -0.3125 C 2.546875 -0.3125 2.515625 -0.3125 2.46875 -0.3125 C 2.359375 -0.328125 2.328125 -0.34375 2.328125 -0.421875 C 2.328125 -0.453125 2.328125 -0.46875 2.375 -0.640625 Z M 3.734375 -6.03125 "/>
</symbol>
</g>
<clipPath id="clip1">
  <path d="M 322 104 L 334.148438 104 L 334.148438 121 L 322 121 Z M 322 104 "/>
</clipPath>
<clipPath id="clip2">
  <path d="M 322 109 L 334.148438 109 L 334.148438 126 L 322 126 Z M 322 109 "/>
</clipPath>
<clipPath id="clip3">
  <path d="M 322 114 L 334.148438 114 L 334.148438 131 L 322 131 Z M 322 114 "/>
</clipPath>
<clipPath id="clip4">
  <path d="M 322 118 L 334.148438 118 L 334.148438 136 L 322 136 Z M 322 118 "/>
</clipPath>
<clipPath id="clip5">
  <path d="M 318 3 L 334.148438 3 L 334.148438 20 L 318 20 Z M 318 3 "/>
</clipPath>
<clipPath id="clip6">
  <path d="M 8 71 L 9 71 L 9 121 L 8 121 Z M 8 71 "/>
</clipPath>
<clipPath id="clip7">
  <path d="M 0 147.34375 L 335 147.34375 L 335 -0.65625 L 0 -0.65625 Z M 8.582031 120.183594 L 7.835938 120.183594 L 6.601562 112.527344 L 9.816406 112.527344 Z M 7.835938 71.25 L 8.582031 71.25 L 9.816406 78.90625 L 6.601562 78.90625 Z M 7.835938 71.25 "/>
</clipPath>
<clipPath id="clip8">
  <path d="M 126 138 L 223 138 L 223 140 L 126 140 Z M 126 138 "/>
</clipPath>
<clipPath id="clip9">
  <path d="M 0 147.34375 L 335 147.34375 L 335 -0.65625 L 0 -0.65625 Z M 223.011719 138.707031 L 223.011719 139.457031 L 215.355469 140.691406 L 215.355469 137.476562 Z M 125.890625 139.457031 L 125.890625 138.707031 L 133.546875 137.476562 L 133.546875 140.691406 Z M 125.890625 139.457031 "/>
</clipPath>
<clipPath id="clip10">
  <path d="M 222 138 L 272 138 L 272 140 L 222 140 Z M 222 138 "/>
</clipPath>
<clipPath id="clip11">
  <path d="M 0 147.34375 L 335 147.34375 L 335 -0.65625 L 0 -0.65625 Z M 222.261719 139.457031 L 222.261719 138.707031 L 229.917969 137.476562 L 229.917969 140.691406 Z M 271.199219 138.707031 L 271.199219 139.457031 L 263.539062 140.691406 L 263.539062 137.476562 Z M 271.199219 138.707031 "/>
</clipPath>
<clipPath id="clip12">
  <path d="M 270 138 L 320 138 L 320 140 L 270 140 Z M 270 138 "/>
</clipPath>
<clipPath id="clip13">
  <path d="M 0 147.34375 L 335 147.34375 L 335 -0.65625 L 0 -0.65625 Z M 270.449219 139.457031 L 270.449219 138.707031 L 278.105469 137.476562 L 278.105469 140.691406 Z M 319.382812 138.707031 L 319.382812 139.457031 L 311.726562 140.691406 L 311.726562 137.476562 Z M 319.382812 138.707031 "/>
</clipPath>
<clipPath id="clip14">
  <path d="M 8 23 L 9 23 L 9 72 L 8 72 Z M 8 23 "/>
</clipPath>
<clipPath id="clip15">
  <path d="M 0 147.34375 L 335 147.34375 L 335 -0.65625 L 0 -0.65625 Z M 8.582031 71.996094 L 7.835938 71.996094 L 6.601562 64.339844 L 9.816406 64.339844 Z M 7.835938 23.0625 L 8.582031 23.0625 L 9.816406 30.71875 L 6.601562 30.71875 Z M 7.835938 23.0625 "/>
</clipPath>
<clipPath id="clip16">
  <path d="M 29 138 L 127 138 L 127 140 L 29 140 Z M 29 138 "/>
</clipPath>
<clipPath id="clip17">
  <path d="M 0 147.34375 L 335 147.34375 L 335 -0.65625 L 0 -0.65625 Z M 126.640625 138.707031 L 126.640625 139.457031 L 118.984375 140.691406 L 118.984375 137.476562 Z M 29.519531 139.457031 L 29.519531 138.707031 L 37.175781 137.476562 L 37.175781 140.691406 Z M 29.519531 139.457031 "/>
</clipPath>
<clipPath id="clip18">
  <path d="M 320 110 L 334.148438 110 L 334.148438 125 L 320 125 Z M 320 110 "/>
</clipPath>
<clipPath id="clip19">
  <path d="M 320 115 L 334.148438 115 L 334.148438 130 L 320 130 Z M 320 115 "/>
</clipPath>
</defs>
<g id="surface1">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 395.3125 1239.065 L 202.578125 1239.065 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 395.3125 1239.065 L 347.109375 1287.268125 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 347.109375 1239.065 L 298.945312 1287.268125 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 298.945312 1239.065 L 250.742188 1287.268125 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 250.742188 1239.065 L 202.578125 1287.268125 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3190.078125 1239.065 L 3231.835938 1311.330625 L 3148.320312 1311.330625 Z M 3190.078125 1239.065 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3141.914062 1335.432188 L 3238.28125 1335.432188 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3190.078125 275.354063 L 3262.382812 233.59625 L 3262.382812 317.111875 Z M 3190.078125 275.354063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 323.518125 L 3286.445312 227.150938 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 371.72125 L 3286.445312 178.986875 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip1)" clip-rule="nonzero">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 371.72125 L 3334.648438 323.518125 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
<g clip-path="url(#clip2)" clip-rule="nonzero">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 323.518125 L 3334.648438 275.354063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
<g clip-path="url(#clip3)" clip-rule="nonzero">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 275.354063 L 3334.648438 227.150938 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
<g clip-path="url(#clip4)" clip-rule="nonzero">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 227.150938 L 3334.648438 178.986875 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 1335.432188 L 3093.710938 1335.432188 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip5)" clip-rule="nonzero">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3286.445312 1335.432188 L 3238.28125 1383.635313 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3238.28125 1335.432188 L 3190.078125 1383.635313 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3190.078125 1335.432188 L 3141.914062 1383.635313 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3141.914062 1335.432188 L 3093.710938 1383.635313 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,56.054688%,56.054688%);fill-opacity:1;" d="M 275.640625 71.621094 C 275.640625 74.285156 273.484375 76.441406 270.824219 76.441406 C 268.160156 76.441406 266.003906 74.285156 266.003906 71.621094 C 266.003906 68.960938 268.160156 66.804688 270.824219 66.804688 C 273.484375 66.804688 275.640625 68.960938 275.640625 71.621094 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2756.40625 757.229063 C 2756.40625 730.588438 2734.84375 709.025938 2708.242188 709.025938 C 2681.601562 709.025938 2660.039062 730.588438 2660.039062 757.229063 C 2660.039062 783.830625 2681.601562 805.393125 2708.242188 805.393125 C 2734.84375 805.393125 2756.40625 783.830625 2756.40625 757.229063 Z M 2756.40625 757.229063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(0%,56.054688%,56.054688%);fill-opacity:1;" d="M 131.085938 71.621094 C 131.085938 74.285156 128.925781 76.441406 126.265625 76.441406 C 123.605469 76.441406 121.445312 74.285156 121.445312 71.621094 C 121.445312 68.960938 123.605469 66.804688 126.265625 66.804688 C 128.925781 66.804688 131.085938 68.960938 131.085938 71.621094 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1310.859375 757.229063 C 1310.859375 730.588438 1289.257812 709.025938 1262.65625 709.025938 C 1236.054688 709.025938 1214.453125 730.588438 1214.453125 757.229063 C 1214.453125 783.830625 1236.054688 805.393125 1262.65625 805.393125 C 1289.257812 805.393125 1310.859375 783.830625 1310.859375 757.229063 Z M 1310.859375 757.229063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054688 757.229063 L 158.125 757.229063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054688 1239.065 L 158.125 1239.065 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip6)" clip-rule="nonzero">
<g clip-path="url(#clip7)" clip-rule="evenodd">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 82.109375 757.229063 L 82.109375 275.354063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.164062 684.3775 L 82.109375 748.635313 L 66.015625 684.3775 Z M 98.164062 684.3775 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.015625 348.166563 L 82.109375 283.90875 L 98.164062 348.166563 Z M 66.015625 348.166563 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054688 275.354063 L 158.125 275.354063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 6.054688 757.229063 L 158.125 757.229063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 298.945312 158.635313 L 298.945312 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1262.65625 158.635313 L 1262.65625 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip8)" clip-rule="nonzero">
<g clip-path="url(#clip9)" clip-rule="evenodd">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1262.65625 82.619688 L 2226.367188 82.619688 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1335.46875 98.674375 L 1271.210938 82.619688 L 1335.46875 66.525938 Z M 1335.46875 98.674375 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2153.554688 66.525938 L 2217.8125 82.619688 L 2153.554688 98.674375 Z M 2153.554688 66.525938 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1262.65625 158.635313 L 1262.65625 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2226.367188 158.635313 L 2226.367188 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip10)" clip-rule="nonzero">
<g clip-path="url(#clip11)" clip-rule="evenodd">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2708.242188 82.619688 L 2226.367188 82.619688 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2635.390625 66.525938 L 2699.648438 82.619688 L 2635.390625 98.674375 Z M 2635.390625 66.525938 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2299.179688 98.674375 L 2234.921875 82.619688 L 2299.179688 66.525938 Z M 2299.179688 98.674375 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2226.367188 158.635313 L 2226.367188 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2708.242188 158.635313 L 2708.242188 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip12)" clip-rule="nonzero">
<g clip-path="url(#clip13)" clip-rule="evenodd">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3190.078125 82.619688 L 2708.242188 82.619688 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3117.265625 66.525938 L 3181.523438 82.619688 L 3117.265625 98.674375 Z M 3117.265625 66.525938 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2781.054688 98.674375 L 2716.796875 82.619688 L 2781.054688 66.525938 Z M 2781.054688 98.674375 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2708.242188 158.635313 L 2708.242188 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3190.078125 158.635313 L 3190.078125 6.565 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip14)" clip-rule="nonzero">
<g clip-path="url(#clip15)" clip-rule="evenodd">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 82.109375 1239.065 L 82.109375 757.229063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 98.164062 1166.2525 L 82.109375 1230.510313 L 66.015625 1166.2525 Z M 98.164062 1166.2525 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 66.015625 830.041563 L 82.109375 765.78375 L 98.164062 830.041563 Z M 66.015625 830.041563 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<g clip-path="url(#clip16)" clip-rule="nonzero">
<g clip-path="url(#clip17)" clip-rule="evenodd">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 298.945312 82.619688 L 1262.65625 82.619688 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
</g>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 371.757812 98.674375 L 307.5 82.619688 L 371.757812 66.525938 Z M 371.757812 98.674375 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill-rule:evenodd;fill:rgb(0%,0%,0%);fill-opacity:1;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 1189.84375 66.525938 L 1254.0625 82.619688 L 1189.84375 98.674375 Z M 1189.84375 66.525938 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:16.062;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 298.945312 1239.065 L 298.945312 757.229063 L 3190.078125 757.229063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style="fill:none;stroke-width:16.062;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3190.078125 1239.065 L 3190.078125 275.354063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 0.605469 107.761719 L 15.8125 107.761719 L 15.8125 83.667969 L 0.605469 83.667969 Z M 0.605469 107.761719 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 66.03125 146.6875 L 90.125 146.6875 L 90.125 131.480469 L 66.03125 131.480469 Z M 66.03125 146.6875 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 162.40625 146.6875 L 186.496094 146.6875 L 186.496094 131.480469 L 162.40625 131.480469 Z M 162.40625 146.6875 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 234.683594 146.6875 L 258.777344 146.6875 L 258.777344 131.480469 L 234.683594 131.480469 Z M 234.683594 146.6875 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 282.871094 146.6875 L 306.964844 146.6875 L 306.964844 131.480469 L 282.871094 131.480469 Z M 282.871094 146.6875 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 0.605469 59.578125 L 15.8125 59.578125 L 15.8125 35.484375 L 0.605469 35.484375 Z M 0.605469 59.578125 "/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 225.046875 71.621094 C 225.046875 72.953125 223.96875 74.03125 222.636719 74.03125 C 221.308594 74.03125 220.226562 72.953125 220.226562 71.621094 C 220.226562 70.292969 221.308594 69.214844 222.636719 69.214844 C 223.96875 69.214844 225.046875 70.292969 225.046875 71.621094 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 2250.46875 757.229063 C 2250.46875 743.90875 2239.6875 733.1275 2226.367188 733.1275 C 2213.085938 733.1275 2202.265625 743.90875 2202.265625 757.229063 C 2202.265625 770.510313 2213.085938 781.291563 2226.367188 781.291563 C 2239.6875 781.291563 2250.46875 770.510313 2250.46875 757.229063 Z M 2250.46875 757.229063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 32.300781 23.4375 C 32.300781 24.765625 31.222656 25.847656 29.894531 25.847656 C 28.5625 25.847656 27.484375 24.765625 27.484375 23.4375 C 27.484375 22.105469 28.5625 21.027344 29.894531 21.027344 C 31.222656 21.027344 32.300781 22.105469 32.300781 23.4375 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 323.007812 1239.065 C 323.007812 1225.78375 312.226562 1214.963438 298.945312 1214.963438 C 285.625 1214.963438 274.84375 1225.78375 274.84375 1239.065 C 274.84375 1252.385313 285.625 1263.166563 298.945312 1263.166563 C 312.226562 1263.166563 323.007812 1252.385313 323.007812 1239.065 Z M 323.007812 1239.065 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 321.417969 23.4375 C 321.417969 24.765625 320.339844 25.847656 319.007812 25.847656 C 317.679688 25.847656 316.601562 24.765625 316.601562 23.4375 C 316.601562 22.105469 317.679688 21.027344 319.007812 21.027344 C 320.339844 21.027344 321.417969 22.105469 321.417969 23.4375 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3214.179688 1239.065 C 3214.179688 1225.78375 3203.398438 1214.963438 3190.078125 1214.963438 C 3176.796875 1214.963438 3166.015625 1225.78375 3166.015625 1239.065 C 3166.015625 1252.385313 3176.796875 1263.166563 3190.078125 1263.166563 C 3203.398438 1263.166563 3214.179688 1252.385313 3214.179688 1239.065 Z M 3214.179688 1239.065 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 321.417969 119.808594 C 321.417969 121.140625 320.339844 122.21875 319.007812 122.21875 C 317.679688 122.21875 316.601562 121.140625 316.601562 119.808594 C 316.601562 118.476562 317.679688 117.398438 319.007812 117.398438 C 320.339844 117.398438 321.417969 118.476562 321.417969 119.808594 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3214.179688 275.354063 C 3214.179688 262.03375 3203.398438 251.2525 3190.078125 251.2525 C 3176.796875 251.2525 3166.015625 262.03375 3166.015625 275.354063 C 3166.015625 288.674375 3176.796875 299.455625 3190.078125 299.455625 C 3203.398438 299.455625 3214.179688 288.674375 3214.179688 275.354063 Z M 3214.179688 275.354063 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 317.832031 14.976562 C 317.832031 15.65625 317.28125 16.210938 316.601562 16.210938 C 315.921875 16.210938 315.367188 15.65625 315.367188 14.976562 C 315.367188 14.296875 315.921875 13.746094 316.601562 13.746094 C 317.28125 13.746094 317.832031 14.296875 317.832031 14.976562 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3178.320312 1323.674375 C 3178.320312 1316.8775 3172.8125 1311.330625 3166.015625 1311.330625 C 3159.21875 1311.330625 3153.671875 1316.8775 3153.671875 1323.674375 C 3153.671875 1330.47125 3159.21875 1335.979063 3166.015625 1335.979063 C 3172.8125 1335.979063 3178.320312 1330.47125 3178.320312 1323.674375 Z M 3178.320312 1323.674375 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 322.648438 14.976562 C 322.648438 15.65625 322.097656 16.210938 321.417969 16.210938 C 320.738281 16.210938 320.1875 15.65625 320.1875 14.976562 C 320.1875 14.296875 320.738281 13.746094 321.417969 13.746094 C 322.097656 13.746094 322.648438 14.296875 322.648438 14.976562 "/>
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3226.484375 1323.674375 C 3226.484375 1316.8775 3220.976562 1311.330625 3214.179688 1311.330625 C 3207.382812 1311.330625 3201.875 1316.8775 3201.875 1323.674375 C 3201.875 1330.47125 3207.382812 1335.979063 3214.179688 1335.979063 C 3220.976562 1335.979063 3226.484375 1330.47125 3226.484375 1323.674375 Z M 3226.484375 1323.674375 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 328.59375 117.398438 C 328.59375 118.050781 328.066406 118.578125 327.414062 118.578125 C 326.765625 118.578125 326.238281 118.050781 326.238281 117.398438 C 326.238281 116.75 326.765625 116.222656 327.414062 116.222656 C 328.066406 116.222656 328.59375 116.75 328.59375 117.398438 "/>
<g clip-path="url(#clip18)" clip-rule="nonzero">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3285.9375 299.455625 C 3285.9375 292.932188 3280.664062 287.65875 3274.140625 287.65875 C 3267.65625 287.65875 3262.382812 292.932188 3262.382812 299.455625 C 3262.382812 305.94 3267.65625 311.213438 3274.140625 311.213438 C 3280.664062 311.213438 3285.9375 305.94 3285.9375 299.455625 Z M 3285.9375 299.455625 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
<path style=" stroke:none;fill-rule:evenodd;fill:rgb(100%,100%,100%);fill-opacity:1;" d="M 328.59375 122.21875 C 328.59375 122.867188 328.066406 123.394531 327.414062 123.394531 C 326.765625 123.394531 326.238281 122.867188 326.238281 122.21875 C 326.238281 121.566406 326.765625 121.039062 327.414062 121.039062 C 328.066406 121.039062 328.59375 121.566406 328.59375 122.21875 "/>
<g clip-path="url(#clip19)" clip-rule="nonzero">
<path style="fill:none;stroke-width:4.0155;stroke-linecap:butt;stroke-linejoin:miter;stroke:rgb(0%,0%,0%);stroke-opacity:1;stroke-miterlimit:10;" d="M 3285.9375 251.2525 C 3285.9375 244.768125 3280.664062 239.494688 3274.140625 239.494688 C 3267.65625 239.494688 3262.382812 244.768125 3262.382812 251.2525 C 3262.382812 257.775938 3267.65625 263.049375 3274.140625 263.049375 C 3280.664062 263.049375 3285.9375 257.775938 3285.9375 251.2525 Z M 3285.9375 251.2525 " transform="matrix(0.1,0,0,-0.1,0,147.344)"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph0-1" x="26.248" y="16.223"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph0-2" x="315.899" y="6.586"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph0-3" x="313.955" y="131.871"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph0-4" x="218.989" y="83.684"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph1-1" x="122.243" y="62"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph1-1" x="266.803784" y="62"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph2-1" x="11.886" y="50.934"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph2-1" x="11.886" y="99.121"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="72.235" y="142.739"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="77.216" y="142.739"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph3-1" x="168.608" y="142.739"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="173.59" y="142.739"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="243.374028" y="142.739"/>
</g>
<g style="fill:rgb(0%,0%,0%);fill-opacity:1;">
  <use xlink:href="#glyph4-1" x="291.569102" y="142.739"/>
</g>
</g>
</svg>

Compute the 3x3 flexibility using the Principle of Virtual Displacements and the 3x3 stiffness using inversion, while the mass matrix is directly assembled with the understanding that the lumped mass on $x_1$ is $2m$.

The code uses a structure `m` where each of the three rows contains the
computational represention (as polynomial coefficients) of the bending moments due to
a unit load applied in the position of each of the three degrees of freedom,
in each row six groups of polynomial coefficients, one group for each of the six
intervals of definition in which the structure has been subdivided (a possible seventh interval is omitted because the bending moment is always zero for every possible unit load).

```python
l = [1, 2, 2, 1, 1, 1]
h = 0.5 ; t = 3*h
m = [[p(2,0),p(h,0),p(h,1),p(h,0),p(h,h),p(1,0)],
     [p(2,0),p(1,0),p(0,2),p(1,0),p(1,1),p(2,0)],
     [p(2,0),p(h,0),p(h,1),p(h,0),p(t,h),p(2,0)]]

F = array([[vw(emme, chi, l) for emme in m] for chi in m])
K = inv(F)
M = array(((2.0, 0.0, 0.0),
           (0.0, 1.0, 0.0),
           (0.0, 0.0, 1.0)))
iM = inv(M)

ld('\\boldsymbol F = \\frac{L^3}{12EJ}\\,', pmat(rounder(F*12), fmt='%+d'))
ld('\\boldsymbol K = \\frac{3 EJ}{1588L^3}\\,',
               pmat(rounder(K*1588/3), fmt='%+d'),
              '= \\frac{EJ}{L^3}\\;\\hat{\\boldsymbol K}.')
ld('\\boldsymbol M = m\\,', pmat(M, fmt='%d'),
              '= m\\;\\hat{\\boldsymbol M}.')
```

$$\boldsymbol F = \frac{L^3}{12EJ}\, \begin{bmatrix}
  +92&+128&+101\\
  +128&+192&+146\\
  +101&+146&+118
\end{bmatrix}$$

$$\boldsymbol K = \frac{3 EJ}{1588L^3}\, \begin{bmatrix}
  +1340&-358&-704\\
  -358&+655&-504\\
  -704&-504&+1280
\end{bmatrix} = \frac{EJ}{L^3}\;\hat{\boldsymbol K}.$$

$$\boldsymbol M = m\, \begin{bmatrix}
  2&0&0\\
  0&1&0\\
  0&0&1
\end{bmatrix} = m\;\hat{\boldsymbol M}.$$

### The eigenvalues problem

We solve immediately the eigenvalue problem because when we know the shortest modal period of vibration it is possible to choose the integration time step $h$ to avoid numerical unstability issues with the linear acceleration algorithm.

```python
wn2, Psi = eigh(K, M)
wn = sqrt(wn2)
li = wn
Lambda2 = diag(wn2)
Lambda = diag(wn)
# eigenvectors are normalized → M* is a unit matrix, as well as its inverse
Mstar, iMstar = eye(3), eye(3)

ld(r'\boldsymbol\Omega^2 = \omega_0^2\,', pmat(Lambda2),
   r'=\omega_0^2\,\boldsymbol\Lambda^2.')
ld(r'\boldsymbol\Omega=\omega_0\,', pmat(Lambda),
   r'=\omega_0\,\boldsymbol\Lambda.')
ld(r'\boldsymbol T_\text{n}=\frac{2\pi}{\omega_0}\,', pmat(inv(Lambda)),
   r'= t_0\,\boldsymbol\Theta.')
ld(r'\Psi=', pmat(Psi), '.')
```

$$\boldsymbol\Omega^2 = \omega_0^2\, \begin{bmatrix}
  +0.024831&+0.000000&+0.000000\\
  +0.000000&+1.729964&+0.000000\\
  +0.000000&+0.000000&+3.166490
\end{bmatrix} =\omega_0^2\,\boldsymbol\Lambda^2.$$

$$\boldsymbol\Omega=\omega_0\, \begin{bmatrix}
  +0.157577&+0.000000&+0.000000\\
  +0.000000&+1.315281&+0.000000\\
  +0.000000&+0.000000&+1.779463
\end{bmatrix} =\omega_0\,\boldsymbol\Lambda.$$

$$\boldsymbol T_\text{n}=\frac{2\pi}{\omega_0}\, \begin{bmatrix}
  +6.346086&+0.000000&-0.000000\\
  +0.000000&+0.760294&-0.000000\\
  +0.000000&+0.000000&+0.561967
\end{bmatrix} = t_0\,\boldsymbol\Theta.$$

$$\Psi= \begin{bmatrix}
  -0.431570&+0.504229&-0.243928\\
  -0.623940&-0.701061&-0.345271\\
  -0.488051&+0.004508&+0.872803
\end{bmatrix} .$$

## Numerical Integration

The shortest period is $T_3 = 2\pi\,0.562/\omega_0 \rightarrow A_3 = 1.124 \pi$ hence to avoid unstability of the linear acceleration algorithm we shall use a non dimensional time step $h<0.55A_3\approx0.6\pi$. We can anticipate that the modal response associated with mode 2 is important ($\lambda_2\approx\lambda_0$) so we choose an adimensional time step $h=A_2/20=2\pi\,0.760/20\approx0.08\pi$ that is much smaller than the maximum time step for which we have a stable behaviour.

### Initialization

First a new, longer adimensional time vector and the corresponding support acceleration, then the efficace load vector (`peff` is an array with 2001 rows and 3 columns, each row corresponding to the force vector in a particular instant of time)

```python
nsppi = 200
a, _, _, aA = a_uA_vA_aA(0, 16*pi, nsppi*16+1)
peff = (- M @ e) * aA[:,None]
```

The constants that we need in the linear acceleration algorithm — note that we have an undamped system or, in other words, $\boldsymbol C = \boldsymbol 0$

```python
h = pi/nsppi
K_ = K + 6*M/h**2
F_ = inv(K_)
dp_v = 6*M/h
dp_a = 3*M
```

### The integration loop

First we initialize the containers where to save the new results with the initial values at $a=0$, next the loop on the values of the load at times $t_i$ and $t_{i+1}$ with $i=0,\ldots,1999$.

```python
Xl, Vl = [zeros(3)], [zeros(3)]
for p0, p1 in p0_p1(peff):
    x0, v0 = Xl[-1], Vl[-1]
    a0 = iM @ (p0 -K@x0)
    dp = (p1-p0) + dp_a@a0 + dp_v@v0
    dx = F_@dp
    dv = 3*dx/h - 3*v0 - a0*h/2
    Xl.append(x0+dx), Vl.append(v0+dv)
Xl = array(Xl) ; Vl = array(Vl)
```

#### Plotting

```python
for i, line in enumerate(plt.plot(a/pi, Xl), 1):
    line.set_label(r'$x_{%d}$'%i)
plt.xlabel(r'$\omega_0 t/\pi$')
plt.ylabel(r'$x_i/\delta$')
plt.title('Response — numerical integration — lin.acc.')
plt.legend();
```

## Equation of Motion

Denoting with $\boldsymbol x$ the dynamic component of the displacements, with $\boldsymbol x_\text{tot} = \boldsymbol x + \boldsymbol x_\text{stat} = \boldsymbol x + \boldsymbol e \;u_\mathcal{A}$ the equation of motion is (the independent variable being $a=\omega_0t$)

$$ \hat{\boldsymbol M} \ddot{\boldsymbol x} +
   \hat{\boldsymbol K} \boldsymbol x  =
   - \hat{\boldsymbol M} \boldsymbol e \ddot u_\mathcal{A}. $$

Using mass-normalized eigenvectors, with $\boldsymbol x = \delta\boldsymbol\Psi\boldsymbol q$ we have

$$ \boldsymbol I \ddot{\boldsymbol q} +
   \boldsymbol\Lambda^2\boldsymbol q =
   \boldsymbol\Psi^T\hat{\boldsymbol M} \boldsymbol e \frac{\ddot u_A}{\delta}.$$

It is $$\frac{\ddot u_A}{\delta} = \frac{1}{2\pi}\,\lambda_0^2\,\sin(\lambda_0a)$$

and $$ \ddot q_i + \lambda_i^2 q_i =
\frac{\Gamma_i}{2\pi}\,\lambda_0^2\,\sin(\lambda_0 a),\qquad\text{with }
\Gamma_i = -\boldsymbol\psi_i^T \hat{\boldsymbol M} \boldsymbol e\text{ and }
\lambda_0 = \frac43.$$

```python
G = - Psi.T @ M @ e
```

Substituting a particular integral $\xi_i=C_i\sin(\lambda_0 a)$ in the
modal equation of motion we have

$$(\lambda^2_i-\lambda^2_0)\,C_i\sin(\lambda_0 a) =
  \frac{\Gamma_i}{2\pi}\,\lambda_0^2\,\sin(\lambda_0 a)$$

and solving w/r to $C_i$ we have

$$ C_i = \frac{\Gamma_i}{2\pi}\,\frac{\lambda_0^2}{\lambda_i^2-\lambda_0^2}$$

```python
C = G*l0**2/(li**2-l0**2)/2/pi
```

The modal response, taking into account that we start from rest conditions, is

$$ q_i = C_i\left(\sin(\lambda_0 a) -
                   \frac{\lambda_0}{\lambda_i}\,\sin(\lambda_i a)\right)$$
$$ \dot q_i = \lambda_0 C_i \left(
      \cos(\lambda_0 a) - \cos(\lambda_i a) \right).$$

```python
for n in range(3):
    i = n+1
    ld(r'q_%d=%+10f\left(\sin\frac43a-%10f\sin%1fa\right)' % (i,C[n],l0/li[n],li[n]),
       r'\qquad\text{for }0 \le a \le \frac32\pi')
```

$$q_1= -0.637609\left(\sin\frac43a-  8.461449\sin0.157577a\right) \qquad\text{for }0 \le a \le \frac32\pi$$

$$q_2= +3.691468\left(\sin\frac43a-  1.013725\sin1.315281a\right) \qquad\text{for }0 \le a \le \frac32\pi$$

$$q_3= -0.016167\left(\sin\frac43a-  0.749290\sin1.779463a\right) \qquad\text{for }0 \le a \le \frac32\pi$$

### Free vibration phase, $a\ge 3\pi/2 = a_1$

When the forced phase end, the system is in free vibrations and we can determine the constants of integration requiring that the displacements and velocities of the free vibration equal the displacements and velocities of the forced response at $t=t_0$.

\begin{align}
  + (\cos\lambda_i a_1)\, A_i + (\sin\lambda_i a_1)\, B_i &=
  q_i(a_1) \\
  - (\sin\lambda_i a_1)\, A_i + (\cos\lambda_i a_1)\, B_i &=
  \frac{\dot q_i(a_1)}{\lambda_i}
\end{align}

Because the coefficients form an othogonal matrix,

\begin{align}
  A_i &= + (\cos\lambda_i a_1)\, q_i(a_1)
         - (\sin\lambda_i a_1)\, \frac{\dot q_i(a_1)}{\lambda_i}\\
  B_i &= + (\sin\lambda_i a_1)\, q_i(a_1)
         + (\cos\lambda_i a_1)\, \frac{\dot q_i(a_1)}{\lambda_i}.
\end{align}

```python
a1 = 3*pi/2
q_a1 = C*(sin(l0*a1)-l0*sin(li*a1)/li)
v_a1 = C*l0*(cos(l0*a1)-cos(li*a1))

ABs = []
for i in range(3):
    b = array((q_a1[i], v_a1[i]/li[i]))
    A = array(((+cos(li[i]*a1), -sin(li[i]*a1)),
               (+sin(li[i]*a1), +cos(li[i]*a1))))
    ABs.append(A@b)
ABs = array(ABs)
```

#### Analytical expressions

```python
display(Latex(r'Modal responses for $a_1 \le a$.'))
for n in range(3):
    i, l, A_, B_ = n+1, li[n], *ABs[n]
    display(Latex((r'$$q_{%d} = '+
                  r'%+6.3f\cos%6.3fa '+
                  r'%+6.3f\sin%6.3fa$$')%(i, A_, l, B_, l)))
```

Modal responses for $a_1 \le a$.

$$q_{1} = +3.648\cos 0.158a +1.420\sin 0.158a$$

$$q_{2} = +0.318\cos 1.315a -0.014\sin 1.315a$$

$$q_{3} = +0.010\cos 1.779a +0.018\sin 1.779a$$

#### Stitching the two responses

We must evaluate numerically the analytical responses

```python
ac = a[:,None]

q = where(ac<=a1,
             C*(sin(l0*ac)-l0*sin(li*ac)/li),
             ABs[:,0]*cos(li*ac) + ABs[:,1]*sin(li*ac))
```

#### Plotting the Analytical Response
First, we zoom around $a_1$ to verify the continuity of displacements and velocities

```python
# #### Plot zooming around a1
low, hi = int(0.8*a1*nsppi/pi), int(1.2*a1*nsppi/pi)
for i, line in enumerate(plt.plot(a[low:hi]/pi, q[low:hi]), 1):
    line.set_label('$q_{%d}$'%i)
plt.title('Modal Responses, zoom on transition zone')
plt.xlabel(r'$\omega_0 t/\pi$')
plt.legend(loc='best')
plt.show()
```

next, the modal responses over the interval $0 \le a \le 16\pi$

```python
# #### Plot in 0 ≤ a ≤ 16 pi
for i, line in enumerate(plt.plot(a/pi, q), 1):
    line.set_label('$q_{%d}$'%i)
plt.title('Modal Responses')
plt.xlabel(r'$\omega_0 t/\pi$')
plt.legend(loc='best');
plt.xticks()
plt.show();
```

### Nodal responses

```python
x = q@Psi.T
```

Why `x = q@Psi.T` rather than `x = Psi@q`?  Because for different reasons (mostly, ease of use with the plotting libraries) we have all the response arrays organized in the shape of `(Nsteps × 3)`.

That's equivalent to say that `q` and `x`, the Pyton objects, are isomorph to $\boldsymbol q^T$ and $\boldsymbol x^T$ and because it is  $$\boldsymbol x^T = (\boldsymbol\Psi \boldsymbol q)^T = \boldsymbol q^T \boldsymbol \Psi^T,$$
in Python to write `x = q@Psi.T` we have.

That said. here are the plot of the nodal responses. Compare with the numerical solutions.

```python
for i, line in enumerate(plt.plot(a/pi, x), 1):
    line.set_label('$x_{%d}/\delta$'%i)
plt.title('Normalized Nodal Displacements — analytical solution')
plt.xlabel(r'$\omega_0 t / \pi$')
plt.legend(loc='best')
plt.show();
```


```python
# 그래프, 수학 기능 추가
# Add graph and math features
import pylab as py
import numpy as np
import numpy.linalg as nl
# 기호 연산 기능 추가
# Add symbolic operation capability
import sympy as sy

```

# 임의하중하 단순지지보의 반력
Reaction forces of a simple supported beam under a general load

다음과 같은 보의 반력을 구해 보자.

Let's try to find the reaction forces of the following beam.

보의 길이:

Length of the beam:

```python
L = sy.symbols('L[m]', real=True, nonnegative=True)

```

```python
L
```

양단 단순 지지인 경우는 x방향 하나, y방향 두개의 반력을 가정할 수 있다.

Simple supports at both ends would have three reaction forces: one in $x$ and two in $y$ directions.

```python
R_Ax, R_Ay, R_By = sy.symbols('R_{Ax}[N] R_{Ay}[N] R_{By}[N]', real=True)

```

```python
R_Ax

```

```python
R_Ay

```

```python
R_By

```

$R_{Ax}$ 는 $-\infty$ 방향, $R_{Ay}$ 와 $R_{By}$ 는 $+\infty$ 방향이 양의 방향으로 가정하자.

Let's assume $R_{Ax}$ is positive in $-\infty$ direction.  Also $R_{Ay}$ and $R_{By}$ would be positive in $+\infty$ direction.

하중 벡터의 성분:

Components of the load vector:

```python
F_x, F_y = sy.symbols('F_{x}[N] F_{y}[N]', real=True)

```

```python
F_x

```

```python
F_y

```

$F_{x}$ 는 $+\infty$ 방향, $F_{y}$ 는 $-\infty$ 방향이 양의 방향으로 가정하자.

Let's assume $F_{x}$ and $F_{y}$ are positive in $+\infty$ and $-\infty$ directions, respectively.

받침점 A로부터 하중의 상대 위치 벡터의 성분:

Components of the location vector of load relative to support A:

```python
P_x, P_y = sy.symbols('P_{x}[m] P_{y}[m]', real=True)

```

```python
P_x

```

```python
P_y

```

$x$ 방향 힘의 평형
Force equilibrium in $x$ direction

```python
x_eq = sy.Eq(R_Ax, F_x)

```

```python
x_eq

```

$y$ 방향 힘의 평형
Force equilibrium in $y$ direction

```python
y_eq = sy.Eq(R_Ay+R_By, F_y)

```

```python
y_eq

```

A 점 중심의 모멘트 평형

Moment equilibrium at A

```python
A_eq = sy.Eq(-P_y * F_x + P_x * F_y +R_By * L )

```

```python
A_eq

```

연립하여 반력에 관하여 풀면 다음과 같다.

Solving the system of the equations about the reaction forces would give the followings.

```python
sol = sy.solve([x_eq, y_eq, A_eq], [R_Ax, R_Ay, R_By])

```

```python
sol[R_Ax]

```

```python
sol[R_Ay]

```

```python
sol[R_By]

```

## Final Bell
마지막 종

```python
# stackoverfow.com/a/24634221
import os
os.system("printf '\a'");

```

```python

```