Opensees: Analisis Elastik Orde-2

Sebelumnya telah dibahas mengenai anaStruct: Tekuk Elastik dan Opensees: Perkenalan. Maka, kali ini saya ingin mencoba eksplor bagaimana sih, hasil analisis elastic buckling menggunakan OpenSeespy.

Sama dengan anaStruct, Openseespy juga merupakan program open source alias gratis dan tentunya non-GUI. Namun, Openseespy dibekali dengan banyak fasilitas hingga mampu memodelkan struktur, geoteknik maupun kedua secara bersamaan. Lebih dikenal dengan soil structure interaction (SSI).

Dengan soal yang sama yaitu kolom baja sederhana 8,5 m, dalam artikel anaStruct: Tekuk Elastik, dilakukan analisis elastik orde-2. Berikut souce code yang ditulis menggunakan bahasa python3 dan package openseespy.

import openseespy.opensees as ops
import numpy as np
import matplotlib.pyplot as plt
from matplotlib.pyplot import figure
import openseespy.postprocessing.Get_Rendering as opsplt
import openseespy.preprocessing.DiscretizeMember as opsdm
%matplotlib inline

ops.wipe()
ops.model('basic', '-ndm', 2, '-ndf', 3)

cm = 1/100. # m
kg = 0.00981 #kN

# Data Penampang
A = 39.65 *cm**2
I = 563. *cm**4
MPa = 1000. # kPa
w = 31.1 *kg

# Data material
E0 = 200000.*MPa
L = 8.5

Nsteps = 25
Py = -160.
Px = 0.002*160

# membuat node
ops.node(1, 0.0, 0.0)
ops.node(2, 0.0, L)

# tumpuan
ops.fix(1, 1,1,0)
ops.fix(2, 1,0,0)

# elemen
ops.geomTransf('Corotational', 1)
ops.section('Elastic',1,E0,A,I)
ops.beamIntegration('Lobatto',1,1,10)
opsdm.DiscretizeMember(1, 2, 8, 'elasticBeamColumn', 1, 1, 3, 1)

ops.timeSeries("Linear", 1)
ops.pattern("Plain", 1, 1)
ops.load(2, 0., Py, 0.)
ops.load(5, Px, 0., 0.)


# Analisis
ops.system("ProfileSPD") # create SOE
ops.numberer("Plain") # create DOF number
ops.constraints("Plain") # create constraint handler
ops.integrator("LoadControl", 1.0/Nsteps, 10) # create integrator
ops.algorithm("Newton") # create algorithm
ops.analysis("Static") # create analysis object

data = np.zeros((Nsteps+1,2))
for j in range(Nsteps):
    ops.analyze(1)
    data[j+1,0] = ops.nodeDisp(5,1)
    data[j+1,1] = ops.getLoadFactor(1)*Py*-1

#Plot data dalam grafik
figure(num=None, figsize=(5, 5), dpi=80, facecolor='w', edgecolor='k')
plt.plot(data[:,0], data[:,1],'-',label='anaStruct Pcr = 153.60 kN')
plt.plot([0,1.25],[153.815,153.815],'r--',label='Exact = 153.815 kN')
plt.xlabel('Lateral Displacement at Mid Point(m))')
plt.ylabel('Vertical Load at top (kN)')
plt.legend(bbox_to_anchor=(0.5, 0.2), loc='upper center', borderaxespad=0.)
plt.show()
Output

Dari grafik di atas, terlihat perubahan perpindahan lateral yang tiba-tiba dan besar, yang menandakan terjadinya tekuk. Hasil analisa diperoleh kuat tekuk kritis (Pcr) sebesar 153,6 kN. Maka, dapat dibandingkan dari hasil analisa sebelumnya sebagai berikut.

===> geser tabel

AnalisisEulerSAP2000anaStructOpensees
Eksak153,815
Linear Elastic153,820153,820
Elastic Orde-2153,600153,000153,600

Terlihat bahwa hasil yang diperoleh dengan SAP2000 sama persis dengan Openseespy, yaitu sebesar 153,60 kN. Dengan demikian pemodelan dianggap sudah mendekati nilai eksak sebesar 153,815 kN.

*Catatan:

Opensees adalah program yang ditulis dalam bahasa Tcl, sedangkan Openseespy merupakan program yang ditulis dalam bahasa Python3.6. Oleh karena itu untuk membuka opensees harus dipersiapkan terlebih dahulu persyaratannya. Dapat dilihat di halaman berikut:

  1. Opensees: https://opensees.berkeley.edu/
  2. Openseespy: https://openseespydoc.readthedocs.io/en/latest/
Advertisement

Leave a Reply

Fill in your details below or click an icon to log in:

WordPress.com Logo

You are commenting using your WordPress.com account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s