17 pergerakan solut. Oleh karena itu, faktor yang berpengaruh pada pergerakan solut
pada kolom ini adalah dispersi dan juga unsur-unsur pada formula 6.
4.2. Algoritma Formula CDE dan Turunannya dalam simulasi
Algoritma yang digunakan untuk menggambarkan pergerakan solut menggunakan penurunan formula CDE 1 menjadi formula 6. Formula ke 6
tersebut lalu dikonversi ke dalam c++ supaya memudahkan penghitungan hasil konsentrasi per waktu menjadi:
1. int main
2. {
3 ofstream outFilenil_kon.txt;
4. srandtime0;
5. double massa = 30;
6. double porositas = 0.33;
7. const double pi = 3.14159265;
8. double koef_dispersi= 0.13;
9. double waktu ;
10. double panjang = 10;dalam cm
11. double kec = 0.5;dalam cms
12. double konsentrasi;
13. double a;
14. double b;
15. forwaktu = 1;waktu 500;waktu +=1
16 {
17. a = massaporositas sqrt4pikoef_dispersiwaktu;
18. b = -1panjang - kec waktu + nor_with_std_and_mean
19. panjang - kec waktu + nor_with_std_and_mean 4
20. koef_dispersi waktu;
21. 22.
konsentrasi = powa,b; 23.
cout waktu ,konsentrasi endl; 24.
outFilewaktu ,konsentrasiendl; 25.
} 26.
return 0; 27.
}
Kode pada baris 17 sampai 22 adalah algoritma utama dalam penghitungan konsentrasi solut terhadap waktu.
Dalam algoritma tersebut dilakukan pengulangan terhadap waktu sebanyak 500 kali dan diulang tiap 1 kali satuan waktu. Di dalam pengulangan itu
dimasukkan formula 2 ke dalam dua bagian yaitu bagian a
Dt m
4
dan
bagian b Dt
R t
v L
4
2
, lalu konsentrasi solut didapatkan dengan fungsi
18
pow yaitu fungsi exponensial
b
a exp
. Sehingga didapatkan hasil konsentrasi solut terhadap waktu.
4.3. Algoritma Langkah Acak dalam Simulasi Pergerakan Solut
Pendekatan langkah acak dimasukkan ke dalam formula di atas sebagai R. Nilai R dicari dengan menggunakan pendekatan transformasi Box Muller
untuk mendapatkan nilai acak dengan distribusi normal. Transformasi ini memberikan cara untuk mentransformasi nilai acak yang terdistribusi seragam
menjadi kumpulan baru berupa nilai acak dengan distribusi normal gauss. Bentuk standar transformasi Box Muller yaitu:
y1 = sqrt - 2 lnx1 cos 2 pi x2 y2 = sqrt - 2 lnx1 sin 2 pi x2
Akan tetapi bentuk ini mempunyai masalah yaitu hasil programnya lambat sehingga akan terjadi masalah yang serius jika kita ingin menghasilkan jutaan
nilai acak. Bentuk polar dari tranformasi Box-Muller hasilnya lebih cepat dan lebih kuat dari pada bentuk transformasi di atas. Deskripsi algoritmanya dalam
bahasa c++ adalah sebagai berikut:
1. float x1, x2, w, R1, R2; 2. do {
3. x1 = 2.0 ranf - 1.0; 4. x2 = 2.0 ranf - 1.0;
5. w = x1 x1 + x2 x2; 6. } while w = 1.0 ;
7. w = sqrt -2.0 ln w w ; 8. R1 = x1 w;
9. R2 = x2 w;
dimana ranf adalah fungsi nilai acak yang dihasilkan secara seragam terdistribusi antara 0
– 1. Nilai R1 atau R2 inilah yang digunakan untuk formula 2 kedua nilai tersebut bisa digunakan salah satunya dan juga sebaliknya tapi
yang digunakan hanya salah satunya saja. Dalam kerangka langkah acak random walk pada simulasi, perpindahan
solut diperlihatkan sebagai partikel-partikel yang melakukan langkah bertahap atau transisi melalui suatu formasi melalui jalur-jalur yang berbeda dengan
kecepatan yang terus berubah. Kecepatan yang berubah ini dalam simulasi terjadi ketika partikel-partikel memasuki wilayah yang baru yang mempunyai faktor
19 langkah acak yang berbeda pula. Langkah acak pada pergerakan solut terjadi
disebabkan perbedaan karakter struktur dari media berpori.
4.4. Algoritma Pergerakan Partikel