anaStruct: Tekuk Elastik

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 (w) = 31,1 Kg/m

Elastisitas (E) = 200.000 Mpa
kuat leleh (fy) = 250 Mpa

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 anaStuct sama 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 gaya notional 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 kuat tekuk kritis (Pcr)

AnalisisEksak (kN)SAP2000 (kN)anaStruct (kN)
Rumus Euler153,815
Linear Elastic153,820153,820
Second Order Elastic153,600153,000

* Catatan:

  1. Linear elastic, SAP2000 dan anaStruct dengan 8 elemen diskrit
  2. Second Order Elastic, anaStruct dapat memprediksi meskipun tanpa beban notional
  3. Jumlah elemen diskrit dan jumlah iterasi sangat mempengaruhi hasil.
  4. Memperbanyak elemen diskrit menguras peforma RAM laptop
  5. anaStruct, package open-source cukup baik memprediksi hasil dibandingkan dengan software komersial seperti SAP2000.

Referensi:



One response to “anaStruct: Tekuk Elastik”

  1. […] telah dibahas mengenai anaStruct: Tekuk Elastik dan Opensees: Perkenalan. Maka, kali ini saya ingin mencoba eksplor bagaimana sih, hasil analisis […]

    Like

Leave a comment

About Me

Civil Engineer. Python enthusiast, just playing around with python implementation on design/analysis.

Newsletter

Design a site like this with WordPress.com
Get started