Jumat, 21 Januari 2022

dotnet dari MS yg sudah cross platform

.


.

belakangan ini sya tertarik dengan salah satu project opensource dari luar untuk aplikasi Computer Aided Engineering (CAE) ada diskusi langsung dengan pembuatnya melalui forum dan email. sya mempelajari sekilas bahasa pemrograman yg digunakannya, ternyata sesuatu yg baru bagi saya yaitu C# .Net dari Microsoft. walau sudah lama mendengar dan mengetahui, hal tersebut membuat sya kurang tertarik. namun karena project yg sya minati menggunakan bahasa tersebut, menjadikan sya ingin lebih mengenal dan (mungkin) mengaplikasikan atau mengkonversi source dari program jadi yg sudah sya buat dengan bahasa C (sebagian) dan Python (kebanyakan). awalnya berpikir menggunakan Visual Studio Community untuk IDE dan compiler, namun karena besarnya file installer (2.29Gb Net only)  untuk di download serta tidak tersedianya untuk OS Linux maka sya mencari info alternative.  menemukan cara lain yg lebih sederhana yaitu menggunakan distribusi installer .Net SDK (186Mb) yg memang sudah cross platform (Windows, Linux, Mac).  tambahan untuk IDE adalah Visual Studio Code (76.2Mb), namun kali ini sya hanya menggunakan text editor SciTe.

.


(source: Microsoft, 2021)

.

mempelajari lebih lanjut, dukungannya kepada Linux cukup baik terlihat dengan adanya support terhadap salah satu distro terkenal yaitu Ubuntu bahkan untuk versi 16.04(LTS) yg sudah di release sejak sekitar 6 tahun yg lalu. saat ini sya menggunakan OS Windows 10 64bit, setelah instalasi dapat dilakukan check pada command prompt sebagai berikut,

.


.

memulai project aplikasi console dengan perintah berikut, maka akan membuat file template dasar beserta folder dan setting

.


.


.

migrasi awal dari sya sebagai pengguna bahasa pemrograman C dan Python cukup membantu memahami dan menerapkannya pada pemrograman C#. disini sya lakukan modifikasi sesuai keinginan dan tujuan pembuatan program. contoh sederhana menghitung luas, keliling dan berat dari besi tulangan dengan jumlah dan panjang tertentu. hasil program yg ditampilkan dibuat sejelas mungkin agar menghindari user membaca berulang program manual references, untuk itu tentunya diperlukan baris kode yg lebih banyak dari biasanya.

.


.


.

untuk pembacaan dan penyimpanan data, sya lebih suka menggunakan format XML ketimbang plain text biasa. pertimbangan lebih terorganisir dan mudah dijangkau/diakses karena definisi tiap elemen sudah ditentukan. juga data masukan dan hasil keluaran dapat disimpan dalam satu file yg sama. cukup berguna untuk pengolahan jumlah data yg besar, banyak program opensource atau commercial saat ini mendukung format file tersebut.

.


.

.
.
sekilas terlihat sudah benar dan sesuai pembacaan tiap data dan nilainya, padahal ada yg belum dan terlewat pada pemisahan seperti yg diharapkan berikut. perlu dicari kemudian, agak kurang cepat adaptasi saat sya migrasi dari xml.etree.ElementTree di IronPython. memang perlu usaha lebih jika menggunakan C# sebagai konsekuensi speed, performances & compatibilities yg dingin dicapai pembuat program.
.


.

terkadang diperlukan output data dalam format spreadsheet sehingga dapat diolah lanjut, untuk tujuan khusus tersebut diperlukan instalasi library terlebih dahulu. sebagai berikut,

.

.

.
.
contoh sederhana diatas hanya menyimpan data masukan. data keluaran seperti luas, keliling dan berat dapat disimpan dalam format file XLSX tersebut. rumusan dapat ditentukan langsung untuk menampilkan hasil tanpa melakukan perhitungan terlebih dahulu pada C# karena akan dilakukan otomatis oleh library tersebut. dapat juga hanya membaca isi file atau melakukan perubahan/editing. banyak juga library lain yg menarik untuk diterapkan pada aplikasi CAE dapat di install secara mudah dan lebih terjamin kompatibilitasnya.
.


.


.
aplikasi desain sipil/struktural banyak dijembatani format file CAD yg sudah ada dikenal luas seperti DXF, untuk tujuan pembacaan dan penggambaran juga dapat dilakukan dengan instalasi tambahan library berikut,
.
.

