|
|
Line 28: |
Line 28: |
| | | |
| ==kasus distribusi tekanan pada geometri Oscillating Water Coloumn untuk 2 konfigurasi, 1 chamber 2 turbine dan 2 chamber 1 turbine== | | ==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.
| |
| | | |
| [[File:Carbon(3).png|500px|center]] | | [[File:Carbon(3).png|500px|center]] |
| [[File:Output(1).png|600px|center]] | | [[File:Output(1).png|600px|center]] |