2d Portal Frame
Example .py
file can be downloaded here
:
1import openseespy.opensees as ops
2# import opensees as ops # local compilation
3import opsvis as opsv
4
5import matplotlib.pyplot as plt
6
7ops.wipe()
8ops.model('basic', '-ndm', 2, '-ndf', 3)
9
10colL, girL = 4., 6.
11
12Acol, Agir = 2.e-3, 6.e-3
13IzCol, IzGir = 1.6e-5, 5.4e-5
14
15E = 200.e9
16
17Ep = {1: [E, Acol, IzCol],
18 2: [E, Acol, IzCol],
19 3: [E, Agir, IzGir]}
20
21ops.node(1, 0., 0.)
22ops.node(2, 0., colL)
23ops.node(3, girL, 0.)
24ops.node(4, girL, colL)
25
26ops.fix(1, 1, 1, 1)
27ops.fix(3, 1, 1, 0)
28
29ops.geomTransf('Linear', 1)
30
31# columns
32ops.element('elasticBeamColumn', 1, 1, 2, Acol, E, IzCol, 1)
33ops.element('elasticBeamColumn', 2, 3, 4, Acol, E, IzCol, 1)
34# girder
35ops.element('elasticBeamColumn', 3, 2, 4, Agir, E, IzGir, 1)
36
37Px = 2.e+3
38Wy = -10.e+3
39Wx = 0.
40
41Ew = {3: ['-beamUniform', Wy, Wx]}
42
43ops.timeSeries('Constant', 1)
44ops.pattern('Plain', 1, 1)
45ops.load(2, Px, 0., 0.)
46
47for etag in Ew:
48 ops.eleLoad('-ele', etag, '-type', Ew[etag][0], Ew[etag][1],
49 Ew[etag][2])
50
51ops.constraints('Transformation')
52ops.numberer('RCM')
53ops.system('BandGeneral')
54ops.test('NormDispIncr', 1.0e-6, 6, 2)
55ops.algorithm('Linear')
56ops.integrator('LoadControl', 1)
57ops.analysis('Static')
58ops.analyze(1)
59
60ops.printModel()
61
62# 1. plot model with tag lebels
63
64opsv.plot_model()
65
66# 2. plot supports and loads
67
68plt.figure()
69opsv.plot_supports_and_loads_2d()
70
71# 3. plot deformed model
72
73sfac = 80.
74
75plt.figure()
76# opsv.plot_defo(sfac)
77opsv.plot_defo(sfac, fmt_interp='b.-')
78opsv.plot_defo(sfac, 5, interpFlag=0, fmt_nodes='bo-')
79opsv.plot_defo(sfac, 3, endDispFlag=0, fmt_interp='r.--')
80opsv.plot_defo(sfac, 2, fmt_interp='g.-')
81
82# 4. plot N, V, M forces diagrams
83
84sfacN, sfacV, sfacM = 5.e-5, 5.e-5, 5.e-5
85
86plt.figure()
87minVal, maxVal = opsv.section_force_diagram_2d('N', Ew, sfacN)
88plt.title(f'Axial forces, max = {maxVal:.2f}, min = {minVal:.2f}')
89
90plt.figure()
91minVal, maxVal = opsv.section_force_diagram_2d('T', Ew, sfacV)
92plt.title(f'Shear forces, max = {maxVal:.2f}, min = {minVal:.2f}')
93
94plt.figure()
95minVal, maxVal = opsv.section_force_diagram_2d('M', Ew, sfacM)
96plt.title(f'Bending moments, max = {maxVal:.2f}, min = {minVal:.2f}')
97
98plt.show()
99
100exit()