User:LuthfiShafwan
Contents
Introduction
Nama saya muhammad luthfi shafwan, mahasiswa S2 Teknik Mesin peminatan Teknologi dan Sumber Daya Maritim angkatan 2024
Komputasi Teknik Pertemuan 1 (Pasca UTS) 29/10/2024
Pada pertemuan pertama ini, mahasiswa diperkenalkan dengan sebuah framework bernama DAI-5, yang dikembangkan oleh Dr. Ir. Ahmad Indra Siswantara. Framework ini didasari oleh konsep conscious thinking atau berpikir secara sadar. Landasan dari framework ini adalah falsafah yang beliau utarakan, yaitu "I'm my consciousness," yang menegaskan pentingnya kesadaran dalam setiap tindakan. Sebagai inisiator, beliau merumuskan framework ini menjadi empat tahapan penting:
(1) Intention, Menentukan niat/ide awal
(2) Initial Thinking, Mengeksplorasi dari ide yang kita inisiasikan sebelumnya
(3) Idealization, Penarikan solusi Dari ide tersebut kemudian mensimplifikasi sesuatu agar lebih ideal
(4) Instruction Set, Solusi ideal yang menjadi output pada tahapan sebelumnya, dikonversi menjadi sebuah tahapan sistematis Tahapan-tahapan ini merepresentasikan pentingnya pendekatan sistematis dalam berbagai aspek kehidupan.
Tugas 1
kasus atas arahan
Pada pertemuan kali ini, Pak Dai memberikan arahan kepada mahasiswa untuk melakukan diskusi mengenai FEM (Finite Element Method) satu dimensi melalui platform ChatGPT. Diskusi ini akan mencakup beberapa pertanyaan yang sesuai dengan arahan beliau, dengan output yang diharapkan dapat menghubungkan konsep FEM satu dimensi dengan langkah-langkah yang terdapat dalam kerangka DAI-5.
Berdasarkan 'code' diatas grafik akhir yang menjadi output perhitungan tersebut tertera pada gambar dibawah
kasus distribusi tekanan pada geometri Oscillating Water Coloumn untuk 2 konfigurasi, 1 chamber 2 turbine dan 2 chamber 1 turbine
Chat GPT, Luthfi Luthfi: halo, saya ingin mendiskusikan pendekatan numerik untuk Finite Element Method (FEM) pada geometri Oscillating Water Column (OWC) dengan dua konfigurasi (1 turbin 2 chamber dan 2 turbin 1 chamber) ChatGPT: Halo! Tentu, kita bisa mendiskusikan pendekatan numerik menggunakan Finite Element Method (FEM) untuk geometri Oscillating Water Column (OWC). Menarik sekali bahwa kita memiliki dua konfigurasi yang berbeda – satu dengan 1 turbin dan 2 chamber dan satu lagi dengan 2 turbin dan 1 chamber. Pendekatan ini akan membantu kita memahami bagaimana konfigurasi berbeda mempengaruhi distribusi solusi di sepanjang domain. Luthfi: coba step-by-step dari dasar model matematis hingga implementasi FEM nya ChatGPT: Baik, mari kita mulai dari dasar hingga implementasi FEM-nya. Berikut langkah-langkah secara bertahap: 1. Pemahaman Model Matematis Untuk sistem Oscillating Water Column (OWC), kita biasanya menggunakan model diferensial parsial yang menggambarkan bagaimana energi gelombang bergerak dan mempengaruhi kolom air dalam struktur. Dalam konteks ini, kita dapat memodelkan aliran atau perpindahan air di dalam chamber menggunakan persamaan gelombang atau persamaan difusi sederhana (bergantung pada pendekatan). Dalam kasus ini, kita akan menggunakan persamaan diferensial linier untuk menggambarkan perubahan nilai solusi (misalnya, tekanan atau kecepatan partikel air) di sepanjang domain. Secara umum, persamaan diferensial sederhana yang bisa digunakan adalah: −𝑘 𝑑2𝑢 𝑑𝑥2 = 𝑓(𝑥) Di sini: • 𝑘 adalah koefisien difusi, yang menggambarkan karakteristik medium (air dalam chamber). • 𝑢(𝑥) adalah nilai solusi yang ingin kita cari di setiap titik 𝑥 dalam domain. • 𝑓(𝑥) adalah gaya eksternal yang diaplikasikan ke sistem (di sini berupa gelombang dengan amplitudo tertentu). 2. Diskritisasi Domain (Mesh) Untuk menyelesaikan persamaan ini dengan metode elemen hingga, kita perlu membagi domain (panjang chamber) menjadi elemen-elemen kecil. Setiap elemen memiliki dua node, yang merupakan titik di mana kita akan menghitung nilai solusi 𝑢(𝑥). • Misalnya, jika panjang domain 𝐿 = 1.0 meter, kita bisa membaginya menjadi beberapa elemen, seperti pada konfigurasi: o 1 turbin, 2 chamber: 4 elemen o 2 turbin, 1 chamber: 2 elemen Pembagian ini menghasilkan mesh yang nantinya akan digunakan dalam proses perakitan matriks kekakuan. 3. Pembentukan Matriks Kekakuan dan Vektor Beban Setelah domain dibagi menjadi elemen-elemen, kita membuat matriks kekakuan lokal untuk setiap elemen dan menyusun vektor beban yang mewakili gaya yang bekerja pada elemen tersebut. • Untuk setiap elemen, matriks kekakuan lokalnya adalah: 𝐾𝑒 = 𝑘 ℎ [ 1 −1 −1 1 ] Di sini, ℎ adalah panjang setiap elemen, dan 𝑘 adalah koefisien difusi. • Untuk vektor beban, kita mempertimbangkan gaya sinusoidal akibat gelombang: 𝑓(𝑥) = 𝐴sin(𝜔𝑥) o A adalah amplitudo gelombang, dan ω adalah frekuensi sudut gelombang. o Gaya ini kemudian dikonversi menjadi vektor beban lokal untuk setiap elemen, yang akan dikombinasikan ke dalam vektor beban global. 4. Perakitan (Assembly) Matriks Kekakuan dan Vektor Beban Global Setelah menentukan matriks kekakuan dan vektor beban untuk setiap elemen, kita menyusunnya dalam matriks kekakuan global dan vektor beban global untuk keseluruhan domain. Proses perakitan ini melibatkan menempatkan setiap matriks elemen ke dalam matriks global pada posisi yang sesuai. Dalam kode, ini dilakukan melalui loop yang iterasi tiap elemen, menambahkan kekakuan elemen ke dalam matriks kekakuan global di indeks yang sesuai. 5. Penerapan Kondisi Batas Dalam masalah ini, kita menerapkan kondisi batas Dirichlet di kedua ujung domain, yang berarti nilai solusi pada kedua ujung domain ditetapkan ke nilai tertentu, dalam hal ini nol: 𝑢(0) = 0 dan 𝑢(𝐿) = 0 Ini dicapai dalam kode dengan mengubah matriks kekakuan dan vektor beban pada indeks kondisi batas agar sesuai dengan kondisi yang ditetapkan. 6. Menyelesaikan Sistem Persamaan Linier Setelah menyusun matriks kekakuan global 𝐾 dan vektor beban 𝐹, kita menyelesaikan persamaan linier: 𝐾𝑈 = 𝐹 untuk mendapatkan vektor 𝑈, yang berisi nilai solusi di setiap node dalam domain. 7. Implementasi dalam Kode Python Pada tahap ini, kita mengimplementasikan langkah-langkah di atas dalam kode Python. Berikut ini adalah cara fungsi fem_simulation_wave di kode kamu melaksanakan langkah-langkah ini: • Parameter Gelombang: A, omega, dan boundary_conditions ditetapkan berdasarkan konfigurasi. • Inisialisasi Matriks Kekakuan dan Vektor Beban: K dan F diinisialisasi sebagai matriks dan vektor kosong. • Perakitan Matriks Kekakuan dan Vektor Beban: Loop for pada elemen menghitung matriks kekakuan lokal K_e dan gaya sinusoidal untuk vektor beban F_e, kemudian menambahkannya ke matriks global K dan vektor F. • Penerapan Kondisi Batas: Matriks dan vektor disesuaikan berdasarkan boundary_conditions. • Penyelesaian Sistem Persamaan: Menggunakan np.linalg.solve(K, F) untuk mendapatkan solusi nodal 𝑈. 8. Plot Hasil untuk Dua Konfigurasi Setelah mendapatkan solusi 𝑈 untuk setiap konfigurasi, kita membuat plot yang menampilkan distribusi solusi di sepanjang domain untuk dua konfigurasi berbeda. Luthfi: baik, bisakah kamu sajikan kode phyton untuk kasus ini? ChatGPT: Tentu, berikut adalah kode Python lengkap untuk simulasi Finite Element Method (FEM) pada sistem Oscillating Water Column (OWC) dengan dua konfigurasi: 1 Turbin, 2 Chamber dan 2 Turbin, 1 Chamber. import numpy as np import matplotlib.pyplot as plt def fem_simulation_wave(n_elements, k, A, omega, boundary_conditions): """ Fungsi untuk simulasi FEM pada OWC dengan kondisi gelombang normal Args: - n_elements (int): Jumlah elemen (sesuai dengan chamber atau turbin) - k (float): Koefisien difusi - A (float): Amplitudo gelombang - omega (float): Frekuensi sudut gelombang - boundary_conditions (dict): Kondisi batas, format {index: value} Returns: - U (np.array): Solusi nodal - x (np.array): Posisi node """ L = 1.0 # Panjang domain (asumsi 1 untuk simplifikasi) h = L / n_elements # Panjang setiap elemen n_nodes = n_elements + 1 # Jumlah node
- Matriks kekakuan dan vektor beban
K = np.zeros((n_nodes, n_nodes)) F = np.zeros(n_nodes)
- Matriks elemen kekakuan
K_e = (k / h) * np.array([[1, -1], [-1, 1]])
- Proses perakitan (assembly)
for e in range(n_elements): n1, n2 = e, e + 1
- Tambahkan kekakuan elemen ke dalam matriks kekakuan global
K[n1, n1] += K_e[0, 0] K[n1, n2] += K_e[0, 1] K[n2, n1] += K_e[1, 0] K[n2, n2] += K_e[1, 1]
- Hitung sumber term sinusoidal untuk gelombang normal
x_mid = (n1 * h + n2 * h) / 2 # Posisi tengah elemen f_mid = A * np.sin(omega * x_mid)
- Vektor beban elemen
F_e = f_mid * h / 2 * np.array([1, 1])
- Tambahkan beban elemen ke dalam vektor beban global
F[n1] += F_e[0] F[n2] += F_e[1]
- Terapkan kondisi batas
for index, value in boundary_conditions.items(): K[index, :] = 0 K[index, index] = 1 F[index] = value
- Selesaikan sistem persamaan linier KU = F
U = np.linalg.solve(K, F) return U, np.linspace(0, L, n_nodes)
- Parameter gelombang normal
A = 1.0 # Amplitudo gelombang omega = 2 * np.pi # Frekuensi sudut (sesuai dengan periode 1 detik)
- Konfigurasi 1: Satu Turbin, Dua Chamber
n_elements_1 = 4 k_1 = 1.0 boundary_conditions_1 = {0: 0, n_elements_1: 0} # Dirichlet di kedua ujung U_1, x_1 = fem_simulation_wave(n_elements_1, k_1, A, omega, boundary_conditions_1)
- Konfigurasi 2: Dua Turbin, Satu Chamber
n_elements_2 = 2 k_2 = 1.0 boundary_conditions_2 = {0: 0, n_elements_2: 0} # Dirichlet di kedua ujung U_2, x_2 = fem_simulation_wave(n_elements_2, k_2, A, omega, boundary_conditions_2)
- Plot hasil
plt.figure(figsize=(10, 5))
- Plot konfigurasi 1
plt.subplot(2, 1, 1) plt.plot(x_1, U_1, marker='o', linestyle='-', color='b') plt.title("Konfigurasi 1: 1 Turbin, 2 Chamber (Gelombang Normal)") plt.xlabel("Posisi x (m)") plt.ylabel("Nilai u(x)") plt.grid(True)
- Plot konfigurasi 2
plt.subplot(2, 1, 2) plt.plot(x_2, U_2, marker='o', linestyle='-', color='r') plt.title("Konfigurasi 2: 2 Turbin, 1 Chamber (Gelombang Normal)") plt.xlabel("Posisi x (m)") plt.ylabel("Nilai u(x)") plt.grid(True) plt.tight_layout() plt.show() Penjelasan Kode • Parameter Gelombang: A dan omega adalah parameter untuk simulasi gelombang normal. • Konfigurasi 1 dan 2: Konfigurasi pertama menggunakan 4 elemen (1 turbin, 2 chamber) dan konfigurasi kedua menggunakan 2 elemen (2 turbin, 1 chamber). • Fungsi fem_simulation_wave: Ini adalah fungsi utama yang membangun matriks kekakuan, vektor beban, dan menerapkan kondisi batas untuk menyelesaikan sistem persamaan FEM. • Plotting: Setelah solusi diperoleh untuk kedua konfigurasi, hasilnya di-plot untuk visualisasi distribusi nilai 𝑢(𝑥) di sepanjang domain. Luthfi: berikan saya grafik yang menjadi output dari code tersebut ChatGPT: Inilah grafik hasil output dari kode Python yang diberikan. Grafik di atas menunjukkan distribusi nilai 𝑢(𝑥) untuk kedua konfigurasi: 1. Konfigurasi 1 (1 Turbin, 2 Chamber): Grafik menunjukkan variasi nilai 𝑢(𝑥) di sepanjang posisi 𝑥 dalam domain. Distribusi ini mengikuti pola sinusoidal yang diberikan oleh sumber gaya gelombang. 2. Konfigurasi 2 (2 Turbin, 1 Chamber): Grafik menunjukkan bahwa nilai 𝑢(𝑥) tetap konstan di sepanjang domain, mencerminkan perbedaan dalam konfigurasi elemen dan pengaruhnya terhadap solusi. Luthfi: berarti seperti apa algoritma dalam implementasi FEM menggunakan PDE yang didiskritisasi pada kasus OWC dengan 2 konfigurasi? ChatGPT: Baik, berikut adalah algoritma implementasi Finite Element Method (FEM) menggunakan persamaan diferensial parsial (PDE) yang didiskritisasi pada kasus Oscillating Water Column (OWC) dengan dua konfigurasi. Algoritma ini mengikuti langkah-langkah diskritisasi dan solusi yang dilakukan dalam kode, namun akan dijabarkan secara lebih sistematis: Langkah-langkah Algoritma FEM untuk Kasus OWC dengan 2 Konfigurasi 1. Definisikan Parameter dan Kondisi Batas o Tetapkan parameter sistem seperti: ▪ Panjang domain 𝐿 (misalnya, 𝐿 = 1 meter), ▪ Koefisien difusi 𝑘, ▪ Amplitudo gelombang 𝐴, ▪ Frekuensi sudut gelombang 𝜔. o Tentukan jumlah elemen untuk masing-masing konfigurasi: ▪ Konfigurasi 1: 4 elemen (1 Turbin, 2 Chamber). ▪ Konfigurasi 2: 2 elemen (2 Turbin, 1 Chamber). o Tetapkan kondisi batas Dirichlet di kedua ujung domain, di mana nilai 𝑢(𝑥) = 0 pada 𝑥 = 0 dan 𝑥 = 𝐿. 2. Diskritisasi Domain o Bagi domain menjadi elemen-elemen kecil dengan panjang elemen ℎ = 𝐿 𝑛elements . o Hitung jumlah node 𝑛nodes = 𝑛elements + 1. 3. Inisialisasi Matriks Kekakuan dan Vektor Beban o Inisialisasi matriks kekakuan global 𝐾 berukuran 𝑛nodes × 𝑛nodes dengan nilai nol. o Inisialisasi vektor beban global 𝐹 dengan ukuran 𝑛nodes, yang juga berisi nilai nol. 4. Bentuk Matriks Kekakuan Lokal untuk Setiap Elemen o Matriks kekakuan lokal untuk setiap elemen dihitung sebagai: 𝐾𝑒 = 𝑘 ℎ [ 1 −1 −1 1 ] o Di sini, 𝑘 adalah koefisien difusi dan ℎ adalah panjang elemen. 5. Perakitan (Assembly) Matriks Kekakuan Global dan Vektor Beban Global o Untuk setiap elemen 𝑒: ▪ Identifikasi dua node pada elemen: 𝑛1 dan 𝑛2. ▪ Tambahkan elemen 𝐾𝑒 ke matriks kekakuan global 𝐾 pada posisi yang sesuai berdasarkan node 𝑛1 dan 𝑛2. ▪ Hitung gaya sinusoidal yang bekerja pada elemen tengah (sebagai gaya dari gelombang): 𝑓mid = 𝐴sin(𝜔 ⋅ 𝑥mid) di mana 𝑥mid adalah posisi tengah elemen. ▪ Bentuk vektor beban lokal 𝐹𝑒 sebagai: 𝐹𝑒 = 𝑓mid ⋅ ℎ 2 [1 1] ▪ Tambahkan elemen 𝐹𝑒 ke vektor beban global 𝐹 pada posisi yang sesuai. 6. Terapkan Kondisi Batas o Modifikasi matriks kekakuan 𝐾 dan vektor beban 𝐹 sesuai dengan kondisi batas Dirichlet: ▪ Atur nilai 𝐾 dan 𝐹 pada indeks-indeks yang berkaitan dengan kondisi batas (di ujung domain). ▪ Setel nilai diagonal di indeks kondisi batas menjadi 1, dan setel elemen lainnya pada baris tersebut ke 0 untuk mengunci nilai batas. 7. Selesaikan Sistem Persamaan Linier o Setelah matriks kekakuan global 𝐾 dan vektor beban global 𝐹 selesai dirakit, selesaikan sistem persamaan linier: 𝐾 ⋅ 𝑈 = 𝐹 untuk mendapatkan vektor solusi 𝑈 yang berisi nilai 𝑢(𝑥) di setiap node. 8. Visualisasi Hasil o Setelah memperoleh solusi 𝑈 untuk setiap konfigurasi, buat grafik distribusi nilai 𝑢(𝑥) di sepanjang domain untuk kedua konfigurasi. o Bandingkan hasil antara konfigurasi 1 Turbin, 2 Chamber dan 2 Turbin, 1 Chamber untuk melihat perbedaan efek dari konfigurasi tersebut terhadap distribusi nilai solusi. Ringkasan Algoritma Secara ringkas, algoritma ini dapat disusun sebagai berikut: 1. Inisialisasi parameter sistem dan kondisi batas. 2. Diskritisasi domain menjadi elemen-elemen kecil. 3. Bentuk matriks kekakuan lokal dan vektor beban lokal untuk setiap elemen. 4. Perakitan matriks kekakuan dan vektor beban global dari elemen-elemen. 5. Terapkan kondisi batas Dirichlet. 6. Selesaikan sistem persamaan linier untuk mendapatkan solusi. 7. Plot hasil untuk visualisasi distribusi nilai 𝑢(𝑥) dalam setiap konfigurasi. Algoritma ini adalah kerangka dasar untuk menyelesaikan masalah PDE menggunakan metode FEM, khususnya pada kasus OWC dengan dua konfigurasi berbeda. Luthfi: ketika step-step pada case dikaitkan dengan framework DAI5, akan menjadi? ChatGPT: Mengaitkan algoritma kasus Finite Element Method (FEM) untuk Oscillating Water Column (OWC) ini dengan framework DAI5 akan membantu memberikan struktur berpikir yang lebih sistematis dan terarah. Berikut adalah bagaimana algoritma ini dapat diterjemahkan ke dalam langkah-langkah DAI5: 1. Intention (Tujuan) • Tujuan: Menyimulasikan dan memahami pengaruh konfigurasi yang berbeda pada geometri OWC terhadap distribusi tekanan atau kecepatan air di dalam chamber menggunakan metode FEM. • Pertanyaan yang ingin dijawab: Bagaimana dua konfigurasi turbin dan chamber pada OWC memengaruhi hasil distribusi nilai 𝑢(𝑥) di sepanjang domain? Hasil ini penting untuk mengevaluasi efisiensi dan optimalitas setiap konfigurasi dalam menangkap energi gelombang. • Spesifikasi Output: Grafik distribusi nilai 𝑢(𝑥) untuk dua konfigurasi (1 turbin 2 chamber dan 2 turbin 1 chamber), yang menunjukkan perbedaan pola hasil simulasi FEM. 2. Initial Thinking (Pemikiran Awal) • Pemahaman Sistem: Sistem OWC ini dapat dimodelkan sebagai sistem gelombang yang mengalami difusi di dalam chamber, dengan konfigurasi turbin dan chamber yang berbeda untuk setiap simulasi. • Persamaan yang Digunakan: Dalam konteks FEM, kita akan menggunakan persamaan diferensial linier sederhana yang menunjukkan hubungan antara koefisien difusi, gaya eksternal (gelombang sinusoidal), dan nilai solusi 𝑢(𝑥) pada setiap node. • Diskritisasi Domain: Bagi domain menjadi elemen-elemen kecil, di mana setiap elemen memiliki dua node. Pilihan jumlah elemen ditentukan oleh konfigurasi yang ingin diuji: o Konfigurasi 1: 4 elemen untuk 1 turbin dan 2 chamber. o Konfigurasi 2: 2 elemen untuk 2 turbin dan 1 chamber. • Kondisi Batas: Terapkan kondisi batas Dirichlet di kedua ujung domain untuk menetapkan nilai 𝑢(𝑥) = 0 pada titik awal dan akhir. 3. Idealization (Idealasi) • Ideal Model: Untuk mencapai simulasi yang efisien dan akurat, kita perlu membuat asumsi tertentu: o Sederhanakan domain menjadi panjang 1 meter untuk memudahkan perhitungan dan menjaga konsistensi antar-konfigurasi. o Model Persamaan Linier untuk difusi, dengan anggapan bahwa interaksi antara chamber dan turbin dapat direpresentasikan oleh koefisien difusi 𝑘. o Pembentukan Matriks Kekakuan dan Vektor Beban: Matriks kekakuan lokal disederhanakan menggunakan matriks elemen standar untuk metode elemen hingga satu dimensi, dan gaya eksternal dihitung sebagai sinyal sinusoidal. • Strategi Solusi: o Perakitan Matriks Kekakuan dan Vektor Beban Global: Setiap elemen memiliki kontribusi kekakuan dan beban yang diakumulasi dalam matriks kekakuan dan vektor beban global. o Pemecahan Sistem Persamaan Linier: Setelah perakitan matriks dan penerapan kondisi batas, selesaikan sistem persamaan 𝐾 ⋅ 𝑈 = 𝐹 untuk mendapatkan distribusi nilai 𝑢(𝑥). • Hasil Ideal yang Diinginkan: Distribusi nilai 𝑢(𝑥) yang berbeda untuk setiap konfigurasi, menunjukkan variasi tekanan atau kecepatan partikel air di sepanjang domain, sesuai dengan interaksi antara turbin dan chamber dalam setiap konfigurasi. 4. Instruction Set (Set Instruksi) Algoritma berikut menjabarkan setiap langkah yang perlu diambil untuk mengimplementasikan simulasi FEM untuk dua konfigurasi pada sistem OWC: 1. Definisikan Parameter Sistem: Tetapkan panjang domain 𝐿, koefisien difusi 𝑘, amplitudo gelombang 𝐴, frekuensi sudut 𝜔, dan kondisi batas. 2. Diskritisasi Domain: o Bagi domain menjadi elemen-elemen kecil. o Hitung panjang setiap elemen ℎ = 𝐿/𝑛elements. o Tentukan jumlah node berdasarkan jumlah elemen (node = elemen + 1). 3. Bentuk Matriks Kekakuan Lokal dan Vektor Beban: o Hitung matriks kekakuan lokal 𝐾𝑒 untuk setiap elemen. o Hitung gaya sinusoidal pada posisi tengah elemen untuk membentuk vektor beban lokal 𝐹𝑒. 4. Perakitan Matriks Kekakuan Global dan Vektor Beban Global: o Gabungkan kontribusi dari setiap elemen ke dalam matriks kekakuan global 𝐾 dan vektor beban global 𝐹. 5. Terapkan Kondisi Batas: o Modifikasi matriks kekakuan 𝐾 dan vektor beban 𝐹 sesuai dengan kondisi batas Dirichlet di ujung domain. 6. Penyelesaian Sistem Persamaan Linier: o Gunakan solusi numerik untuk menyelesaikan 𝐾 ⋅ 𝑈 = 𝐹 sehingga mendapatkan nilai 𝑢(𝑥) di setiap node. 7. Visualisasi Hasil: o Buat grafik yang menunjukkan distribusi nilai 𝑢(𝑥) di sepanjang domain untuk setiap konfigurasi. o Bandingkan grafik hasil dari konfigurasi 1 (1 Turbin, 2 Chamber) dan konfigurasi 2 (2 Turbin, 1 Chamber). Dengan mengikuti framework DAI5, kita dapat memahami bagaimana setiap tahap berpikir dalam mengembangkan algoritma simulasi ini berjalan dari pemahaman tujuan, pemikiran awal, idealisasi sistem, hingga langkah-langkah instruksi yang jelas untuk mencapai hasil akhir.