Posts by Agus Daud

Bio

AtaSee – Aplikasi Gratis Analisis Keamanan Rangka Atap Baja Ringan

AtaSee adalah aplikasi gratis untuk analisis struktur rangka baja ringan tipikal. Program ini dibuat agar dapat dioperasikan dengan mudah oleh user umum maupun engineer profesional.

Seperti yang kita ketahui, begitu banyak kasus ambruk/runtuhnya rangka atap baja ringan (Kompas). Hal ini terjadi kebanyakan pada bangunan sekolah, dengan atap genteng tanah liat. Untuk itu, dengan aplikasi ini diharapkan pemilik (owner), konsultan, maupun kontraktor, dapat melakukan analisis keamanan secara cepat dan mudah, khususnya pada bangunan sekolah.

Tujuannya tidak lain adalah untuk mengurangi kasus, korban jiwa, ataupun kerugian materil.

Aplikasi ini dapat dilihat pada link download di bawah ini. Demikian, semoga bermanfaat.

Download AtaSee v.00

Download AtaSee v.00

AtaSee v.00 – Cara install dan Pengunaan
Advertisement

SBTn zone by color: Strategi Baru

Grafik Normalized Soil Behavior Type (SBTn) Roberson 2010, telah banyak digunakan dalam penentuan profil lapisan tanah. Yaitu dengan menggunakan korelasi data sondir (qc atau fs) dengan parameter SBTn index (Ic).

SBTn Robertson 2010

Menggunakan nilai SBTn index (Ic) untuk menentukan zona mempunyai akurasi sekitar 80%. Sedangkan 20% error sisanya dipengaruhi oleh tingkat sementasi, umur, OCR tanah. Selain itu menggunakan nilai Ic juga tidak dapat menentukan zona 1, 8, dan 9 pada Tabel SBT Robertson.

Mayne (2014) menggunakan persamaan dengan parameter Qtn untuk membatasi zona 1, 8 dan 9. Oleh karena itu masalah deteksi zona ini terselesaikan.

Namun, tetap saja masih ada kesalahan/error jika menggunakan nilai Ic. Seperti yang terlihat pada grafik Robertson di atas. Khususnya pada nilai Ic sekitar 2.6; 2.95; atau lebih besar; terlihat garis Ic (garis tegas dan putus-putus) ada celah perbedaan atau tidak behimpit satu sama lain. Akibatnya akan terjadi kesalahan penentuan zona pada daerah ini.

Kemudian, Denilson (2022) mengajukan persamaan baru untuk nilai Ic dan batasan nilai Ic; menggunakan persamaan natural logaritmik yang lebih mengikuti/berhimpit garis hitam tegas.; untuk mengatasi error ini. Namun tetap saja masih ada celah error.

Proposed SBTn zone by color

Untuk mengatasi masalah ini, dan untuk menghindari persamaan logaritmik yang agak sulit; Saya mencoba menggunakan package image/raster processing dengan bahasa python.

Strateginya sangat sederhana.

Grafik Robertson dibuat dalam gambar format jpg. Menggunakan package Pillow/PIL kita dapat meng-extract warna (r.g.b) pada zona menjadi numpy array [x,y].

SBTn by color

Langkah terakhir tinggal meng-skalakan nilai (Qtn dan Rf) sesuai jumlah grid atau shape[N_gridx; N_gridy] array tersebut. Kemudian plotting/sampling rgb untuk zona bisa dilakukan pada array tersebut.

Berikut contoh aplikasinya dalam fungsi menggunakan bahasa python.

def zoneByColor(Rf,Qtn):
    x_logref = np.linspace(-1,1,1649)
    x_grid = np.arange(0,1649,1)
    y_logref = np.linspace(0,3,1823)
    y_grid = np.arange(0,1823,1)
    if y > 1000:
        y = 1000
    fx = interpolate.interp1d(x_logref, x_grid)
    fy = interpolate.interp1d(y_logref, y_grid)
    xg = int(fx(log10(Rf)))
    yg = int(fy(log10(Qtn)))

    while True:
        color = im[-yg,xg]
        if color[1] == 222:
            zone = 1
            break
        elif color[1] == 105:
            zone = 2
            break
        elif color[1] == 123:
            zone = 3
            break
        elif color[1] == 83:
            zone = 4
            break
        elif color[1] == 148:
            zone = 5
            break
        elif color[1] == 248:
            zone = 6
            break
        elif color[1] == 160:
            zone = 7
            break
        elif color[1] == 102:
            zone = 8
            break
        elif color[1] == 33:
            zone = 9
            break
        else:
            yg -= 1
    return zone

Adapaun eksekusi fungsi tersebut bisa dilakukan sebagai berikut. Namun, terlebih dahulu harus tersedia data Qtn atau Rf dalam dataframe Pandas; atau bisa juga menggunakan data list.

import numpy as np
from PIL import Image

im = np.array(Image.open('SBTlow.jpg'))
x_logref = np.linspace(-1,1,1649)
x_grid = np.arange(0,1649,1)

SBTcolor = [None]
for i, Qtn in enumerate(df['Qtn']):
    if i > 0:
        Rf = df.loc[i,'Rf']
        if Rf < 0.1:
            Rf = 0.1
        zone = zoneByColor(Rf,Qtn)
        SBTcolor.append(zone)
    else:
        pass

