Tulisan personal Prof. Wiryanto Dewabroto. Recommended buat Anda yang lagi ngulik struktur baja, dan SAP2000. Beliau juga telah menerbitkan buku untuk kedua topik tersebut yang banyak dipakai oleh akademisi maupun praktisi di dunia teknik sipil. Yang utama, beliau akan dengan senang hati menjawab curahan hati, komentar, masalah yang sering dihadapi di lapangan, dan tentunya memberikan solusi atas pertanyaan tersebut.
Ryan Rakhmat Setiyadi, Senior structural engineer, PT. ARUP Indonesia. Bagi Anda yang menyukai pembahasan advance structural analysis dan design, penurunan rumus praktis, beton bertulang, seluk beluk SNI dan code luar negeri, beban angin dan gempa, silahkan go to this blog.
Personal blog Jinal Doshi, Project Engineer, di perusahaan DCI Engineer, Seatle, US. Structural engineer dengan segudang pengalaman di berbagai perusahaan konstruksi. Bagi yang suka pembahasan mendalam mengenai gempa, esensi dari daktilitas, disipasi energi, respon spektrum dan lain sebagainya silahkan jalan-jalan ke blog tersebut.
Ritchie Vink, seorang structural engineer, data scientist, dan data engineer. Saya pribadi sangat berminat dengan aplikasi open source anaStruct buatannya. Pembahasan mengenai python, algoritma, neural network, dan aplikasi machine learning dalam dunia teknik sipil.
Semua tentang OpenSees. Tips n trick pengunaan OpenSees, ada pula tantangan atau challenge inteaktif untuk lebih memahami tentang opsi pemodelan. Oh ya jangan lupa, di sini juga Anda akan bertemu dengan orang-orang dengan minat yang sama di kolom komentar.
Pembahasan mengenai code beton, gempa, prinsipal engineering, dan yang unik adalah mengenai sejarah seperti, asal muasal beban desain minimum, Mengapa beton era Romawi lebih tahan dari beton sekarang? dan sebagainya. Sayangnya penulis sekarang tidak aktif lagi, namun artikel terdahulu masih dapat di akses.
Arini S Putri, jurusan matematika ITB. Walaupun di luar topik teknik sipil, blog ini recommended sebagai bacaan tambahan bagaimana kita bermatematika dalam kehidupan sehari-hari. Blog ini membahas topik tentang Matematika, Fisika, Fisika Kuantum, beliau juga aktif menulis dalam platform Quora.
Dr. Gouw TL, beliau ada seorang pakar di bidangnya yaitu geoteknik. Bagi Anda yang sedang mendalami bidang geoteknik, silahkan langsung menuju blog ini.
Bapak Ir. Irawan Firmansyah, MSCE. Beliau adalah seorang geotechnical engineer specialist high rise building. Bagi teman-teman yang lagi nyari referensi kondisi tanah sekitar Ibukota Jakarta, blog ini adalah tempat yang tepat.
Ada rekomendasi blog lain? silahkah tinggal komentar di bawah ini.
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
Analisis
Euler
SAP2000
anaStruct
Opensees
Eksak
153,815
Linear Elastic
153,820
153,820
Elastic Orde-2
153,600
153,000
153,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:
Kali ini, saya mencoba membahas problem tekuk elastis pada analisis kolom baja. I’m not going deep, cause I can’t. Hanya sekadar menguji performa anaStruct yang digratiskan oleh Richie Vink, dengan menggunakan contoh soal dalam tulisan Pak Wir.
Target utama yaitu untuk menganalisis kuat tekan kritis (Pcr) menggunakan aplikasi dan membandingkan hasil yang diperoleh dengan nilai tekuk eksak dari persamaan Euler. Dalam analisis dilakukan dengan dua pendekatan, yaitu (1) elastic buckling analysis dan (2) second order elastic analysis. Informasi detail mengenai dua metode ini, akan dijelaskan seiring pembahasan berikut.
Sedikit intro tentang aplikasi yang digunakan, anaStruct merupakan package python dalam analisa struktur non-linear menggunakan metode elemen hingga (finite element method). Aplikasi ini non-GUI, tidak seperti aplikasi analisa struktur lainnya seperti SAP 2000.
Baiklah.. akan dianalisa kolom baja sederhana seperti yang terlihat dalam gambar (bagian a.) berikut.
Data: Profil baja H, dengan: Tinggi kolom (L) = 8,5 m Luas penampang (A) = 39,65 cm^2 Inersia (I) = 563.0 cm^4 Berat/meter = 31,1 Kg/m
Kondisi tumpuan tumpuan bawah = sendi tumpuan atas = sendi roll
Berdasarkan persamaan Euler, diperoleh tekuk kritis:
Pcr = (phi2 x EI) / L2 = 153.815 kN
(1) Analisa Tekuk Elastik (Elastic Buckling Analysis) Strategi dalam pendekatan ini yaitu mencari nilai faktor pengali beban yang menyebabkan terjadinya tekuk atau dikenal dengan faktor tekuk (buckling factor).
Nah.. faktor tekuk dianalisis dengan memberikan beban (P) sebesar 1 kN di puncak kolom. Secara otomatis kuat tekan kritis diperoleh sama dengan faktor tekuk,
Pcr = 1 x faktor tekuk = faktor tekuk.
Sebagai perbandingan, kolom baja 8,5 m tersebut akan dibagi dalam beberapa elemen diskrit yaitu 1 elemen, 2 lemen, 4 elemen dan 8 elemen seperti yang terlihat dalam gambar di atas.
Dengan soal di atas, kemudian ditulislah ke dalam bahasa python dengan menggunakan Jupyter Notebook.
from anastruct import SystemElements
from math import pi
import matplotlib.pyplot as plt
# Konversi Satuan
cm = 10 # mm
m = 1000 # mm
kN = 1000 # N
kg = 9.81 # N
# Data Penampang
A = 39.65 *cm**2
I = 563. *cm**4
w = 31.1 *kg/m
# Data material
E = 200000. # MPa
Fy = 250. # MPa
EA = E * A
EI = E * I
L = 8.5 *m
# Beban
P = 1*kN
# Rumus euler
Pcr = ((pi**2 * EI) / L**2)/kN
print("Rumus Euler, tekuk kritis Pcr = ", round(Pcr,5))
# Elemen dan Geometri Struktur
ss = SystemElements(EA = EA, EI = EI)
ss.add_element(location = [[0, 0],[0, L]])
ss.add_support_hinged(node_id = 1)
ss.add_support_roll(node_id = 2, direction = 1)
ss.point_load(Fy = -P, node_id = 2)
# Jumlah elemen
n = [1,2,4,8]
buckling_factor = []
for value in n:
discretize_kwargs = {'n':()}
ss.solve(geometrical_non_linear = True, discretize_kwargs=dict(n=value))
buckling_factor.append(round(ss.buckling_factor,4))
# Plot jumlah elemen vs buckling factor
plt.plot(n, buckling_factor,'--o')
for x,y in zip(n, buckling_factor):
label = "{:.4f}".format(y)
plt.annotate(label,
(x,y),
textcoords="offset points",
xytext=(0,10),
ha='center')
plt.xlabel("Jumlah Elemen (n)")
plt.ylabel("Faktor Tekuk")
plt.show()
Perbandingan nilai eksak, dan buckling factor menggunakan SAP2000 v.15 (Wiryanto Dewabroto, 2010)Buckling factor dengan menggunakan anaStruct
Dari grafik di atas, terlihat faktor tekuk yang diperoleh dengan anaStuctsama dengan hasil yang diperoleh dengan SAP2000 v15. Dengan demikian pemodelan yang dilakukan menggunakan anaStruct dianggap sudah benar.
Faktor tekuk mendekati nilai eksak Euler = 153,815 kN, seiring dengan penambahan elemen diskrit. Dalam hal ini sebesar 153.820 kN untuk 8 elemen diskrit. Berdasarkan percobaan penulis, akan diperoleh hasil yang sama persis dengan eksak jika elemen diskrit sebesar 20 elemen.
*Catatan: dengan jumlah elemen diskrit yang banyak, akan menguras RAM laptop Anda.
Masalah ini juga menjadi poin penting oleh Pak Wir, bahwa meskipun menggunakan aplikasi yang canggih seperti SAP2000, untuk mendapatkan hasil yang tepat masih diperlukan campur tangan insinyur.
Sebaliknya, walaupun hanya menggunakan aplikasi gratis open-source, dengan pengaturan yang baik akan diperoleh hasil tidak kalah baiknya.
Penambahan elemen diskrit atau dalam SAP2000 dikenal dengan meshing, tanpa campur tangan insinyur maka pemodelan akan menggunakan 1 elemen diskrit sehingga diperoleh hasil tekuk kritis sebesar 187,017 kN jauh berbeda dengan hasil eksak sebesar 153,815 kN.
Man behind the gun
(2) Analisa Elastik Orde-2 (Second Order Elastic Analysis)
Perbeda dengan pendekatan sebelumnya yaitu elastic buckling, hasil yang diperoleh berupa faktor tekuk tanpa mengetahui perpindahan yang terjadi.
Nah.. pendekatan analisa elastik orde-2 dilakukan dengan memberikan beban iteratif di puncak kolom kemudian memperhatikan perpindahan yang terjadi di node tengah kolom.
Sebagaimana dijelaskan dalam tulisan Pak Wir, cara ini dikenal dengan nama Direct Analysis Method (DAM) dalam AISC 2010.
Dengan struktur kolom yang sama dengan sebelumnya, kemudian analisis dengan kondisi:
Model A: Tanpa gaya notional
Model B: Dengan gayanotional di tengah bentang sebesar: H = 0,002 x P
Dapat dilihat dalam gambar berikut ini.
Analisa Elastik Orde-2 (Wiryanto Dewabroto, 2010)
Kemudian model di atas dianalisis menggunakan anaStruct, dengan sedikit perubahan dari code sebelumnya, sebagai berikut:
Code Model A: Tanpa Beban Notional
# Elemen dan Geometri Struktur
ss = SystemElements(EA = EA, EI = EI)
ss.add_element(location = [[0, 0],[0, L]], g = w)
ss.add_support_hinged(node_id = 1)
ss.add_support_roll(node_id = 2, direction = 1)
ss.discretize(n = 2)
# Beban
# Beban titik = 150 sampai 153 kN, dengan inerval 0.001 kN
P = np.arange(150*kN,153*kN,0.001*kN)
displacement = []
for load in P:
ss.point_load(Fy = -load, node_id = 3)
# Mengaktifkan non-linear analisis atau P-Delta
ss.solve(geometrical_non_linear = True, discretize_kwargs=dict(n=1))
displacement.append(ss.get_node_displacements(node_id=2))
ss.show_structure()
disp = []
for value in displacement:
disp.append(value['ux']/1000)
plt.plot(disp,P/1000)
plt.xlabel("Perpindahan (m)")
plt.ylabel("Gaya (kN)")
plt.show
Code Model B: Dengan Beban Notional di Tengah Bentang
# Numerik
ss = SystemElements(EA = EA, EI = EI)
ss.add_element(location = [[0, 0],[0, L]], g = w)
ss.add_support_hinged(node_id = 1)
ss.add_support_roll(node_id = 2, direction = 1)
ss.discretize(n = 2)
# Beban
# Beban titik = 150 sampai 153 kN, dengan inerval 0.001 kN
P = np.arange(150*kN,153*kN,0.001*kN)
displacement = []
for load in P:
ss.point_load(Fy = -load, node_id = 3)
ss.point_load(Fx = load*0.002, node_id = 2) # P Notional
# Mengaktifkan non-linear analisis atau P-Delta
ss.solve(geometrical_non_linear = True, discretize_kwargs=dict(n=1))
displacement.append(ss.get_node_displacements(node_id=2))
ss.show_structure()
disp = []
for value in displacement:
disp.append(value['ux']/1000)
plt.plot(disp,P/1000)
plt.xlabel("Perpindahan (m)")
plt.ylabel("Gaya (kN)")
plt.show
Berikut merupakan hasil analisis tekuk elastis orde-2 dengan SAP2000 v.15 oleh Pak Wir. Hasil berikut berupa grafik hubungan gaya (vertikal axis) dan perpindahan lateral di tengah bentang (horizontal axis).
Dari hasil SAP2000 untuk model A (tanpa gaya notional), tidak terlihat perubahan perpindahan yang besar atau tiba-tiba. Oleh karena itu, kuat tekan kritis (Pcr) tidak dapat ditentukan.
Sedangkan model B (dengan gaya notional) terlihat perubahan perpindahan yang besar dan tiba-tiba, yaitu pada beban P sebesar 153,60 kN. Nilai ini mendekati nilai perhitungan eksak sebesar 153,815 kN.
Hubungan Gaya-Perpindahan dengan SAP2000 v.15 (Wiryanto Dewabroto, 2010)
Dua grafik di bawah ini merupakan hasil yang diperoleh menggunakan anaStruct.
Untuk model A, terlihat perubahan perpindahan yang tiba-tiba. Walaupun tanpa beban notional di tengah bentang, anaStruct sudah mampu memprediksi kuat tekan kritis sebesar 153,0 kN mendekati nilai eksak sebesar 153,815 kN. Meskipun nilai perpindahan yang terlihat sangat kecil, namun terlihat kenaikan perpindahan tiba-tiba yang menandakan kondisi instability pada kolom.
Untuk model B, terlihat perubahan perpindahan yang besar dan tiba-tiba, dengan nilai kuat tekan kritis yang sama yaitu sebesar 153,0 kN.
anaStruc: Model A
anaStruc: Model B
*Catatan: menaikkan beban lebih besar dari 153,0 kN, menyebabkan instabilitas struktur sehingga anaStruct tidak mendapatkan hasil.
Tabel Rekapitulasi kuattekuk kritis (Pcr)
Analisis
Eksak (kN)
SAP2000 (kN)
anaStruct (kN)
Rumus Euler
153,815
Linear Elastic
153,820
153,820
Second Order Elastic
153,600
153,000
* Catatan:
Linear elastic, SAP2000 dan anaStruct dengan 8 elemen diskrit
Second Order Elastic, anaStruct dapat memprediksi meskipun tanpa beban notional
Jumlah elemen diskrit dan jumlah iterasi sangat mempengaruhi hasil.