BAB 3 PERANCANGAN PROGRAM
3.1
Analisa Objek
Bagian berikut membahas keadaan sel, gaya, dan massa pada simulasi serta menggambarkan kasus uji coba yang digunakan. 3.1.1
Fluida fase tunggal dalam D3Q19
Ilustrasi tahap-tahap simulasi pada Bab 2 menunjukkan bagaimana perubahan fungsi distribusi aliran suatu fluida dalam model LBM D3Q19. Namun, simulasi yang akan dilakukan dalam skripsi ini adalah simulasi fluida pada 2 fase yang berbeda (cair dan gas). Pada contoh kasus dalam tulisan ini, simulasi dilakukan pada cairan (misalnya air) dan gas, di mana aliran fluida pada gas diabaikan dalam simulasi. Fase-fase yang berbeda dalam contoh simulasi tulisan ini hanya menggunakan satu lattice yang ditandai pada setiap tipe sel lattice, sebagai berikut : •
Sel Fluida : Sel ini terisi semua oleh fluida.
•
Sel Antara (Interface): Sel ini mengandung kedua fluida dan udara.
•
Sel Gas : Sel ini tidak diabaikan dalam simulasi fluida.
Untuk mencegah gradasi yang lebar dan pencampuran antara gas dan fluida, maka kita perlu membatasi bahwa hanya ada satu lapisan sel antara
yang
menyelubungi
30
sel-sel
fluida
(Gambar
3.1).
31 Massa baru untuk tiap sel antara dihitung setelah tahap tabrakan mengikuti perbedaan massa yang masuk dan keluar dari sel menurut : 19 r r r r r m ( x ) = m ( x ) + ∑ ε I f I ( x + ei ) − ε I f I ( x )
(3.1)
i =1
di mana fI adalah fungsi distribusi yang berlawanan arah dengan fi. Nilai ε menunjukkan tingkat kepenuhan sel (fraction) bersangkutan pada sel antara. Perubahan massa sel antara ini dihitung selama tahap stream. Perpindahan massa antara sel-sel fluida penuh telah dijelaskan di Bab 2, tetapi perpindahan itu tidak berlaku untuk perpindahan massa ke sel antara atau sel gas.
Gambar 3.1 Sel fluida, sel antara, dan sel gas
Disini diasumsikan bahwa fluida memiliki viskositas yang jauh lebih rendah dibandingkan dengan gas yang menyelubunginya. Contohnya udara memiliki viskositas kinematik 1,5x10-5 m2/s sedangkan air memiliki viskositas 9x10-7m2/s. Jadi, fluida memiliki angka Reynolds yang lebih tinggi dibandingkan gas. Asumsi ini diperlukan untuk membuat ulang fungsi distribusi yang diperlukan untuk sel gas yang bertetangga dengan sel antara. Caranya adalah :
32 r r r r f I ( x , t + 1) = f i eq (u B , ρ B ) + f Ieq (u B , ρ B ) − f i ( x , t )
(3.2)
di mana fI adalah fungsi distribusi partikel yang berlawanan arah dengan fungsi distribusi fi. f i eq adalah kesetimbangan lokal dengan kecepatan dari fluida pasa sel antara. Untuk atmosfir ρB adalah 1.
3.1.2
Gravitasi
Gaya luar seperti gaya gravitasi bisa dimasukkan ke dalam LBM lewat beberapa cara (Buick dan Greated, 2000). Cara paling mudah adalah dengan mengubah hasil perhitungan kecepatan pada setiap sel setelah tahap tabrakan. Sehingga kesetimbangan lokal dihitung dengan r kecepatan yang baru u * yang didapat dengan :
r r r u* = u + ω F
(3.3)
r di mana F adalah gaya luar, dan ω adalah waktu relaksasi LBM.
3.1.3
Kondisi Sel Batas
Kondisi umum sel batas untuk simulasi LBM adalah dinding tanpa slip, yang berarti fluida yang berada di dekat sel batas hampir tidak bergerak sama sekali. Namun, pada penulisan ini akan ditampilkan juga sel batas yang slip bebas. Penerapan untuk kondisi pembatas ini perlu dilakukan pada tahap aliran. Pada sel batas tanpa slip, fungsi distribusi langsung dipantulkan ke arah yang berlawanan, sedangkan untuk sel batas yang slip bebas, fungsi
33 distribusi yang datang dipantulkan menurut arah normal dari sel batas. Lihat gambar dibawah ini :
Gambar 3.2 Sel batas tanpa slip (a). Sel batas slip bebas (b)
3.1.4
Kasus Breaking Dam
Penelitian ini akan menggunakan salah satu kasus umum fluida yaitu breaking dam. Pada breaking dam, fluida dalam hal ini air, diisikan pada suatu tempat yang terpisahkan sekat dari bak yang lebih besar. Kemudian sekat tersebut secara cepat dilepas sehingga fluida yang semula diam kini mulai bergerak jatuh menuju ke bak yang kosong oleh gaya gravitasi. Lihat gambar 3.3.
34
Gambar 3.3 Foto peragaan kasus breaking dam dalam dunia nyata pada sela waktu tertentu
3.1.5
Kasus Tetesan Cairan
Pada contoh kasus ini, fluida dikondisikan melayang di udara dengan bentuk seperti bola pada inisialisasi awal. Kemudian karena gaya gravitasi, bola fluida akan jatuh dan menyebar karena terhalang lantai pembatas. Fluida akan terus bergerak menyebar sampai memenuhi lantai (Gambar 3.4).
Gambar 3.4 Hasil simulasi tetesan cairan oleh Nils Thűrey
35 3.2
Perancangan Program Simulasi
Bagian ini membahas penggunaan alat bantu dalam perancangan program, dan perancangan antar-muka program. 3.2.1
Use Case Diagram
Sistem Simulasi Fluida Menginput Informasi Kontainer
Memililh Tampilan Fluida
User
Memilih Status Awal Fluida
Menginput Parameter Simulasi
Memulai / Menghentikan Simulasi
Gambar 3.5 Use Case diagram sistem simulasi fluida
Tabel 3.1 Deskripsi Use Case sistem simulasi fluida No. 1
Nama Use Case Menginput informasi kontainer
2
Memilih tampilan fluida
3
Memilih status awal fluida
Deskripsi Mengisi ukuran fluida yang akan disimulasi, memilih batasan, dan menentukan visibilitas. Memilih bentuk tampilan fluida yang akan disimulasi apakah flat atau dengan wire. Memilih status awal fluida sebelum disimulasi apakah dam atau drop.
Aktor User
User User
36 4
Menginput parameter simulasi
5
Memulai / menghentikan simulasi
3.2.2
Mengisi data parameter simulasi fluida yaitu lamanya durasi simulasi, besarnya gravitasi, viskositas dan tekanan luncur fluida. Menjalankan/menghentikan simulasi.
User
User
Struktur Menu
Gambar 3.6 Struktur menu program
3.2.3
Rancangan Layar
Rancangan program skripsi ini berbasiskan dialog windows di mana rincian komponen layar aplikasi adalah sebagai berikut : -
Judul : yang menunjukkan nama aplikasi dan tombol untuk pengaturan window di sebelah kanan. User dibatasi hanya dapat minimize dan close window.
-
Menu : yang terdiri dari menu File dan Help.
-
viewport 3D : menampilkan hasil simulasi dan navigasi kamera.
-
Control Panel : berisi semua parameter. Bagian ini tidak dapat diakses selama simulasi berlangsung.
37 -
Time Slider : memberikan informasi posisi waktu simulasi dari total waktu yang diisi pengguna.
-
Tombol Start dan Adjust : Tombol Start berfungsi untuk memulai simulasi. Tombol Start akan berubah menjadi tombol Stop pada saat simulasi berlangsung. Tombol Stop berfungsi untuk menghentikan simulasi secara sementara. Tombol Adjust hanya aktif selama simulasi sedang dihentikan sementara.
Gambar 3.7 Rancangan layar program
39 3.4
Alur Program dan Pseudocode Simulasi Bagian ini memberikan gambaran alur program dan pseudocode simulasi. 3.3.1
Alur Program Utama
Gambar 3.9 Alur program utama (kiri), dan alur proses simulasi (kanan)
40 3.3.2
Pseudocode Berikut adalah algoritma / pseudocodes yang digunakan untuk simulasi fluida pada tiap sel D3Q19. // Inisialisasi lattice ke memory cells = InitLattice(); // Inisialisasi keadaan sel initCellState(cells, statetype); // Breaking dam atau tetesan cairan // Mulai simulasi for s = 0 to duration { // Tahap Aliran dari grid lain for i = cells.begin() to cells.end() { Stream (i); If( i = interface_cell) getDeltaMass(i); } // Gaya luar AddGravity(cells); // Tahap tabrakan for i = cells.begin() to cells.end() { calculatedensity(ro); calculatevelocity( ux , uy , uz ); // Melakukan perhitungan tabrakan Collision (i); UpdateFraction (i); // Simpan sel antara yang penuh atau kosong If( i = _FULLINTERFACE) Addtolist( i,fulllist); If( i = _EMPTYINTERFACE) Addtolist( i, emptylist); } // Merubah flag, transfer masa serta fungsi distribusi Processfullinterface(fulllist); Processemptyinterface(emptylist); // Selesai untuk satu langkah waktu, tukar grid SwitchLattice(cells); }
40 3.3.2
Pseudocode
Berikut adalah algoritma / pseudocodes yang digunakan untuk simulasi fluida pada tiap sel D3Q19. // Inisialisasi lattice ke memory cells = InitLattice(); // Inisialisasi keadaan sel initCellState(cells, statetype); // Breaking dam atau tetesan cairan // Mulai simulasi for s = 0 to duration { // Tahap Aliran dari grid lain for i = cells.begin() to cells.end() { Stream (i); If( i = interface_cell) getDeltaMass(i); } // Gaya luar AddGravity(cells); // Tahap tabrakan for i = cells.begin() to cells.end() { calculatedensity(ro); calculatevelocity( ux , uy , uz ); // Melakukan perhitungan tabrakan Collision (i); UpdateFraction (i); // Simpan sel antara yang penuh atau kosong If( i = _FULLINTERFACE) Addtolist( i,fulllist); If( i = _EMPTYINTERFACE) Addtolist( i, emptylist); } // Merubah flag, transfer masa serta fungsi distribusi Processfullinterface(fulllist); Processemptyinterface(emptylist); // Selesai untuk satu langkah waktu, tukar grid SwitchLattice(cells); }