• Tidak ada hasil yang ditemukan

Proses Inisialisasi …

Bab III Implementasi Simulasi MD

3.2. Proses Inisialisasi …

Untuk lebih mempermudah pengorganisasian variabel serta data yang ada, diperlukan suatu tipe data yang baik. Setiap partikel memiliki tiga properti arah yaitu X, Y, dan Z. Pada setiap arah tersebut terdapat tiga properti lagi yaitu Pos untuk posisi, Velo untuk kecepatan, dan Force untuk gaya. Pendeklarasiannya pada program adalah sebagai berikut :

TPos = record Pos : Real; Velo : Real; Force : Real; End; TPart = record X,Y,Z : TPos; End;

Seperti telah disebutkan sebelumnya bahwa bagian ini terdiri dari tiga sub bagian, berikut penjelasan mengenai sub-sub bagian tersebut. Selanjutnya proses inisialisasi pada program baru bisa dilakukan.

3.2.1. Inisalisasi Parameter

Ada sejumlah parameter utama yang digunakan pada program ini yang merupakan bentuk transformasi dari parameter simulasi MD yang sebenarnya. Parameter-parameter tersebut adalah seperti berikut dibawah ini :

1. NPart : jumlah partikel dalam simulasi (kelipatan 4) 2. Side : panjang sisi dari kubus dalam satuan sigma

3. TRef : nilai penurunan temperatur

20

5. H : langkah waktu dasar

6. IRep : periode perbaikan kecepatan

7. IStop : kondisi akhir perbaikan kecepatan

8. TimeMX : jumlah iterasi MD 9. ISeed : bibit nilai acak semu

Selain parameter-parameter diatas ada beberapa parameter lain yang merupakan kontrol atau syarat agar hasil simulasi MD didapat dengan akurat.Parameter kontrol ini diberikan nilai awal yang mencerminkan karakteristik aom Argon, yang merupakan atom yang digunakan penulis sebgai contoh untuk penulisan ini. Parameter-parameter tersebut adalah :

A := Side/4; SideH := Side/2; HSQ := SQR(H); HSQ2 := HSQ/2; NPartM := Npart-1; RCOffS := SQR(RCOff); TScale := 16/(NPart-1); VAVER := 1.13*SQRT(TRef/24);

Variable A adalah sisi dibagi 4 atau seperempat sisi, SideH adalah sisi dibagi 2 atau setengah sisi, HSQ adalah kuadrat dari waktu langkah, HSQ2 adalah setengah kuadrat waktu langkah, NPartM adalah jumlah partikel yang diamati dikurang satu, RCoffs adalah kuadrat dari nilai pemotongan energi potensial, TScale adalah waktu sebelum perhitungan yang nilai sesungguhnya akan didapat jika dikalikan dengan energi kinetik, dan VAVER merupakan variable kontrol untuk mengontrol penurunan suhu pada simulasi ini.

Bentuk pendeklarasian variable-variable pada program selengkapnya tercakup dalam prosedur DefaultVal dan MDSInit yang dapat dilihat pada halaman lampiran. 3.2.2. Inisialisasi Posisi Partikel dengan menggunakan metode Lattice

Langkah berikutnya adalah penyebaran nilai posisi partikel dengan menggunakan metode Lattice. Dengan menggunakan metode tersebut setiap partikel

21 akan tersebar di dalam kotak pembatas secara teratur. Adapun implementasi metode tersebut dalam program seperti terlihat di bawah ini :

var Index,LG,i,j,k : Integer; begin Index := 0; for LG := 0 to 1 do for i := 0 to 3 do for j := 0 to 3 do for k := 0 to 3 do begin Inc(Index); Part[Index].X.Pos := i*A+LG*A*0.5; Part[Index].Y.Pos := j*A+LG*A*0.5; Part[Index].Z.Pos := k*A; end;

Kode program diatas merupakan penyebaran partikel untuk sebagian jumlah partikel dari partikel yang ada. Sedangkan kode program dibawah ini untuk melanjutkan penyebaran partikel berikutnya dengan ukuran kotak pembatas yang masih sama. for LG := 2 to 3 do for i := 0 to 3 do for j := 0 to 3 do for k := 0 to 3 do begin Inc(Index); Part[Index].X.Pos := i*A+(2-LG)*A*0.5; Part[Index].Y.Pos := j*A+(LG-1)*A*0.5; Part[Index].Z.Pos := k*A+A*0.5; end; end;

Pada kode program di atas terlihat bahwa penyebaran nilai posisi setiap partikel tdak akan melebihi panjang sisi kotak pembatas yang telah ditentukan.