Dengan metode ini kita dapat melakukan plotting untuk semua zona. Tingkat akurasi akan sangat bergantung pada resolusi gambar yang digunakan. Pada contoh fungsi zoneByColor di atas saya menggunakan gambar jpg dengan grid (1823×1649).

Berikut tampilan profil lapisan tanah menggunakan strategi ini.

Plot data
SBTn menggunakan Ic
SBTn menggunakan color/warna

Jika diperhatikan dengan baik; pada kedalaman 2-3m terdapat lapisan Clay jika menggunakan SBTn by color. Sedangkan pada kedalaman ini; masih dideteksi sebagai lapisan Silt-mixtures jika menggunakan nilai Ic. Ini merupakan salah satu contoh error jika menggunakan nilai Ic dalam menentukan zona SBT/jenis tanah menggunakan data sondir.

Boleh jadi, dengan strategi ini (image processing) dapat dilakukan plotting data untuk grafik apapun tidak terbatas hanya untuk kasus/topik ini.

Baik demikian artikel kali ini. Semoga bermanfaat. Salam

Anastruct: Pondasi Tumpuan Pegas Hanya Tekan

Artikel kali ini mau nyoba analisis pondasi telapak; yang terangkat salah satu sisinya, akibat gaya luar. Akibatnya tumpuan pegas tertarik pada salah satu sisinya dan perlu disesuaikan lagi, karena tanah dianggap tidak mampu menerima tarik.

Soal original merupakan postingan Suyono Nt dalam blognya disini atau soal dan solusinya dalam file pdf di sini. Begitu banyak tulisan beliau yang menginspirasi saya, termasuk contoh kasus pada kali ini.

Baiklah..

Adapun soalnya sebagai berikut:

Soal

Strategi

Adapun strategi dalam analisis kali ini adalah sebagai berikut:

  1. Awalnya, menganalisis pondasi sesuai kondisi awal/soal.
  2. Identifikasi tumpuan pegas (spring) yang mengalami reaksi tarik.
  3. Menghapus kekakuan pegas (atur k=0) yang mengalami tarik.
  4. Menganalisis kembali.
  5. Mengulangi tahapan, sampai tidak lagi ditemukan tumpuan yang mengalami tarik atau nilai tarik minimal (toleransi >0.0001)
  6. Mencoba pembagian elemen pias, 20, 60 dan 120 buah.
  7. Membandingkan tekanan teoritis dan hasil analisis.

Analisa struktur dilakukan menggunakan program Anastruct dan bahasa pemrograman Python. Adapun file analisis secara lengkap dapat diunduh pada link berikut ini:

Pondasi tumpuan pegas hanya tekan.pdf

Pondasi tumpuan pegas hanya tekan.ipynb

Hasil analisis

Berikut reaksi tumpuan untuk kasus 20 elemen pias; sebelum dilakukan penyesuaian.

Terlihat pada tumpuan bagian paling kanan terdapat reaksi tarik sebesar 10.58 kN. Dan terdapat beberapa tumpuan dengan reaksi tarik lagi.

N_pias = 20; Struktur dan Pembebanan
N_pias = 20; Reaksi perletakan, sebelum penyesuaian.

Tumpuan yang mengalami tarik tersebut dihapus kekakuannya (k=0), kemudian di analisis kembali. Adapun hasilnya sebagai berikut:

N_pias = 20; Reaksi perletakan, setelah penyesuaian
N_pias = 20; Diagram moment, setelah penyesuaian

Dari grafik reaksi perletakan di atas diketahui tekanan maksimal sebesar:

sigma_max = 70.38/(0.1*1) = 703 kPa < 780 kPa (tekanan maks teoritis)

Terlihat tekanan maksimal hasil analisis masih cukup jauh dari tekanan teoritis. Adapun grafik tekanan setelah dilakukan penyesuaian untuk kasus n elemen pias = 20 adalah sebagai berikut:

N_pias = 20; Tekanan fondasi; Maksimal = 703 kPa

Maka, dicoba jumlah elemen pias 60 buah dan 120 buah.

N_pias = 60; Tekanan fondasi; Maksimal = 763 kPa

N_pias = 120; Tekanan fondasi; Maksimal = 780 kPa
Jumlah Elemen PiasTekanan Maks (kPa)
20 buah703 kPa
60 buah763 kPa
120 buah780 kPa
Rekapitulasi Tekanan Pondasi

Dari tabel rekapitulasi di atas, diketahui digunakan jumlah elemen pias 120 buah untuk memperoleh nilai tekanan tanah yang sama dengan teoritis.

Namun, dengan jumlah elemen pias begitu banyak; sehingga tidak begitu efisien untuk keperluan analisis sehari-hari.

Dari hasil berikut ini, diketahui perulangan (iterasi) dilakukan sebanyak tiga (3) kali untuk menyesuaikan tumpuan hanya tekan saja. Berikut hasil eksekusi program analisis:

N_pias = 20

>> Mulai analisis..
hapus kekakuan tumpuan 1
hapus kekakuan tumpuan 2
hapus kekakuan tumpuan 3
>> Analisis kembali
hapus kekakuan tumpuan 4
>> Analisis kembali
hapus kekakuan tumpuan 5
>> Analisis kembali
Analisis selesai!
N_pias = 60