.
pada penggunaan library ini sya masih stuck belum ketemu penentuan dimensi pada gambar dikarenakan dokumentasi pembuatnya yg kurang jelas, ada library DXF lain yg lebih lengkap dokumentasinya namun masih gagal saat proses compiled. nanti perlu perbandingan lanjut pemilihannya berdasarkan kelebihan dan kekurangan masing-masing.
.

.
**updates
menggunakan library DXF yg lain sebelumnya gagal saat compiled, ada yg tertinggal pada penentuan setting tambahan System.Drawing.Common. kemungkinan library ini yg akan digunakan, pertimbangan dokumentasi lebih lengkap dan dukungan pengguna lain yg sudah banyak. apabila pembuat familiar dengan perintah pada program AutoCAD saat penggambaran maka akan mempermudah memahami dokumentasi dan menerapkannya karena constructor adalah identik/sama. 
.

.

.



.
sering juga ada kebutuhan pembuatan chart, plot atau graph data X/Y dari tabulasi hasil perhitungan agar dapat terwakilkan dengan cukup jelas. untuk itu perlu library khusus, misal sebagai berikut.
.

.


.

.
untuk library visualisasi object tiga dimensi masih belum berhasil walau sudah selesai compiled, ditampilkan error message seperti dibawah dan juga Windows Form gagal menampilkan object yg sya buat yaitu cylinder. kelihatannya disebabkan dynamic linked libraray (dll) yg diambil dan digunakan belum lengkap, perlu dicari kemudian.
.

.
.
.


.

secara pribadi, sya bukan hardcore programmer yg menekuni secara terus menerus dan berkelanjutan. karena memang banyak bekerja sebagai designer, namun kenyataannya terkadang bahkan sering juga memerlukan program khusus untuk kepentingan internal sendiri agar mempercepat kerja sehingga menghemat waktu dan tenaga, juga untuk menghindari pekerjaan perulangan yg terlihat membosankan. selama ini lebih banyak ke problem solving ketimbang graphical user interfaces, sebenarnya jika melihat algorithma untuk perhitungan desain sipil/struktural tidak terlalu rumit. kebanyakan aritmetika biasa: penjumlahan, perkalian pembagian, min/maks, pangkat, akar, konversi satuan/units dan beberapa pencabangan atau iterasi. seperti contoh sederhana diatas, hanya dengan penggunaan aritmetika sederhana sudah dapat mengitung berat tulangan yg digunakan dalam suatu konstruksi gedung beton bertulang, dapat dikembangkan juga untuk volume beton dan luasan bekisting untuk tujuan Bill of Materials (BoM). begitu juga dengan aplikasi desain struktural, seperti perencanaan balok/kolom beton bertulang atau struktur baja atau pelat dan pondasi terlihat hanya ada tambahan pencabangan dan iterasi saja sudah dapat menyelesaikan masalah yg melelahkan jika dikerjakan manual kalkulator tangan. penekanan lebih terhadap alur program (flowchart) dan implementasi dari pengetahuan perencana (knowledge based) ketimbang penguasaan semua materi bahasa pemrograman. dapat diartikan saat implementasi maka penggunaan bahasa program lebih cenderung monoton itu-itu saja. berbeda halnya untuk aplikasi khusus, kadang sya stuck juga terhenti belum ketemu berkelanjutan dikemudian waktu karena memang belum ada dedikasi khusus. 

.


(source : Microsoft, 2021)

.

bahasa C# (Microsoft) yg up to dates diketahui lebih cepat (dapat jauh) dibanding IronPython (Microsoft) yg out dates terutama pada saat recursivelooping dan iterasi, dapat dibuat compile static atau dynamic juga, dapat dibuat dan berjalan di Linux, kompatible dengan project opensource yg sya minati untuk kemudahan integrasi. karena pertimbangan tersebut kemungkinan besar bahasa pemrogram C# yg akan sya gunakan kedepannya migrasi menggantikan IronPython berikut konversi source code yg sudah banyak sya buat selama ini. walau ada yg beberapa yg belum selesai seperti kolom biaksial beton bertulang atau komposit pembuatan permukaan runtuh (failure surface) tiga dimensi karena lama sekali tidak disentuh lagi dan kurangnya motivasi akibat tersedianya program jadi non/komersil yg sudah ada beredar.

.

Jumat, 14 Januari 2022

rujukan ketidak sempurnaan geometri dan penampang

.


( source : Schillinger et al, 2010)

.

