Hamiltonian uk ladu Dynamika molekularna - gaz van der Waalsa Sk lada siȩ z N atomów u, oddzia luj acych parami miȩdzy sob a oraz ze ściankami sferycznego naczynia. Oddzia lywania opisuje potencja l Lennarda- Jonesa. H = 2m N p 2 i + V LJ + V S () i= gdzie p i - pȩdy, m - masy atomów u, a potencja l s a zadane wzorami: V LJ = N i= j<i [ ε ( R 0 ) 2 2( R ] 0 ) 6 r ij r ij { V S 0 if ri < L = 2 f(r i L) 2 if r i L gdzie r ij to odleg lość pomiȩdzy atomami i i j: r ij = r ij = r j r i = (x j x i ) 2 + (y j y i ) 2 + (z j z i ) 2, r i po lożenie atomu i, f - wspó lczynnik elastyczności ścianki, L - promień naczynia, ε - g lȩbokość potencja lu LJ, R 0 - po lożenie minimum potencja lu, czyli odleg lość miȩdzy atomami, dla której potencja l jest minimalny i wynosi ε. Ca lkowita si la, F i, dzia laj aca na atom i: gdzie F ij F i = N j=,j i (2) F LJ ij + F S i (3) = 2ε r [ ij rij 2 ( R 0 ) 2 ( R ] 0 ) 6 r ij r ij zaś si la pochodz aca od ścianek (dla r i L): 2 Parametry W symulacjach przyjmujemy: - m = 40 u, (4) F i = f r i r i (L r i ) (5)
- R 0 = 0.38 nm, - ε = kj mol, - f = 0 4 kj mol nm 2 - k B = 0.0083 kj mol K - sta la Boltzmanna Gȩstość pocz atkowa: /R 3 0 atom/nm 3. 3 Warunki pocz atkowe Po lożenia Pocz atkowo atomy rozstawiamy w wȩz lach prostej sieci krystalicznej o sta lej a. Budujemy sześcienny kryszta l o d lugości krawȩdzi b. Promień sfery (czyli naszego sferycznego naczynia z em) ustalamy na L. Środek uk ladu wspó lrzeȩdnych umieszczamy w środku sfery (przydatne ze wzglȩdów praktycznych). Prȩdkości Każd a sk ladow a prȩdkości dla każdego atomu losujemy z rozk ladu Maxwella o danej temperaturze T - średnia energia kinetyczna przypadaj aca na stopień swobody powinna wynosić k B T/2. Można wykorzystać jedn a z dwóch metod (o generatorach liczb losowych - pkt 5): Metoda : E kin ia = 2 k B T ln u ia, i =, 2,..., N, a = x, y, z (6) gdzie u ia to s a niezależne liczby losowe z generatora losowego rozk ladu jednorodnego na przedziale (0; ]. Ponieważ Eia kin = m via 2 /2 zatem: v ia = ± k BT m ln u ia (7) Znak (plus lub minus) losujemy niezależnie dla każdej ze sk l]adowych. Metoda 2 (metoda zmiennych biegunowych): Generujemy pary liczb z i z 2, tak by w sumie by lo co najmniej 3N liczb (czyli 3N lub 3N + ): krok : losujemy niezależniw u i u 2 z rozkladu jednorodnego na przedziale ( ; ] krok 2 : jeśli u 2 + u 2 2 < idziemy do kroku 3., jeśli nie, wracamy do kroku. 2
krok 3 : z = u κ α, z 2 = u 2 κ α, gdzie κ = k B T/m, a α = 2 ln(u2 +u2 2 ). u 2 +u2 2 krok 4 : powtarzamy kroki -3 aż do uzyskania minimum 3N liczb (3N/2 par z i z 2 ). Nastȩpnie przypisujemy sk ladowym prȩdkości każdego z atomów kolejne z wygenerowanych liczb. Niezależnie od wyboru metody dobrze jest zlikwidować ruch środka masy (V CM = i v i = 0) w chwili pocz atkowej: 4 Algorytm Verlet a v i = v i V CM /N, V CM = N v i (8) Równania ruchu zapisujemy korzystaj ac z równań Hamiltona oraz naszego hamiltonianu z równania. { ṙi = H p i = p i /m ṗ i = H r i = F i Do ca lkowania równań ruchu w przypadku, gdy nie zalezy nam na dokladnych wartosciach predkosci, mozemy uży c algorytmu Verleta w postaci podstawowej z krokiem czasowym h: i= r i (t + h) = 2r i (t) r i (t h) + F i (t) h 2 (2m) (9) v i (t) = [ r i (t + h) r i (t h) ] (2h) (0) W przypadku, gdy potrzebujemy dok ladnego odtwarzania predkości stosujemy tzw. predkosciowy algorytm Verleta: r i (t + h) = r i (t) + v i (t)h + 2 a i(t)h 2 () v i (t + h/2) = v i (t) + 2 a i(t)h (2) a i (t + h) = m F i(r(t)) (3) v i (t + h) = v i (t + h/2) + 2 a i(t + h)h (4) Powyzsze 4 rownania opisuja kolejne kroki algorytmu: 3
. Obliczenie polozenia r atomu i w czasie t + h na podstawie jego polozenia r, predkosci v oraz przyspieszenia w aktualnej chwili czasu t. 2. Pierwszy etap obliczania predkosci v - w polowie kroku czasowego - na podstawie v i a w czasie t. 3. Obliczenie przyspieszenia a w chwili czasu t+h - na podstawie sily liczonej dla NOWYCH polozen obliczonych w kroku (b. wazne!). Przyspieszenia zapamietujemy a i (t + h) - beda potrzebne w nastepnym kroku czasowym. Z kolei a i (t) mozemy juz zapomniec; 4. Drugi etap obliczania predkosci v - w kolejnej chwili t + h - na podstawie v i (t + h/2) obliczonych punkcie 2 i a i (t + h) obliczonych w punkcie 3; Otrzymujemy r i (t+h),v i (t+h),a i (t+h) - ktore sa ostatecznymi wartosciami w kolejnym kroku. Mozemy je przeanalizowac i uzyc do obliczenia nastepnego kroku.itd. Powyzszy algorytm wymaga przechowywania r i (t + h),v i (t + h),a i (t + h) w osobnych tablicach - ale nigdy nie sa potrzebne wartosci tych obserwabli w dwoch roznych chwilach czasu, dlatego tablice mozna zamazywac nowymi wartosciami. Potrzebne jest 9N pozycji do zapamietania, gdzie N - liczba atomow. Mozna wykazac, ze predkosciowy algorytm Verleta odtwarza r i (t + h),v i (t + h) z bledem rzedu ϑ(h 3 ). Wiecej: http://www.fisica.uniud.it/~ercolessi/md/md/node2.html http://pl.wikipedia.org/wiki/algorytm_verleta 5 Generatory liczb pseudolosowych Najwygodniej bȩdzie użyć generatora drand48, dostȩpnego w bibliotece stdlib.h jȩzyka C. Jest to generator liczb pseudolosowych o rozk ladzie jednorodnym z przedzia lu (0; ]. Generator należy zainicjować funkcj a srand48. Poniżej fragment kodu inicjuj acego i losuj acego liczbȩ u: #include<stdlib.h> #include<time.h> long int seed; double u; seed = time(0); srand48(seed); 4
u = drand48(); 6 Wizualizacja wyników - Wykresy w dowolnum programie graficznym (np.:gnuplotlub xmgrace) - obrazy trajektorii: najprościej przedstawić w formacie XYZ i ogl adać w programie vmd. Plik.xyzzawiera 2 linijki wstȩpu, pierwsza to liczba atomów uk ladu, druga to dowolny komentarz. Kolejne linie zawieraj a 4 kolumny - pierwsza to nazwa atomu, pozosta le 3 to jego po lożenie. Np. dla uk ladu zawieraj acego jeden atom u, 4 kolejne jego po lożenia w formacie xyz mog lyby wygl adać tak: Ar.000000 0.000000 0.00 Ar.002885 0.035022 0.00 Ar.004553 0.070245 0.00 Ar.00499 0.05629 0.00 5
7 Symulacje - zadania do wykonania. Przyjmujemy a = R 0, 2L = 4R 0. Testujemy program dla różnych kroków czasowych, od h = 0 6 ps do h = 0 2 ps. Ca lkowity czas symulacji - ok. -2 ps. Z symulacji źbieramy trajektoriȩ uk ladu (w formie pliku.xyz do wizualizacji) oraz bież ace i średnie wartości energii potencjalnej, kinetycznej, ca lkowitej, temperatury (T = 2E kin /(3k B (N ))). Obliczamy także wariancjȩ zbieranych średnich. 2. Termalizacja: chcemy by symulacja odtwarzala w miare mozliwosci uklad w temperaturze T, a najlepiej by rozklad prawdopodobienstwa energii wystepujacych w ukladnie byl charakterystyczny dla ukladow termicznych (tzw.zespol kanoniczny, NVT). Srednia energia kinetyczna calego ukladu liczona po wszystkich krokach symulacji powinna wynosic i E kin (i) = 3Nk B T/2. (5) gdzie E kin (i) = mv 2 i /2 Rozklad prawdopodobienstwa energii kinetycznej atomow zbierany po wszystkich atomach powinien byc z kolei rozkladem Maxwella-Boltzmanna: 2 ( p(e kin ) = Ekin exp E ) kin (6) pi(kb T ) 3 k B T metoda latwa, ale odtwarzajaca jedynie srednia energie calkowita i E k(i) = 3Nk B T/2 jest skalowanie predkosci po kazdym kroku: 3Nk B T/2 ṽ i = i E kin(i) v i (7) metoda zaawansowana - dla ambitnych - odtwarzajaca dosc porzadnie zespol NVT: termostat Nose-Hoovera: ṙ i = v i (8) v i = (F i + ζp i )/m (9) ζ = [ m v i 2 /2 3Nk B T/2]/Q (20) i gdzie ζ jest pewna dodatkowa zmienna - odpowiednio skalowalnym wspolczynnikiem tarcia, Q - pewnym parametrem od ktorego zaleza fluktuacje energii (,,masa termostatu ). Metoda ta odtwarza bardzo dobrze rozklady predkosci poszczegolnych atomow, jest odwracalna w czasie, ma dobra interpretacje w fizyce statystycznej, itp. Szczegoly Phys. Rev. A 3, 695-697 (985) 6