>> Mulai analisis..
hapus kekakuan tumpuan 1
hapus kekakuan tumpuan 2
hapus kekakuan tumpuan 3
hapus kekakuan tumpuan 4
hapus kekakuan tumpuan 5
hapus kekakuan tumpuan 6
hapus kekakuan tumpuan 7
hapus kekakuan tumpuan 8
hapus kekakuan tumpuan 9
hapus kekakuan tumpuan 10
>> Analisis kembali
hapus kekakuan tumpuan 11
hapus kekakuan tumpuan 12
hapus kekakuan tumpuan 13
hapus kekakuan tumpuan 14
>> Analisis kembali
hapus kekakuan tumpuan 15
>> Analisis kembali
Analisis selesai!
N_pias = 120

>> Mulai analisis..
hapus kekakuan tumpuan 1
hapus kekakuan tumpuan 2
hapus kekakuan tumpuan 3
hapus kekakuan tumpuan 4
hapus kekakuan tumpuan 5
hapus kekakuan tumpuan 6
hapus kekakuan tumpuan 7
hapus kekakuan tumpuan 8
hapus kekakuan tumpuan 9
hapus kekakuan tumpuan 10
hapus kekakuan tumpuan 11
hapus kekakuan tumpuan 12
hapus kekakuan tumpuan 13
hapus kekakuan tumpuan 14
hapus kekakuan tumpuan 15
hapus kekakuan tumpuan 16
hapus kekakuan tumpuan 17
hapus kekakuan tumpuan 18
hapus kekakuan tumpuan 19
hapus kekakuan tumpuan 20
>> Analisis kembali
hapus kekakuan tumpuan 21
hapus kekakuan tumpuan 22
hapus kekakuan tumpuan 23
hapus kekakuan tumpuan 24
hapus kekakuan tumpuan 25
hapus kekakuan tumpuan 26
hapus kekakuan tumpuan 27
hapus kekakuan tumpuan 28
>> Analisis kembali
hapus kekakuan tumpuan 29
hapus kekakuan tumpuan 30
>> Analisis kembali
Analisis selesai!


Baiklah.. demikian artikel kali ini, semoga bermanfaat.

Studi Kasus: Pengaruh Angin pada Rangka Atap Baja Ringan

Sudah tidak asing lagi, begitu banyak atap baja ringan yang diberitakan runtuh akibat terjangan angin kencang.

Material baja ringan banyak digunakan pada atap rumah sederhana dan hampir tidak ada hitungan pembebanannya (analisa struktur). Sangat miris memang, keamanan bangunan dilimpahkan sepenuhnya kepada tukang bangunan.

Tidak heran, untuk struktur sederhana seperti ini; mungkin pemilik rumah tidak terpikirkan untuk membayar insinyur struktur (tenaga ahli). Dan bisa jadi pula insinyur struktur tidak minat dengan struktur sederhana karena budget-nya dikit atau bahkan tidak ada sama sekali.

Oleh karena itu, pada artikel ini mau coba bahas, kira-kira apa sih kemungkinan penyebabnya? Bagaimana pengaruh beban angin dan analisis struktur yang dilakukan?

Contoh kasus:

Ditinjau Desain Rumah Tipe – 36 sebagai berikut:

  • Ukuran denah = 6 m x 6 m
  • Tinggi dinding 3 m
  • Sudut atap 30 derajat
  • Tinggi atap 1.73 m
  • Penutup atap spandek
Gambar 1 – Sketsa Desain Rumah

Model rangka atap baja ringan yang akan ditinjau sebagai berikut:

  • Bahan baja ringan profil 75x35x0.75 mm
  • Tumpuan sendi-sendi (sesuai keadaan umum terpasang di lapangan)
  • Jarak antar kuda-kuda sebesar 1.2 m.
  • Kecepatan angin 10 m/s sampai 90 m/s (umumnya digunakan 40 m/s untuk desain)
  • Desain sesuai Gambar 2.
Gambar 2 – Desain Rangka Atap

Pembebanan dan Analisis Struktur

Agar artikel ini tidak begitu rumit dan panjang, maka detail analisis tidak ditampilkan disini. Silahkan hubungi email penulis jika menginginkan detail perhitungan dan analisis; atau melalui kolom komentar di bawah ini.

Berikut ini beberapa asumsi analisis dan pembebanan yang digunakan:

  • Beban angin ditentukan berdasarkan SNI 1727:2020
  • Kapasitas Baja Ringan (Baja Canai Dingin) dihitung berdasarkan SNI 7971:2013
  • Mutu bahan menggunakan G 550 (fy 550 MPa)
  • Sambungan menggunakan sekrup D4.5 mm

Sebelum menuju hasil analisa struktur, mari kita perhatikan sejenak grafik pada Gambar 3 berikut ini.

Grafik ini adalah hubungan panjang batang baja ringan dengan kemampuan berapa kilogram yang bisa dipikul.

Gambar 3 – Kapasitas Tekuk (Kg) Profil Baja Ringan Tunggal

Sebagai contoh baja ringan dengan panjang 120 cm, memiliki kemampuan 933 Kg beban yang dapat dipikul. Ini adalah panjang batang bawah dan atas rangka atap pada Gambar 2.

Ini dikenal dengan kapasitas tekuk batang.

Dalam contoh ini, kapasitas tarik batang tidak ditinjau. Umumnya, kapasitas tekuk lebih rendah dibanding kapasitas tarik; sehingga tekuk batang menentukan.

Analisa struktur dilakukan menggunakan program Anastruct dan Bahasa Pemrograman Python.

