2d Portal Frame

Example .py file can be downloaded here:

_images/portal_frame_model.png _images/portal_frame_loads_supports.png _images/portal_frame_defo.png _images/portal_frame_N.png _images/portal_frame_V.png _images/portal_frame_M.png
  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()