Plot stress distribution of a plane stress quad model
Example .py
file can be downloaded here
:
1import openseespy.opensees as ops
2import opsvis as opsv
3
4import matplotlib.pyplot as plt
5
6ops.wipe()
7ops.model('basic', '-ndm', 2, '-ndf', 2)
8ops.node(1, 0., 0.)
9ops.node(2, 0., 1.)
10ops.node(3, 0., 2.)
11ops.node(4, 0., 3.)
12ops.node(5, 0., 4.)
13ops.node(6, 1., 0.)
14ops.node(7, 1., 1.)
15ops.node(8, 1., 2.)
16ops.node(9, 1., 3.)
17ops.node(10, 1., 4.)
18ops.node(11, 2., 0.)
19ops.node(12, 2., 1.)
20ops.node(13, 2., 2.)
21ops.node(14, 2., 3.)
22ops.node(15, 2., 4.)
23ops.node(16, 3., 0.)
24ops.node(17, 3., 1.)
25ops.node(18, 3., 2.)
26ops.node(19, 3., 3.)
27ops.node(20, 3., 4.)
28ops.node(21, 4., 0.)
29ops.node(22, 4., 1.)
30ops.node(23, 4., 2.)
31ops.node(24, 4., 3.)
32ops.node(25, 4., 4.)
33
34ops.nDMaterial('ElasticIsotropic', 1, 1000, 0.3)
35
36ops.element('quad', 1, 1, 6, 7, 2, 1, 'PlaneStress', 1)
37ops.element('quad', 2, 2, 7, 8, 3, 1, 'PlaneStress', 1)
38ops.element('quad', 3, 3, 8, 9, 4, 1, 'PlaneStress', 1)
39ops.element('quad', 4, 4, 9, 10, 5, 1, 'PlaneStress', 1)
40ops.element('quad', 5, 6, 11, 12, 7, 1, 'PlaneStress', 1)
41ops.element('quad', 6, 7, 12, 13, 8, 1, 'PlaneStress', 1)
42ops.element('quad', 7, 8, 13, 14, 9, 1, 'PlaneStress', 1)
43ops.element('quad', 8, 9, 14, 15, 10, 1, 'PlaneStress', 1)
44ops.element('quad', 9, 11, 16, 17, 12, 1, 'PlaneStress', 1)
45ops.element('quad', 10, 12, 17, 18, 13, 1, 'PlaneStress', 1)
46ops.element('quad', 11, 13, 18, 19, 14, 1, 'PlaneStress', 1)
47ops.element('quad', 12, 14, 19, 20, 15, 1, 'PlaneStress', 1)
48ops.element('quad', 13, 16, 21, 22, 17, 1, 'PlaneStress', 1)
49ops.element('quad', 14, 17, 22, 23, 18, 1, 'PlaneStress', 1)
50ops.element('quad', 15, 18, 23, 24, 19, 1, 'PlaneStress', 1)
51ops.element('quad', 16, 19, 24, 25, 20, 1, 'PlaneStress', 1)
52
53ops.fix(1, 1, 1)
54ops.fix(6, 1, 1)
55ops.fix(11, 1, 1)
56ops.fix(16, 1, 1)
57ops.fix(21, 1, 1)
58
59ops.equalDOF(2, 22, 1, 2)
60ops.equalDOF(3, 23, 1, 2)
61ops.equalDOF(4, 24, 1, 2)
62ops.equalDOF(5, 25, 1, 2)
63
64ops.timeSeries('Linear', 1)
65ops.pattern('Plain', 1, 1)
66ops.load(15, 0., -1.)
67
68ops.analysis('Static')
69ops.analyze(1)
70
71# - plot model
72opsv.plot_model()
73plt.axis('equal')
74
75# plt.figure()
76opsv.plot_loads_2d()
77
78# - plot deformation
79opsv.plot_defo(unDefoFlag=1)
80plt.axis('equal')
81
82# get values at OpenSees nodes
83sig_out = opsv.sig_out_per_node()
84
85# !!! select from sig_out: e.g. vmises
86# j, jstr = 0, 'sxx'
87j, jstr = 1, 'syy'
88# j, jstr = 2, 'sxy'
89# j, jstr = 3, 'vmis'
90# j, jstr = 4, 's1'
91# j, jstr = 5, 's2'
92# j, jstr = 6, 'alfa'
93
94nds_val = sig_out[:, j]
95
96plt.figure()
97opsv.plot_stress_2d(nds_val)
98
99plt.show()
100
101exit()