Berikut pembahasan hasilnya.

Apakah batang baja tertekuk?

Berdasarkan hasil analisis, untuk kecepatan angin 10 m/s sampai 90 m/s; diketahui Gaya aksial tekan maksimal yang terjadi tidak melampaui kapasitas tekuk. Seperti yang terlihat pada Gambar 4 berikut.

Dengan demikian, batang baja tidak tertekuk atau batang baja masih aman.

Perlu diperhatikan, berdasarkan aturan di sini untuk Indonesia digunakan 40 m/s sebagai kecepatan angin desain. Dan tenyata pada kecepatan itu batang baja masih aman terhadap tekuk.

Gambar 4 – Perbandingan Kapasitas dan Gaya Tekan Maksimal yang terjadi

Bagaimana dengan sambungan?

Pada contoh kasus ini, sambungan antar batang (joint) dianggap aman.

Penulis lebih tertarik pada sambungan pada tumpuan rangka, dapat dilihat contoh pemasangan di bawah ini. Umumnya menggunakan sambungan dynabolt ke dalam balok/dinding dan dengan jumlah sekrup baja bervariasi.

Gambar 5 – Sambungan 2 buah sekrup
Gambar 6 – Sambungan 3 buah sekrup

Dari hasil analisa kapasitas sambungan, dianggap kapasitas cabut (pull out) sekrup yang akan menentukan. Karena kapasitas ini merupakan nilai terkecil dari kapasitas sambungan geser dan tarik.

Untuk 2 buah sekrup, mampu memikul 148 Kg gaya tarik (cabut/pull out).

Sedangkan untuk 3 buah sekrup, mampu memikul 237 Kg gaya tarik (cabut/pull out).

Berdasarkan hasil analisis struktur diketahui, sambungan tidak mampu memikul beban pada kurang lebih kecepatan angin 37 m/s untuk 2 buah sekrup. Dan 44 m/s untuk 3 buah sekrup.

Dengan demikian, kemungkinan terbesar penyebab utama keruntuhan rangka baja ringan adalah karena keruntuhan sambungan sekrup pada tumpuan.

Berikut ini plot grafik Kapasitas dan Gaya yang terjadi.

Gambar 7 – Perbandingan Kapasitas Cabut Sambungan dan Gaya yang terjadi

Mekanisme Keruntuhan

Baja ringan atau baja canai dingin terlihat sederhana, namun dalam analisis struktur dan desain sangat tidak sederhana.

Tipisnya bahan yang digunakan sangat mengganggu kestabilan penampang.

Dalam analisis ini begitu banyak hal yang diabaikan dan disederhanakan. Oleh karena itu, bisa jadi mekanisme berikut ini hanyalah salah satu dari sekian banyak mekanisme yang terjadi.

Berdasarkan hasil analisis,

Terlihat gaya angkat atau hisapan angin pada atap menyebabkan keruntuhan sambungan tumpuan. Gambar 8 menunjukkan deformasi struktur yang terjadi akibat beban angin 40 m/s.

Gambar 8 – Output Analisis Struktur: Deformasi Rangka
Gambar 9 – Beban Angin pada Atap
Gambar 10 – Output Gaya Batang (Kecepatan Angin 40 m/s)
Gambar 11 – Output Gaya pada Tumpuan (Kecepatan Angin 40 m/s)

Berikut ini ilustrasi penyebab keruntuhan atap baja ringan akibat beban angin.

Gambar 12 – Kerusakan Sambungan
Gambar 13 – Atap Tercabut dari Badan Rumah

Hal ini sejalan dengan berita di lapangan, banyak ditemukan kondisi atap yang terbalik dengan kondisi rangka yang masih utuh. Berikut ini beberapa foto dokumentasi keruntuhan baja ringan akibat angin.

Ilustrasi–Atap baja ringan ruko kurang lebih sepanjang 26 meter di daerah Kukun, Rajeg ambruk akibat diterjang angin kencang pada Senin dini hari di Rajeg, Tangerang, Banten, Senin (19/3). Akibat hujan deras disertai angin kencang atap baja ringan dari 11 ruko ambruk, tidak ada korban jiwa dalam kejadian tersebut. (Foto: ANTARA/Lucky.R/Koz). Sumber: www.beritasatu.com

Dikawasan Kompleks Grand Residence 3 di Jalan H.M Puna Sembiring, Deli Serdang sekira pukul 17.30 wib angin kencang disertai hujan membuat atap rumah milik Luqman Saksono terbang hingga kurang lebih 100 meter yang akhirnya menimpa canopy milik Romulo Makarios Sinaga, salah seorang wartawan, Senin (28/6/2021). Sumber: www.armadaberita.com

Kesimpulan:

Pada contoh kasus ini:

  1. Keruntuhan sambungan pada tumpuan, diperkirakan sebagai penyebab utama keruntuhan atap akibat beban angin.
  2. Perlunya perkuatan sambungan minimal 4 buah sekrup.
  3. Perlu tinjauan kekuatan sambungan dynabolt.
  4. Kapasitas batang tarik dan tekan masih memadai.
  5. Untuk stabilitas arah longitudinal dibutuhkan ikatan silang/ ikatan angin yang memadai.

HYRCAN : Verifikasi Tekanan Tanah

Sudah lama tidak menulis di blog ini. Maklum, semangat menulis kadang naik kadang turun.

