Stiffness Method - Beam
import ema as em
import matplotlib.pyplot as plt
import numpy as np
%config InlineBackend.figure_format = 'svg' # used to make plots look nicer
# Initialize model
dm = em.Model(2,3)
nodes = dm.nodes
n = dm.dnodes
# Define section properties
A = 1
Iab = 200000
Ic = 300000
xs1 = dm.xsec('ab', A, Iab)
xs2 = dm.xsec('c', A, Ic)
xsecs = [xs1, xs1, xs2]
# Define nodes
dm.node('1', 0.0, 0.0)
dm.node('2', 15., 0.0)
dm.node('3', 35., 0.0)
dm.node('4', 50., 0.0)
# Create beams
a, b, c = dm.girder(nodes, xsecs=xsecs)
# Establish fixities
dm.fix(n['1'], ['x','y'])
dm.fix(n['2'], ['y'])
dm.fix(n['3'], ['y'])
dm.fix(n['4'], ['y'])
# uncomment line below to automatically print FEDEASLab input script
# em.utilities.export.FEDEAS(dm)
dm.numDOF() # automatically number dofs and print them as list
[[8, 9, 1], [2, 10, 3], [4, 11, 5], [6, 12, 7]]
fig, ax = plt.subplots()
em.plot_beam(dm, ax)
Part a) Distributed Loading
Determine displacements of the free dofs.
# set element loads
a.w['y'] = -10
b.w['y'] = -10
A = em.A_matrix(dm)
B = em.B_matrix(dm)
V0 = em.V_vector(A).o
|
$Q_{{}}$ |
$a_1$ |
0.000000 |
$a_2$ |
187.500000 |
$a_3$ |
-187.500000 |
$b_1$ |
0.000000 |
$b_2$ |
333.333333 |
$b_3$ |
-333.333333 |
$c_1$ |
0.000000 |
$c_2$ |
0.000000 |
$c_3$ |
0.000000 |
|
$P_{{}}$ |
$1$ |
187.500000 |
$2$ |
0.000000 |
$3$ |
145.833333 |
$4$ |
0.000000 |
$5$ |
-333.333333 |
$6$ |
0.000000 |
$7$ |
0.000000 |
|
$U_{{1}}$ |
$U_{{2}}$ |
$U_{{3}}$ |
$U_{{4}}$ |
$U_{{5}}$ |
$U_{{6}}$ |
$U_{{7}}$ |
$P_{{1}}$ |
53333.333333 |
0.000000 |
26666.666667 |
0.000000 |
0.0 |
0.000000 |
0.0 |
$P_{{2}}$ |
0.000000 |
0.116667 |
0.000000 |
-0.050000 |
0.0 |
0.000000 |
0.0 |
$P_{{3}}$ |
26666.666667 |
0.000000 |
93333.333333 |
0.000000 |
20000.0 |
0.000000 |
0.0 |
$P_{{4}}$ |
0.000000 |
-0.050000 |
0.000000 |
0.116667 |
0.0 |
-0.066667 |
0.0 |
$P_{{5}}$ |
0.000000 |
0.000000 |
20000.000000 |
0.000000 |
120000.0 |
0.000000 |
40000.0 |
$P_{{6}}$ |
0.000000 |
0.000000 |
0.000000 |
-0.066667 |
0.0 |
0.066667 |
0.0 |
$P_{{7}}$ |
0.000000 |
0.000000 |
0.000000 |
0.000000 |
40000.0 |
0.000000 |
80000.0 |
|
$U_{{}}$ |
$U_{{1}}$ |
-0.002734 |
$U_{{2}}$ |
0.000000 |
$U_{{3}}$ |
-0.001562 |
$U_{{4}}$ |
0.000000 |
$U_{{5}}$ |
0.003646 |
$U_{{6}}$ |
0.000000 |
$U_{{7}}$ |
-0.001823 |
Determine element basic forces
|
$V_{{}}$ |
$a_1$ |
0.000000 |
$a_2$ |
-0.002734 |
$a_3$ |
-0.001562 |
$b_1$ |
0.000000 |
$b_2$ |
-0.001562 |
$b_3$ |
0.003646 |
$c_1$ |
0.000000 |
$c_2$ |
0.003646 |
$c_3$ |
-0.001823 |
|
0 |
0 |
0.000000e+00 |
1 |
2.842171e-14 |
2 |
-3.437500e+02 |
3 |
0.000000e+00 |
4 |
3.437500e+02 |
5 |
-2.187500e+02 |
6 |
0.000000e+00 |
7 |
2.187500e+02 |
8 |
2.842171e-14 |
Part b) Thermal Loading
a.w['y'] = 0.0
b.w['y'] = 0.0
b.e0['2'] = -1e-3
b.e0['3'] = 1e-3
c.e0['2'] = -1e-3
c.e0['3'] = 1e-3
|
$V_{{0}}$ |
$a_1$ |
0.0000 |
$a_2$ |
0.0000 |
$a_3$ |
0.0000 |
$b_1$ |
0.0000 |
$b_2$ |
0.0100 |
$b_3$ |
-0.0100 |
$c_1$ |
0.0000 |
$c_2$ |
0.0075 |
$c_3$ |
-0.0075 |
|
$Q_{{}}$ |
$a_1$ |
0.0 |
$a_2$ |
0.0 |
$a_3$ |
0.0 |
$b_1$ |
0.0 |
$b_2$ |
-200.0 |
$b_3$ |
200.0 |
$c_1$ |
0.0 |
$c_2$ |
-300.0 |
$c_3$ |
300.0 |
|
$q_1$ |
$q_2$ |
$q_3$ |
$v_1$ |
15.0 |
0.000000 |
0.000000 |
$v_2$ |
0.0 |
0.000017 |
-0.000008 |
$v_3$ |
0.0 |
-0.000008 |
0.000017 |