Bentuk program selengkapnya tercakup dalam prosedur Lattice yang dapat dilihat pada halaman lampiran.

22 3.2.3. Normalisasi Kecepatan partikel dengan metode Maxwell-Boltzmann

Telah dijelaskan sebelumnya bahwa Maxwell digunakan untuk menormalisasi kecepatan sebelum memulai perhitungan simulasi MD. Cara penulisannya pada program adalah; RandSeed := ISeed; Counter := 1; while (Counter<=NPart) do begin Boltz(Part[Counter].X.Velo,Part[Counter+1].X.Velo); Boltz(Part[Counter].Y.Velo,Part[Counter+1].Y.Velo); Boltz(Part[Counter].Z.Velo,Part[Counter+1].Z.Velo); Inc(Counter,2); end;

RandSeed mempunyai nilai sama dengan ISeed yang merupakan benih untuk merandom dengan psedo random nilai ISeed ini akan menghasilkan nilai yang merupakan karakteristik dari atom argon. Kemudian dengan nilai random yang telah terbentuk, digunakan untuk memberi nilai kecepatan pada setiap posisi. Disini seperti telah dikemukakan bahwa setiap posisi mempunyai 3 elemen yaitu elemen X, Y, dan Z, pemberian nilai kecepatan pada elemen-elemen tersebut dengan memanggil procedure Boltz(velo1,velo2) yang berisi :

procedure Boltz(var Velo1: Real;var Velo2: Real); var S,R, v1,v2 : Real; begin repeat v1 := 2*Random-1; v2 := 2*Random-1; S := SQR(v1)+SQR(v2); until (S<1); R := -2*Ln(S)/S; Velo1 := v1*SQRT(R); Velo2 := v2*SQRT(R); end;

Pada procedure Boltz(velo1,velo2) ini nilai kecepatan pertama dan kedua didapat dari 2 kali random di kurang 1. Variable S merupakan resultan dari kedua

23 kecepatan tersebut. Nilai kecepatan tersebut terus dirandom sampai mendapatkan resultan yang lebih kecil dari 1. Dan setelah mendapatkan nilai resultan yang kurang dari 1 kemudian hitung R, dengan mengalikan ln(S) dengan 2 kemudian dibagi dengan S. Dari hasil yang didapat kembalikan nilai kecepatan didalam procedure Boltz ke procedure Maxwell, dengan kecepatan pertama dikali akar dari R dan kecepatan kedua juga dikali dengan akar dari R.

Setelah mendapatkan kecepatan disetiap posisi dengan procedure Boltz tadi, ubah lagi kecepatannya untuk mendapatkan energi kinetik disetiap arah. Cara penulisannya pada program adalah :

EKIN := 0; SP := 0; for i := 1 to NPart do SP := SP+Part[i].X.Velo; SP := SP/NPart; for i := 1 to NPart do begin Part[i].X.Velo := Part[i].X.Velo-SP; EKIN := EKIN+SQR(Part[i].X.Velo); end;

Pertama kali beri nilai awal energi kinetik sama dengan nol, namun hanya didefinisikan sekali, dan juga beri nilai linier momentum arah X sama dengan nol. Hitung nilai linier momentum arah X dengan menjumlahkan selurah kecepatan pada arah X, kemudian bagi nilai linier momentum tersebut dengan banyaknya jumlah partikel. Ubah nilai kecepatan pada arah X dengan mengurangi kecepatan dengan nilai linier momentum untuk setiap partikel. Dan hitung energi kinetik pada arah X, dengan menjumlahkan energi kinetik dengan kuadrat kecepatan pada arah X disetiap partikel. Hal yang sama juga dilakukan untuk arah Y dan Z untuk mendapatkan energi kinetik keseluruhan.

TS := TScale*EKIN; SC := SQRT(TRef/TS);

Kemudian untuk mendapatkan temperatur sebelum perhitungan adalah dengan mengalikan TScale dengan energi kinetik. Dan untuk mendapatkan skala faktornya adalah dengan mengkuadratkan pengurangan temperatur dibagi temparatur.

24 SC := SC*H; for i := 1 to NPart do begin Part[i].X.Velo := Part[i].X.Velo*SC; Part[i].Y.Velo := Part[i].Y.Velo*SC; Part[i].Z.Velo := Part[i].Z.Velo*SC; end;

Ubah lagi kecepatan disetiap arah dengan mengalikannya dengan skala faktor temperatur untuk semua partikel.

Setelah selesai menormalisasikan kecepatan dengan procedure Maxwell baru disini nilai Clock atau iterasi bertambah.

Dokumen terkait