Baiklah, kali ini mau nyoba HYRCAN program analisis stabilitas lereng yang digratiskan oleh Roozbeh Geraili Mikola, PhD, P.E.

Perlu diperhatikan bahwa program ini menggunakan metode kesetimbangan batas (limit equilibrum method) atau dikenal juga dengan metode irisan.

Dengan menggunakan soal yang sama di sini, maka dicoba verifikasi tekanan tanah lateral menggunakan aplikasi ini.

Berikut tampilan soal menggunakan HYRCAN 1.90

HYRCAN 1.9

Sesuai dengan teori, dengan kondisi soal tersebut harusnya diperoleh faktor aman (FS) sama dengan satu (1.0).

Berdasarkan hasil analisis menggunakan 4 metode diperoleh faktor aman (FS) sebagai berikut:

MetodeFaktor Aman
Spencer1,01824
Bishop Simplified1,00071
Janbu Simplified1,00258
GLE/Morgenstern-Price1,00102
Hasil Analisis Hyrcan

Dari tabel hasil di atas terlihat faktor aman FS ≈ 1.0, dengan demikian pemodelan dianggap sudah benar.

Berikut tampilan faktor aman dalam aplikasi HYRCAN.

Metode Spencer
Metode Bishop Simplified
Metode Janbu Simplified
Metode GLE/Morgenstern-Price

Selain faktor aman FS = 1.0, verifikasi juga bisa dilakukan terhadap sudut bidang geser.

Menurut teori Rankine sudut bidang geser dapat dihitung menggunakan persamaan,

α = 45° + φ/2 = 45° + 30°/2 = 60.0°

Dimana, φ = 30° (sudut gesek internal tanah).

Sedangkan dari hasil analisis yang paling mendekati menggunakan metode Spencer diperoleh,

α = arc tan(10 / 20-13.822) = 58.292° cukup mendekati 60° (teori)

Untuk melakukan analisis di atas dapat pula menggunakan perintah pada command line, sebagai berikut:

newmodel()
set("failureDir","l2r","Method","GLE/M-P","on","Method","JanbuSim","on","Method","Spencer","on")
extboundary(0,0,30,0,30,5,20.01,5,20,15,0,15,0,0)
definemat("ground","matID",1,"matName","Tanah","uw",18,"cohesion",0)
assignsoilmat("matid",1,"atpoint",15.6816,6.12131)
definelimits("limit",10,17,"limit2",20.01,22)
applyload("line","loadid",1,"mag",300,"orientation","normal","atpoint",20.0066,8.39072)
compute()

Demikian artikel kali ini semoga bermanfaat.

Studi kasus: Python untuk Geoteknik

Beberapa bulan terakhir involve dalam proyek yang mempunyai data pengujian geoteknik yang sangat banyak. Baik itu data pengujian in-situ (bor SPT, sondir..) dan data laboratorium (triaxial, analisa saringan, direct shear..)

Pekerjaan pengujian tanah tersebut dilakukan oleh kontraktor geoteknik, kemudian diserahkan ke konsultan untuk analisa lebih lanjut.

Sayangnya, data yang diberikan ada kemiripan/sama satu sama lain. Kontraktor dicurigai melakukan kecurangan.

Singkat kata, Bos memerintahkan saya untuk mengecek data laboratorium tersebut. Data apa saja yang sama/mirip dan teridentifikasi kecurangan.

Sialnya, data yang diberikan hanyalah file pdf. Dan dalam satu file pdf terdapat beberapa format tabel seperti analisa saringan, analisa saringan+hidrometer, geser langsung, triaxial test, berat jenis, dan beberapa uji atterberg.

Sekitar 1020an halaman khusus data lab (total 2000an) yang akan dicek, dan harus diselesaikan kurang dari 2 hari.

Ini bisa saja kita lakukan secara manual, melihat dan membandingkan. Namun, saya tidak begitu yakin apakah bisa diselesaikan dengan waktu kurang dari 2 hari dengan hasil akurat.

Bekerja dengan data yang banyak dan berulang. Disinilah bahasa pemrograman python menjadi senjata ampuh.

Hal yang dilakukan adalah:

  1. Meng-extract file pdf per page ke dalam file text
  2. Mengidentifikasi page termasuk dalam format data apa? (triaxial, direct shear, sieve analysis.. etc)
  3. Memilah tulisan (angka) yang termasuk dalam data, memasukkan angka tersebut dalam dataframe pandas dan meng-export ke file csv untuk diolah.
  4. Membanding data sesuai jenis pengujian/test, dengan cara menghitung selisih setiap data. Jika selisih = nol (0) maka data dikatakan sama persis
  5. Selesai

Tugas ini diselesaikan dalam beberapa jam saja. Karena membutuhkan waktu untuk ngulik google, dan perlu debugging codingan error. Selain itu, ternyata proses ekstrasi text pdf per halaman membutuhkan waktu.

Paling banyak error karena ternyata dalam satu format tabel juga masih beda. Data uji analisa saringan misalnya, ukuran saringan yang digunakan tidak seragam sehingga jumlah baris atau row data berbeda-beda.

Ini hanyalah contoh kasus sederhana, dimana kita dapat menggunakan python untuk keperluan sehari-hari. Tentunya jika diperlukan analisa lebih lanjut akan lebih mudah. Misal koreksi N-SPT untuk setiap titik pengujian dan per 1,5m kedalaman. Koreksi bisa dilakukan dengan cepat dan akurat (tentunya dengan verifikasi).