analisa kapasitas penampang baja untuk balok, kolom dengan program bantu elemen hingga nonlinear besar dipengaruhi oleh pemodelan ketidak sempurnaan geometri (global) dan penampang (local). semakin langsing penampang maka akan semakin sensitif pengaruh tersebut terhadap hasil kapasitas ultimit yg didapat. hal tersebut cukup rumit dan menjadikan belum adanya rujukan tetap dari peraturan perencanaan struktur baja. walau peraturan dari Eropa memberikan nilai pendekatan untuk hal tersebut. namun sya lihat ada beberapa kondisi yg belum sesuai jika merujuk toleransi dari distributor penyedia penampang baja. diantaranya yg belum tercakup adalah pada profil wide flanges, toleransi offset bergesernya posisi pusat web dengan flanges sejarak tertentu. 

.


(source : EN 1993 1-5)

.

melihat rujukan beberapa penelitian yg sudah ada, yg biasa ditinjau adalah ketidak sempurnaan geometri yg diambil dari analisa ragam tekuk (eigen buckling) dengan skala tertentu terhadap bentang misal L/500 atau L/1000. jika merujuk tersebut maka hanya lengkung sweep atau bow pada arah sumbu lemah saja yg ditinjau, sedangkan pada sumbu kuat (camber) bisa jadi tidak tercakup karena pengaruh penggunaan jenis elemen shell atau solid pada analisa dan juga penampang yg terkekang tumpuan atau dengan kategori mendekati kolom pendek. kondisi sloping juga akan sedikit berbeda dengan toleransi dari distributor, yg mana hasil dari ragam tekuk yang lebih tinggi akan menunjukan kondisi bergelombang sedangkan dari distributor transisinya hampir mendekati single curvature sepanjang bentang.

.


.

.


.

kondisi tumpuan dan beban juga mempengaruhi ragam tekuk yg terjadi, yg mana akan digunakan sebagai update koordinat terdeformasi dengan skala tertentu. pada program komersil Abaqus mempunyai feature keyword imperfection dengan tinjauan kombinasi mode dan skala yg digunakan secara langsung dalam data masukan. karena ketidak konsistennya dengan toleransi fabrikasi maka belakangan banyak peneliti tidak menggunakan ketidak sempurnaan geometri berdasarkan ragam tekuk (eigen buckling) namun menggunakan bentuk dari ragam getar (mode shapes) analisa frekuensi atau pendekatan lain dengan spectrum.

.
.


.


.

sya lebih cenderung terhadap ketidak sempurnaan bentuk hasil dari analisa ragam getar (mode shapes) karena keadaan penampang yg semula sweep atau bowing (sumbu lemah), camber (sumbu kuat) dan berputar twisting (sloped flanges) dan webs curvature terwakilkan. hal tersebut juga sudah cukup selaras dengan rujukan ketidak sempurnaan peraturan baja Eropa dan juga hasil pengukuran aktual pada umumnya. beberapa penggunaan bentuk ketidak sempurnaan diatas adalah untuk mempercepat proses modelisasi. hal lain yang dapat ditempuh dan lebih mewakilkan adalah penentuan beban berupa defleksi secara langsung ditinjau semua keadaan, lalu pada setiap langkah tahap tersebut dilakukan penyimpanan koordinat titik nodes sampai yg terakhir digunakan. perlu banyak penelitian pada berbagai profil penampang mengenai ketidaksempurnaan ini, misal dengan photogrammetry atau laser scanning sebagai acuan dari pendekatan bentuk yg digunakan. jika sudah didapat bentuk aktual dari ketidak sempurnaan geometri dan penampang tersebut maka dapat digunakan langsung berikut faktor pembesaran yg bernilai sekitar dua kalinya.

.


Fabrication Tolerance JIS G3192 - Hot Rolled H Sections

(Source : Gunung Garuda PT., 1999)  

.

berikut contoh lain hasil dari pengukuran aktual ketidak sempurnaan geometri pada profil welded H-sections dan cold formed (Channel) dan dilakukan perbanding sendiri dengan bentuk hasil analisa tekuk dan frekuensi.

.


d = 898 mm, b = 353 mm

t = 31.6 mm, w = 9.9 mm

L = 9754 mm

(source : Twizell, 2021)

.

(source : Schafer et al, 2014)



.

hasil analisa tekuk (eigen) kondisi beban terpusat, pined-pined support, kekangan rotasi axis pada tumpuan diterapkan. dapat dilihat empat terendah ragam tekuk yg terjadi belum mencakup ketidak sempurnaan geometri arah sumbu kuat yg melengkung (camber), penentuan ulang dengan penambahan yaitu sebanyak 24 ragam tekuk masih belum juga mencakup. belum lagi tinjaun untuk kondisi berputarnya bentuk penampang (pre-twisted).

.

.

.

.

.


.

perbandingan ragam bentuk dengan hasil analisa frequensi (mode shapes) terlihat pada ragam getar ke-4 saja sudah mencakup lengkung arah sumbu kuat.

