Sitemap

Simple Finite Element Methods with Python

4 min readNov 14, 2023

--

Berlian Oka Irvianto
10220037

Pendahuluan

Sering kali kita menjumpai persamaan diferensial pada problem fisika. Persamaan diferensial tersebut meliputi hal yang sederhana berupa Ordinary Differential Equations (ODE) seperti persamaan gerak 1D dengan Hukum II Newton sampai meliputi hal yang cukup advance berupa Partial Differential Equation (PDE) seperti persamaan gelombang. Salah satu fokus utama kita adalah mencari solusi dari persamaan diferensial yang kita hadapi.

Metode Elemen Hingga (Finite Element Method) (FEM) merupakan metode yang dapat kita gunakan untuk menghadapi permasalahan difensial parsial (PDE). Metode ini merupakan suatu teknik untuk memecahkan PDE dengan pertama-tama melakukan pendiskritisan persamaan-persamaan tersebut dalam dimensi spasialnya (Smith et al, 2014).

Simple FEM with Python using anastruct

Library anastruct merupakan salah satu library di Python yang dapat kita gunakan untuk mengimplementasikan FEM 2D untuk struktur. Analisis struktural secara frame ke frame serta perhitungan gaya dan displacement-nya dapat disediakan oleh library ini (dokumentasi anaStruct).

Pada kesempatan ini, penulis akan menggunakan Google Colab untuk membuat program dengan menggunakan library anastruct ini. Silakan buka tautan berikut untuk melihat program yang telah penulis buat.

Buat Struktur Baru

Hal pertama yang dilakukan ketika akan menggunakan library anastruct ini adalah dengan membuat objek SystemElements. Berikut ini adalah contoh pembuatan struktur baru.

""" Create the structure """
myStruct = SystemElements();

## Add truss element
Length = 3.0;
myStruct.add_truss_element( # id 1
location=[
[-1 * Length, 0],
[0, 0]
],
EA=1000
);
myStruct.add_truss_element( # id 2
location=[
[0, 0],
[Length, 0]
],
EA=1000
);
myStruct.add_truss_element( # id 3
location=[
[-3, 0],
[-1 * Length*mt.cos(mt.radians(60)), Length*mt.sin(mt.radians(60))]
],
EA=1000
);
myStruct.add_truss_element( # id 4
location=[
[-1 * Length*mt.cos(mt.radians(60)), Length*mt.sin(mt.radians(60))],
[0, 0]
],
EA=1000
);
myStruct.add_truss_element( # id 5
location=[
[0, 0],
[Length*mt.cos(mt.radians(60)), Length*mt.sin(mt.radians(60))]
],
EA=1000
);
myStruct.add_truss_element( # id 6
location=[
[Length*mt.cos(mt.radians(60)), Length*mt.sin(mt.radians(60))],
[3, 0]
],
EA=1000
);
myStruct.add_truss_element( # id 7
location=[
[-1 * Length*mt.cos(mt.radians(60)), Length*mt.sin(mt.radians(60))],
[Length*mt.cos(mt.radians(60)), Length*mt.sin(mt.radians(60))]
],
EA=1000
);

## Add support
myStruct.add_support_hinged(node_id=1);
myStruct.add_support_hinged(node_id=3);

## Add load (point load)
myStruct.point_load(Fy=-500, node_id=2);

# Show the structure that we have created
myStruct.show_structure();

Dari struktur tersebut, akan dihasilkan grafik sebagai berikut.

Press enter or click to view image in full size

Displacement dari Struktur

Pada bagian ini, perpindahan tiap titik pada struktur akan ditampilkan. Selain itu juga, komparasi dua buah hasil SystemElements.show_displacement()dengan dua nilai argumen factor yang berbeda akan ditampilkan di sini.

Get Berlian Oka Irvianto’s stories in your inbox

Join Medium for free to get updates from this writer.

Untuk argumen factor yang bernilai default, hasil grafik yang menunjukkan displacement-nya diberikan oleh gambar berikut.

Press enter or click to view image in full size

Untuk argumen factor=1 yang diberikan pada SystemElements.show_displacement() , berikut ini adalah hasil grafiknya

Press enter or click to view image in full size

Untuk argumen factor=2 yang diberikan pada SystemElements.show_displacement() , berikut ini adalah hasil grafiknya

Press enter or click to view image in full size

Parameter factordalam metode SystemElements.show_displacement()merupakan parameter yang mempengaruhi plotting scale yang dihasilkan oleh metode tersebut. Nilai default-nya adalah Nonedan pada contoh di atas, kita membandingkan hasil plot default terhadap plot dengan nilai factorsebesar 1 dan 2. Jika kita lihat, semakin besar argumen factoryang kita berikan, semakin besar skala plotting yang dihasilkan.

Axial Force

Gaya aksial pada suatu batang yang menyusun struktur kita di atas merupakan komponen gaya yang bekerja dalam arah longitudinalnya. Gaya aksial yang dihasilkan pada struktur yang telah kita buat di atas pun dapat diperlihatkan oleh metode SystemElements.show_axial_force() seperti pada gambar berikut.

Press enter or click to view image in full size

Dapat dilihat pada grafik di atas, seluruh batang selain 2 batang di bawah menghasilkan gaya aksial yang nilainya sebagian positif dan sebagian negatif. Gaya aksial ini berkaitan dengan sifat bahan dan bergantung pula dengan modulus young material.

Reaction Force

Metode SystemElements.show_reaction_force() merupakan metode yang digunakan untuk menghasilkan grafik yang menunjukkan gaya reaksi yang diperoleh struktur dari tumpuan.

Press enter or click to view image in full size

Parameter EA dan EI pada Kelas SystemElements

Pada kelas SystemElements() , terdapat dua parameter yang dapat kita ubah. Kedua parameter tersebut adalah EA dan EI . Sebetulnya, parameter EA itu sendiri merupakan produk dari modulus young (E) dan cross sectional area dari batang (A) sedangkan parameter EI merupakan produk dari modulus young (E) dan momen inersia (I). Berikut ini adalah struktur dengan geometri yang sama dengan struktur yang telah dibuat, tetapi memiliki parameter EA dan EI yang berbeda. (Nilai default dari EA adalah 15000 sedangkan nilai default dari EI adalah 5000 ).

""" Create the structure """
myStruct2 = SystemElements(EA=100, EI=1000);

dengan penambahan truss elemen, support, dan load yang sama dengan struktur yang sama seperti struktur di atas, berikut ini adalah struktur yang dihasilkan.

Press enter or click to view image in full size

Displacement yang dihasilkan (dengan argumen factor bernilai default) adalah sebagai berikut.

Press enter or click to view image in full size

Grafik Axial Force yang dihasilkan dari struktur tersebut adalah sebagai berikut.

Press enter or click to view image in full size

Sedangkan gaya reaksinya adalah sebagai berikut.

Press enter or click to view image in full size

--

--