Demikian semoga bermanfaat.

Anastruct: Solusi Beban Terdistribusi Tidak Seragam

Dalam analisa struktur, biasanya ditemukan beban merata yang tidak seragam (non-uniform). Seperti beban akibat tekanan tanah lateral berbentuk segitiga, trapesium atau sembarang bentuk.

Tekanan tanah lateral (Hardiyatmo, C. 2011)

Menjadi masalah ketika program tidak menyediakan opsi input beban tidak seragam, seperti package Anastruct hanya menyediakan beban merata (q) uniform atau seragam.

Artikel ini terinspirasi dari blog Syont di sini : Beban titik kesetaran pada elemen balok

Secara ringkas, beliau menggunakan beban titik sebagai solusi analisa beban tidak seragam.

***

Baiklah..

Artikel kali ini akan membahas solusi analisa struktur beban tidak seragam menggunakan Anastruct/ Python.

Strategi Pemodelan

Strategi yang digunakan yaitu dengan membagi elemen dalam elemen pias/diskrit. Kemudian menggunakan beban q rata-rata (q tengah elemen) sebagai beban merata.

Berikut kira-kira ilustrasinya,

Strategi pemodelan beban tidak seragam

1. Membuat fungsi beban

Mulai dari sini pemodelan akan menggunakan Python dan Jupyter Notebook. Langkah pertama adalah membuat fungsi beban. Fungsi ini akan meng-handle beban merata setiap variasi kedalaman (z) atau jarak.

Lateral pressure due to line load Q:
\sigma_h = \frac{4Q}{\pi} \frac{x^2z}{R^4} 
Lateral active earth pressure Rankine theory:
K_a = \tan (45 - \phi/2)^2 
\sigma_a = \gamma z K_a

Di sini disiapkan dua fungsi. Yaitu fungsi tekanan tanah Rankine dan tekanan lateral akibat beban garis di atas dinding. Berikut script nya:

import math
def Q_pressure(H, q, x, z):
    R = math.sqrt(x**2 + z**2)
    sigma_q = 4*q/math.pi * (x**2)*z / (R**4)
    return(sigma_q)
def Rankine(phi, gamma, z):
    Ka = math.tan(math.radians(45-(phi/2)))**2
    sigma_a = gamma*z*Ka
    return(sigma_a)
Persamaan/fungsi tekanan tanah

2. Menentukan data dimensi, material, dan pengaturan yang digunakan

Sebagai verifikasi awal, maka akan ditinjau

  • Dinding kantilever
  • Tinggi total 6 m
  • Beban = tekanan tanah aktif teori Rankine
  • Jumlah elemen diskrit = 6 elemen

Sehingga panjang setiap elemen menjadi 6/6 = 1 m. Berikut input data keseluruhan:

import numpy as np
import pandas as pd
df = pd.DataFrame()
# Dimensions
H = 6 # wall height (m)
t = H/10 # thickness of the wall (m)
b = 1 # width (m)
A = b*t # area section (m^2)
Ix = (b*t**3)/12 # Momen inertia (m4)
# Materials
## Concrete
fc = 21 # MPa
E = 4700*math.sqrt(fc) * 1000 # concrete modulus elasticity (kPa)
## Soil
gamma = 18 # unit weight of soil
phi = 30 # internal friction angle
# Loads
Q = 112.5 # acting load (kN/m)
x = 2.0 # horizontal distance from wall (m)
# Settings
n_ele = 6 # number of element
dx = H/n_ele # lenght of dicretized element (m)

3. Membuat tabel beban tekanan tanah untuk setiap kedalaman (z)

Pada tahap ini, terlebih dahulu akan dicoba tekanan tanah rankine (beban segitiga).

z_list = [0]
sigma_list = [0]
for n in range(1,n_ele+1,1):
    z = n*dx
    z_list.append(-z)
    
    sigma_list.append(Rankine(phi,gamma,z)) # Rankine only
    #sigma_list.append(Q_pressure(H,Q,x,z)) # Lateral pressure due to line load only
    #sigma_list.append(Q_pressure(H,Q,x,z) + Rankine(phi,gamma,z)) # Rankine + Q lateral pressure
    
df['z (m)'] = z_list
df['sigma (kPa)'] = sigma_list 
df
Tabel tekanan tanah dibuat dalam data frame pandas
Plot data tekanan tanah

4. Analisa struktur dengan Anastruct

Berdasarkan data di atas, kemudian lakukan analisa struktur dengan Anastruct. Perlu diperhatikan, input beban ke dalam elemen dilakukan pada perintah loop “for i in range ()“; dengan terlebih dahulu dilakukan interpolasi pada kedalaman (z) tengah elemen. Ditunjukkan pada garis <<< assign q load each element.

Perlu perhatian khusus pada tumpuan, disesuaikan dengan dinding tinjauan yaitu fixed pada dasar dinding.

from scipy.interpolate import interp1d
from anastruct import SystemElements
ss = SystemElements(EI=E*Ix, EA=E*A)
ss.add_multiple_elements([[0, H], [0, 0]], n_ele)
##------------Support conditions very important!----------##
# first_node == node on the top of the wall
first_node = 1
last_node = n_ele+1
# ss.add_support_roll(first_node,direction='y')
# ss.add_support_hinged(last_node)
ss.add_support_fixed(last_node)
first_ele_z = dx/2
for i in range(n_ele):
    z = (i*dx) + first_ele_z
    interp = interp1d(df['z (m)'], df['sigma (kPa)']) # <<< assign q load each element
    sigma_interp = interp(-z)
    ss.q_load(q=-sigma_interp, element_id = i+1)