.

.

.


.

untuk menjangkau bentuk kondisi berputar (twist) perlu menyesuaikan kondisi tumpuan dgn menghilangkan kekangan rotasi sumbu axis.

.


.

beban titik kesetaraan (pembagi ganjil & pusat berat)

 pada tulisan sya sebelumnya, menggunakan pembagi yg genap dan nilai rata-rata sehingga gaya geser dan beban dekat tumpuan akan ada sedikit yg tidak terhitung. sedangkan kondisi lain jika pembagi genap tersebut dihitung pada titik beart tengah (mid) setiap elemen balok akan menjadikan momen lentur maksimum tengah bentang yg selisih lebih kecil. untuk masalah tersebut maka pada model dilakukan penambahan terhadap titik terdekatnya, terkesan sebuah trik saja walau terlihat konsisten. kali ini sya membuat perbaikan dengan pembagi pias adalah ganjil sehingga tidak ada kehilangan beban yg diterima balok (geser & momen). jumlah pembagi balok yg dilakukan adalah sebanyak 3,5,7 dan 9 pias.

.


.

.

.


.

.

.


.

.

.


.

terlihat hasilnya lebih baik dan konsisten terhadap gaya geser dan momen yg terjadi pada sepanjang bentang, setidaknya diperlukan pembagi sebanyak 9 pias. sedikit kekurangan dari pembagian balok dengan jumlah ganjil tersebut adalah diperlukannya perhitungan tambahan untuk mengetahui momen lentur pada seperempat bentang untuk tujuan perhitungan kekuatan balok baja (moment gradient coefficient). namun hal tersebut dapat dengan mudah dilakukan interpolasi linear dari titik terdekat sebelahnya. selain hal tersebut adalah besarnya nilai gaya geser untuk tujuan perhitungan yg diambil sejarak tertentu dari muka kolom, terlihat akan menjadikan konservatif atau lebih besar (aman). ketelitian dapat ditingkatkan dengan peningkatan jumlah pembagi menjadi 11, 13, 15 atau 17 pias. semakin tidak seragam distribusi beban akan membutuhkan lebih banyak pembagi piasnya. agar diketahui analisa nonlinear (geometry & material, boundary) program bantu elemen hingga adalah pendekatan tidak eksak pasti memiliki tingkat kesalahan penyimpangan atau selisih. dilakukan pendekatan dengan berbagai cara dan asumsi penyederhanaan, banyak metode perhitungan, asumsi bentuk elemen dan kondisi batas atau model material diajukan oleh peneliti. setiap metode mempunyai kelebihan dan kekurangan masing-masing, penyimpangan sebesar 5% s/d 10% dibandingkan dengan aktualnya atau hasil uji laboratorium sudah cukup baik diterima (reliable), sehingga diharapkan dengan digunakannya suatu faktor terhadap material dan beban akan menghasilkan struktur yg lebih pasti tingkat keamanannya.

.


.

untuk beban jenis segitiga dan trapesium dengan pembagi ganjil ditampilkan pada gambar diatas, ada sedikit tambahan yaitu mengenai titik berat dari beban pias kecil segi-tiga, segei-empat sembarang (trapesium) dan segi-lima. dapat dilakukan pemecahan lebih teliti dahulu pada distribusi beban pias tersebut. terlihat karena menggunakan pembagi ganjil (mid spans nodes) titik pusat berat (center of gravity) dari total beban pias maka metode tersebut dapat lebih teliti dan konsisten jika dibanding sebelumnya.

.





.

Rabu, 12 Januari 2022

sudut putar sumbu lokal elemen balok

sya belakangan ini jarang mengunakan jenis elemen balok pada CalculiX dan membuat lupa, jadi sebagai pengingat saja sifatnya. dimensi balok ditentukan ketebalan arah sumbu lokal 1 dan 2, pemutaran sumbu lokal balok dapat ditentukan oleh pengguna. kondisi sudut putar nol derajat adalah nilai default solver jika tidak ditentukan langsung.  arah (vector) sumbu axis balok (tangent to the axis of the element) bernilai nol.

.


.


.

berikut adalah contoh dari modifikasi bawaan swing.inp, dimensi sya buat lebih pipih dan kaki lebih kecil untuk memperjelas model. bagian kaki sya kelompokan menjadi dua yaitu group untuk sudut putar 135drjt dan 45drjt.

.



.

.
.
(source : Dhondt, 2014)


.
.

.

.


.
.


berikut contoh lain, pemutaran sudut lokal axis elemen balok vertikal (kolom).
.
.

.
.

.



.

.