.
dapat dilihat contoh sederhana diatas IronPython sama dengan Python pada bahasa dasar dan library bawaan, dapat menggunakan dua bahasa sekaligus untuk tujuan yg sama namun disisi lain berbeda yaitu pada integrasi .Net didalamnya. Hal tersebut yg menjadikan banyak keterbatasan library pendukung pihak ketiga (third party) tidak seperti yg ada pada Python standard (i.e NumPy, SciPy, MatPlotLib, dll) karena memang tidak kompatibel. Sebagai penggantinya library .Net dapat digunakan dan memang diperuntukan khusus untuk ini, kelebihannya adalah akan berjalan lebih stabil dan cepat karena library tersebut memang standard untuk C# yg sudah dilakukan optimalisasi. Beberapa library yg dapat digunakan sebagai pelengkap diantaranya adalah Mapack, Zedgraph, ScottPlot, UnitsNet, Math Numerics, ExcelLibrary, dll.
.
.
.
.
contoh penggunaan standard library .Net pada CLR bawaan IronPython yaitu Math, Dictionary dan Array, dapat berguna untuk membuat dan membaca tabel kepemilikan dan mengambilnya (extracted). Tabel tersebut pada aplikasi teknik sipil/struktural dapat berupa karakteristik penampang, deret nilai gaya internal balok sepanjang bentang, internal force pada element plane-stress atau plate-bending, dll untuk kemudian dilakukan proses lanjut data tersebut keperluan desain.
.
.
.
library .Net bawaan CLR dapat membuat data masukan dalam format XML, kelihatannya juga dapat membaca isi didalamnya serta mengambil bagian tertentu atau keseluruhan untuk proses lanjut mengetahui nilai bilangan atau tujuan manipulasi string.
.
,
.
contoh lain penggunaan library Mapack untuk operasi dasar matrik, penjumlahan, perkalian, transpose, determinant, inverse dan nilai eigen. Sudah cukup membantu untuk analisa struktur sederhana (truss, beam, spring) metode matrik, linear elastis, statis dan dinamis, atau elemen plane stress sebagai pengantar mengetahui alur kerja umumnya program elemen hingga. Untuk yg lebih advanced dapat menggunakan library Math Numerics, keduanya berlisensi terbuka dan bebas digunakan. Sebagai pengingat ulang operasi matrix dapat merujuk buku tulisan Autar K. Kaw (2022) yg tersedia secara online.
.
.
.
perencanan desain struktur di Indonesia merujuk pada peraturan negara Amerika, sehingga diawal transisi ada kendala pada pengunaan satuan yg berbeda (U.S Costumary Units vs International Units). Sebenarnya hal tersebut dapat diabaikan dengan cukup mengkonversi data masukan dan hasil keluaran, namun akan kehilangan esensi jika detail perhitungan ditampilkan. Hal tersebut menjadikan peraturan asli negara Amerika belakangan mengeluarkan edisi Metrik (International Units). Jika program ditujukan untuk dua pengguna yg berbeda pada kebiasaan satuan maka diperlukan dua buah modul desain berdasarkan pemisahan satuan, namun untuk cara cepat dapat dilakukan konversi satuan setiap detail perhitungan secara otomatis dan hasil setiap perhitungan mempunyai kesetaraan units dengan nilai dalam tanda kurung, Untuk tujuan tersebut diperlukan library conversi satuan seperti diatas yaitu UnitsNet agar dapat diterapkan secara langsung dengan mudah. Library tersebut berlisensi terbuka dan bebas digunakan.
.
.
Penyimpanan data hasil keluaran atau masukan dalam format spreadsheet dapat menggunakan library sederhana ExcelLibrary yg tentunya dapat lebih mudah dan dapat langsung dibuka pada program aplikasi perkantoran (Office) ketimbang format CSV.
.
.
library diatas sangat sederhana hanya mampu membuat file XLS saja dan terlihat masih banyak kekurangan, untuk dapat lebih lanjut seperti membaca dan membuat file XLSX serta membuat formula didalam cell maka diperlukan library lain seperti ClosedXML atau NanoXLSX. pada library pertama saya belum berhasil, maka digunakan pilihan kedua. Ada sedikit perbedaan pada definisi reference cell yg ditentukan langsung dan tidak. Default penulisan data pada lajur baris, untuk bergerak kebawah isediakan fungsi GoToNext dengan pilihan Row atau Column. Mungkin dengan named cell range manager akan lebih memudahkan dalam membaca dan membuatnya konsisten. Dapat juga menggunakan perintah langsung cell refferences seperti contoh: wb.CurrentWorksheet.AddCell("ABC", "A3") untuk isi text atau wb.CurrentWorksheet.AddCellFormula("C1/B1", "A3") untuk isi rumusan
.
.
penggunaan library Math.NET Numerics juga terlihat berhasil dan berjalan baik, library tersebut cukup advances dapat diandalkan untuk perhitungan matrik skala besar dengan tingkat kecepatan yan baik karena sudah menggunakan teknologi Intel MKL yg biasa dipakai pada solver FE komersil yg ada dipasaran. Kecepatan library Pardiso dari Intel tersebut terlihat dapat mempercepat sampai seper-sepuluh waktu penyelesainnya dibanding bawaan standard.
.
.
selain library operasi matrik diatas ada juga NumSharp dan terlihat dapat digunakan, syntax mirip dengan Numpy sehingga akan lebih mudah adaptasi walaupun secara feature belum selengkapnya.
.
.
.
penggunaan ploting chart dengan library ZedGraph yg sebelumnya sya tidak berhasil karena kendala adaptasi bahasa, setelah dicoba beberapa kali dan mencari penyebabnya akhirnya sudah dapat digunakan. Diperlukan tambahan definisi import pada System.Drawing, kemudian hasilnya ditampilkan sebagai berikut.
.
alternative lain sebagai penggantinya menggunakan library ScottPlot dan terlihat dapat berjalan normal serta menampilkan hasil, kelebihan library tersebut adalah dapat melakukan: gambar garis dan polygon, regresi linear (curve fit), snap data point dan menampilkan nilainya, zooming dan panning secarat interactive, work-in-progress menyimpan grafik dalam format vector (svg) serta pengembangan yg berkelanjutan dan juga direncanakan cross-platform.
.
banyak contoh juga diberikan pada demo program, sehingga lebih mudah adaptasi untuk digunakan sesuai keinginan.
.
.
penggunaan library tersebut juga dapat untuk sketch bidang dua dimensi, plot bentuk penammpang akan dibuat skalatis atau proportioanl seperti contoh berikut
.
yg perlu dicoba adalah library plot atau draw (3D) dan mesh dalam format keluaran Stp/Igs dan Unv/Inp yg mana library terserbut perlu kompatibel dengan IronPython. Biasanya kendala pada dokumentasi, adaptasi dari bahasa awalnya yg untuk C# dijadikan Python, walau cukup dapat dijangkau dan dipahami namun sya coba tidak selalu berhasil (i.e ClosedXML, VTK, SketchUp.Net, OpenSees.Net, dll). Akan kesulitan karena memang developer pembuat library tidak mendukung secara resmi untuk hal khusus tersebut, memposting masalah pada forum adalah ide yg baik dgn harapan developer yg mengetahui struktur hirarki library atau ada pengguna lain yg expert berpengalaman lintas bahasa pemrograman yg mengetahui secara detail kompatibilitas dan sumber masalahnya..
kelebihan lainnya pada IronPython adalah dapat membuat stand-alone executable yg sudah dialkukan optimalisasi dengan teknologi JIT (Just In Time) compiles oleh pembuat .Net yaitu Microsoft. Python standard juga dapat melakukan sama dalam membuat exectuable, namun sya pernah bandingkan waktu running cukup terpaut jauh. Ini memang hal unik, saat awal seseorang ingin membuat program secara cepat dengan sedikt baris code dan sesederhana mungkin, namun kelanjutan setelah program jadi yg diharapkannya adalah berjalan stabil dan cepat dan hal ini dapat bertentangan karena bahasa program yg digunakan.
.
beberapa rujukan dokumentasi online dalam fromat PDF dapat diakses bebas, versi cetak juga bisa didapat dgn membelinya. Daftar rujukan tersebut diantaranya adalah sebagai berikut:
- Python 2.17 Documentataion, Python Software Foundation (2016) weblinks 6582p
- Think Python 1st ed., Allen B. Downey (2012) weblinks 240p
- .NET Book Zero, Charles Petzold (2007) weblinks 267p
- .NET Framework - Notes for Professionals, GoalKicker.com (2018) weblinks 192p
- .NET Tutorial for Beginners, India Community Initiative (2004) weblinks 224p
**updates
untuk pemodelan object 3D serta meshing dapat menggunakan library Gmsh, yg mana didalam SDK tersebut sudah menyertakan library CAD OpenCASCADE dan juga aplikasi GUI (FLTK) yg dapat berguna sebagai model dan mesh viewer juga untuk post-processor. Ukuran file library Gmsh cukup besar yaitu sekitar ~82Mb namun ini sebanding dengan kelengkapan feature dan kegunanaanya. Sebenarnya ini bukan library.Net berbahasa C# melainkan murni bahasa C++, namun oleh developer disediakan wrappers dalam bahasa Python.
.
.
.
.
untuk solver struktural metode elemen hingga, dapat menggunakan project opensource yg sudah ada seperti OpenSees atau CalculiX dengan sebelumnya ditempuh pembuatan mesh dan data masukan lain pada IronPython lalu memanggil executable dengan fungsi subprocess. Namun jika model dan masalah struktur tingkatan kerumitannya tidak terlalu besar atau cukup sederhana sampai menengah seperti analisa statis linear elastis 3D (truss, beam, plane stress, plate bending), maka penggunaan library yg ada seperti BriefFiniteElementNet dapat juga digunakan, selain mudah karena sudah terintegrasi juga ukuran file library yg terlihat jauh lebih kecil (total hanya 382KB) dibanding solver FE yg disebut sebelumnya.
.
.
.
karena library meshing sebelumnya yaitu Gmsh mempunyai ukuran file yg cukup besar dan tidak dapat terintegrasi langsung, maka sya mencari library meshing lain untuk object bidang 2D yaitu Triangle.Net adaptasi dari original buatan Shewcuk J.R (2003). Namun terlihat akan ada masalah pada kompatibilitas lisensi walau mungkin (?) tetap masih dapat digunakan untuk project OpenSource atau Free Software. Direkomendasikan pilihannya menggunakan Netgen format in2d untuk itu, alasan lainnya karena mempunyai feature lebih baik pada quad-dominate algorithm serta dukungan file format untuk solver FE seperti CalculiX. Meshing 3D bentuk sederhana juga dapat menggunakan CSG, atau untuk object yang rumit acuan file 3D format Step/Iges.
.
.
.
.
penggunaan library geometry mungkin diperlukan, misal untuk mengetahui jarak terdekat suatu point dengan garis atau bidang hubungannya seperti fungsi pemutus (trim) atau pemanjang (extent) pada CAD, perpotongan (intersection) dua bua garis dengan object lingkaran atau garis lain pada sembarang bidang sama dalam masalah tiga dimensi, sudut dari dua buah garis, fungsi rays untuk construction points, pengelompokan banyak garis sesuai kesamaan bidang, dll. Library GeometRi.CSharp dapat digunakan untuk kebutuhan tersebut.
.
.
.