# Run Analysis
ss.solve()
# Plot graph
ss.show_structure(verbosity=0)
ss.show_bending_moment(verbosity=1)
ss.show_shear_force(verbosity=1)
# verbosity=0 to show value

Berikut tampilan beban yang telah di input:

Input beban
Output reaksi perletakan

Untuk verifikasi hasil reaksi tumpuan di atas dapat dilakukan dengan cara sederhana sebagai berikut:

Ka = tan(45 – 30/2)2 = 0.333

Pa = 0.5 x gamma x H2 x Ka = 107,89 kN ≈ Ranastruct = 108.0 kN (mendekati)

Mo = Pa x H/3 = 215,78 kNm ≈ Manastruct = 219.0 kNm (cukup mendekati nilai teori)

Terlihat reaksi hasil pemodelan cukup mendekati, perlu di perhatikan ini adalah hasil untuk 6 element diskrit. Nilai akan semakin mendekati jika jumlah elemen di perbanyak; misal 100 elemen.

5. Tahapan post processing

Pada tahap ini, gaya dan perpindahan untuk setiap node akan dirangkum dalam table pandas data frame. Kemudian di plot dalam grafik agar lebih mudah dilihat.

moment_list = ss.get_element_result_range('moment')
shear_list = ss.get_element_result_range('shear')
axial_list = ss.get_element_result_range('axial')
for n in range(0,n_ele+1):
    if n == n_ele:
        df.loc[n,'Moment (kNm)'] = ss.get_node_results_system(node_id=n+1)['Ty']
        df.loc[n,'Shear (kN)'] = -ss.get_node_results_system(node_id=n+1)['Fx']
        df.loc[n,'Axial (kNm)'] = ss.get_node_results_system(node_id=n+1)['Fy']
    else:
        df.loc[n,'Moment (kNm)'] = moment_list[n]
        df.loc[n,'Shear (kN)'] = shear_list[n]
        df.loc[n,'Axial (kNm)'] = axial_list[n]
    df.loc[n,'Displacement (mm)'] = 1000 * ss.get_node_results_system(node_id=n+1)['ux']
    
# Display table
df
Tabel output gaya dan perpindahan

Kemudian di plot menggunakan package plotly:

from plotly.subplots import make_subplots
import plotly.graph_objects as go
fig = make_subplots(rows=1, cols=4)
fig.add_trace(go.Scatter(name="Lateral Pressure (kPa)",x=df['sigma (kPa)'], y=df['z (m)'], mode="lines"), row=1, col=1)
fig.add_trace(go.Scatter(name="Bending Moment (kNm)",x=df['Moment (kNm)'], y=df['z (m)'], mode="lines"), row=1, col=2)
fig.add_trace(go.Scatter(name="Shear (kN)",x=df['Shear (kN)'], y=df['z (m)'], mode="lines"), row=1, col=3)
fig.add_trace(go.Scatter(name="Displacement (mm)", x=df['Displacement (mm)'], y=df['z (m)'], mode="lines"), row=1, col=4)
fig.update_yaxes(title_text="Depth, z (m)", row=1, col=1)
fig.update_xaxes(title_text="Lateral Pressure (kPa)", row=1, col=1)
fig.update_xaxes(title_text="Moment (kNm)", row=1, col=2)
fig.update_xaxes(title_text="Shear (kN)", row=1, col=3)
fig.update_xaxes(title_text="Displacement (mm)", row=1, col=4)
fig.update_layout(height=800, width=1000, title_text="Result",)
fig.show()
Plot kedalaman (z) vs gaya/ perpindahan

***

Pemodelan beban distribusi untuk sembarang bentuk

Eksperimen terakhir, akan dicoba pemodelan beban untuk sembarang bentuk sesuai dua fungsi yang telah dibuat (seperti gambar tekanan tanah pada awal artikel). Berikut deskripsi soalnya:

Data:

  • Tinggi dinding, H = 6 m
  • Kondisi tumpuan = jepit – jepit (fixed)
  • Jumlah element diskrit = 100
  • Data material sama dengan soal di atas

Tinjauan kondisi beban:

  1. Beban tekanan tanah aktif Rankine
  2. Beban tekanan lateral akibat beban garis (Q) di atas dinding
  3. Kombinasi beban 1 dan 2

Berikut hasilnya..

Kondisi 1. Tekanan tanah aktif Rankine
Kondisi 2. Tekanan tanah lateral akibat beban garis Q di atas dinding
Kondisi 3. Kombinasi tekanan tanah aktif Rankine dan beban garis Q di atas dinding

Bagi yang ingin mencoba silahkan download file jupyter notebook berikut:

Lateral Pressure Due to Surcharge

Bila ada yang ingin didiskusikan, silahkan tinggalkan komentar di bawah ini. Demikian semoga bermanfaat.

Catatan:

  • Untuk variasi beban lain dapat dimasukkan dalam tambahan fungsi.

LEMSlope: Pseudostatik analisis

Artikel kali ini mau nyoba analisis faktor aman lereng terhadap gempa, menggunakan LEMSlope dan membandingkan hasilnya dengan Geostudio Slope/W.

Metode yang digunakan adalah pseudostatik analisis, dimana beban gempa diberikan dengan cara input koefisien gempa horizontal (kh).

Tujuan utama analisis kali ini adalah untuk mencari koefisien gempa horizontal yang menghasilkan faktor aman lereng FS = 1,0. Atau dikenal dengan k yield (ky).

Nilai ky biasanya digunakan untuk menghitung deformasi permanen akibat gempa; namun, perhitungan deformasi tidak akan dibahas kali ini.

Baiklah..

Berikut lereng yang akan dianalisis:

Lereng Tinjauan

Untuk mendapatkan nilai ky, maka akan dicoba beberapa nilai kh (0 – 0.30g) kemudian akan diplot grafik hubungan antara kh dan faktor aman (FS).

Berdasarkan soal lereng di atas, maka ditulis script LEMSlope sebagai berikut:

#~units: m|kN|kPa|kN/m3|degree

import lem

#~materials
sand = lem.new_material_mohr_coulomb(
	name = 'sand',
	color = '#FFFBA9', 
	unit_weight = 20,
	c = 5, 
	phi = 30)

#~base
base = lem.create_base()
base.set_limits(
	left = 0, 
	right = 40, 
	bottom = 0)
base.add_hline(20)

base.assign_material(sand, (1,1))

#~analysis cases
case1 = lem.new_case('Case 1')
case1.cut_right_slope(
	bottom_elevation = 10,
	slope = '2:1',
	x = 30,
	is_top_x = False)

# deskripsi bidang gelincir entry-exit
	
case1.set_entry_exit_limits(
	left_limits = (0,10), 
	left_points_number = 20, 
	right_limits = (30, 40), 
	right_points_number = 20,
	radius_increment_number = 5, 
	slice_number = 30, 
	left_y_limits = [], 
	right_y_limits = [])
	
# input koefisien gempa kh
case1.apply_seismic_load(
	horizontal_coefficient = 0.2)

Sebagai contoh untuk koefisien gempa kh = 0,2; diperoleh faktor aman lereng FS = 1,077.

kh = 0,20 menghasilkan FS = 1,077.

Adapun nilai faktor aman untuk masing-masing nilai kh, diplot sebagai berikut.

Plot nilai kh vs FS; dipeoleh ky = 0,25g

Dari grafik di atas terlihat faktor aman hasil LEMSlope lebih rendah (merah) dibandingkan dengan hasil Geostudio Slope/W (biru). Namun, masih mendekati.

Untuk kondisi lereng kereng sesuai soal di atas; dari hasil plot nilai FS = 1,0 diperoleh nilai ky = 0,25 g.

Dengan demikian LEMSlope dianggap sudah memenuhi analisa faktor aman lereng akibat gempa; metode pseudostatik analisis.

Demikian semoga bermanfaat.

Groundhog: Perkenalan

Kabar gembira bagi Anda yang minat bidang geoteknik. Mari perkenalkan..

Maskot Groundhog

Groundhog

Groundhog adalah sebuah package python yang bertujuan untuk automasi perhitungan geoteknik.

Package ini berisi sekumpulan alat/ fungsi/ rumus yang dapat digunakan. Berikut rangkumannya..

  1. General and utility functions
    • Soil profiles
    • Plotting
    • Validation
    • AGS to Pandas converter reference
  2. Site investigations
    • Soil classification
    • Soil parameter correlations
    • In-situ tests
    • Laboratory testing
  3. Pile calculations
    • De Beer and Eurocode 7 calculations
    • Koppejan pile resistance calculations
    • Pile settlement
    • Cavity expansion methods for cast in-situ piles
    • Negative skin friction
  4. Shallow foundations
    • Stress distributions
    • Shallow foundation capacity
    • Settlement
  5. Soil dynamics
    • Liquefaction
    • Cyclic behaviour
    • Dynamic soil property correlations

Nomor 1 di atas adalah fungsi umum. Sedangkan nomor 2 sampai 5 adalah fungsi untuk perhitungan/analisa.

Setiap fungsi di atas terdiri dari beberapa metode. Misal: Kapasitas dukung fondasi dangkal (shallow foundation cap.) terdiri dari kondisi undrained, drained, fondasi lingkaran, persegi, mayerhoof, davisbooker, vesic, dan banyak lagi.

Contoh teori Prandtl failure surface
Contoh hasil korelasi data sondir (presentasi Bruno Stuyts)

Package ini pastinya akan sangat membantu dalam perhitungan sehari-hari. Sejalan dengan tujuan yang disebutkan dalam panduannya, artinya kira-kira:

  1. Meningkatkan tingkat akurasi perhitungan, dengan unit-tested function melalui validasi parameter.
  2. Meningkatkan kesadaran tentang data pengujian dan teori yang mendasari korelasi data dan rumus desain.
  3. Memperkenalkan pengembangan software engineering open-souce kepada komunitas insinyur di seluruh dunia.

Package ini sangat baru bagi Saya pribadi, sehingga masih perlu dipelajari lebih lanjut. Bagi yang ingin mencoba silahkan menuju beberapa sumber di bawah ini:

  1. Webinar youtube Bruno Stuyts: Geotechnical Engineering Automation
  2. Groundhog documentations
  3. Groundhog github
  4. Akun youtube: Bruno Stuyts

Demikian semoga bermanfaat, terus pantau blog ini