Radialna funkcja korelacji g(r) r1 Określa prawdopodobieństwo znalezienia innej cząsteczki w odległości r= r1-r od cząsteczki znajdującej się w punkcie r1
Definicja g(r) Aby zdefiniować g(r) całkuje się konfiguracyjną funkcję rozkładu po współrzędnych wszystkich cząsteczek za wyjątkiem dwu, uwzględniając odpowiednie czynniki normalizacyjne. W zespole kanonicznym: N N 1 g r 1, r = d r 3 d r 4... d r N exp U d r 1, d r 1,..., d r N Z NVT
Definicja g(r) Wybór i=1, j= jest arbitralny w układzie identycznych cząsteczek. Równoważna definicja oparta jest na średniej po zespole po wszystkich parach cząsteczek. V g r = = r i r j r = r r ij i i j N i i j
g(r) Radialna funkcja dystrybucji jest ciekawą funkcją nie tylko dlatego że opisuje strukturę płynu, ale także dlatego, że średnia po zespole jakiejkolwiek funkcji zależnej od odległości między parą cząsteczek może być wyrażona w formie 1 a r i, r j = d r i d r j g r i, r j a r i, r j V albo 1 a = a r ij = N dr a r g r 4 r i j i 0
Czynnik struktury Transformata Fouriera funkcji g(r) N S k =1 [ g r 1]exp i k r d r V V Jest względnym natężeniem promieniowania rozpraszanego pod kątem rozpraszania, gdzie 4 k sin /
Obliczanie g(r) w symulacjach r Zliczamy ile par cząsteczek znajduje się w przedziale (r, r+ r) Jak małe (duże) powinno być r?
Obliczanie g(r) DO i = 1, N - 1 xi = x(i) yi = y(i) DO j = i+1, N xd = xi - x(j) yd = yi - y(j) INCLUDE 'MI.inc' r = SQRT(r) bin = INT(r/ r) +1 hist(bin)=hist(bin)+ ENDDO MI.inc IF ( xd.gt. L/.) THEN xd = xd - L ELSEIF ( xd.lt. - L/. ) THEN xd = xd + L ENDIF IF ( yd.gt. L/. ) THEN yd = yd - L ELSEIF ( yd.lt. -L/. ) THEN yd = yd + L ENDIF r = xd*xd + yd*yd ENDDO Zliczamy ile par cząsteczek znajduje się w przedziale (r, r+ r). Jednocześnie zlicza się pary ij jak i ji
Unormowanie histogramu g(r) Załóżmy, że zliczyliśmy średnie z run kroków MC i dana przegroda b histogramu odpowiadająca przedziałowi (r,r+ r) zawiera nhist(b) par cząsteczek. Wtedy średnia liczba cząsteczek, których odległość od danej cząsteczki zawiera się w tym przedziale, jest dana wzorem n b =nhist b / N run Średnia liczba cząsteczek w tym samym przedziale dla gazu doskonałego o tej samej gęstości wynosi 4 3 3 n b = [ r r r ] 3 id Z definicji radialna funkcja korelacji jest dana następującym wzorem id g r 1/ r =n b /n b
Unormowanie histogramu g(r) const = 4* / 3 DO bin = 1, maxbin rlower = REAL(bin-1)* r rupper = rlower+ r nideal = const*(rupper**3-rlower**3) gr(bin) = REAL(hist(bin))/REAL(nstep)/REAL(N)/nideal ENDDO Odpowiednia odległość dla poszczególnych elementów histogramu g(r) to odległość od środka przedziału (r, r+ r), tj. dla powyższego przykładu rlower+ r/
Przykłady g(r) g(r) dla płynu Lennard-Jonesa
Przykłady g(r) g(r) dla płynu cząsteczek oddziałujących potencjałem studni kwadratowej
Obliczanie energii na podstawie znajomości g(r) Można obliczyć energię oddziaływań (zakładając tylko dwucząsteczkowe oddziaływania) U= N dr r u r g r 0
Long-range corrections Jeśli oddziaływania międzycząsteczkowe gwałtownie maleją, wtedy możemy napisać N U = uc r ij dr r 4 u r r i j tot c Zakłada się, że g(r)=1 dla r > rc
Long-range corrections Średnia energia potencjalna danego atomu i dana jest przez 1 ui= dr4 r u r r 0 gdzie (r) oznacza średnią gęstość liczbową w odległości r od atomu i. Jeśli obetnie się potencjał w odległości rc, wkład pochodzący od tej obciętej części, utail, jest ignorowany 1 u dr4 r u r r r tail c
Long-range corrections Aby uprościć obliczanie utail zakłada się, że dla r > rc gęstość (r) jest równa średniej gęstości liczbowej. Jeśli u(r) jest potencjałem Lennard-Jonesa otrzymujemy następujące wyrażenia 1 u = 4 dr r u r r tail c [ ] 1 16 dr r r r c 1 r [ ] 9 8 3 1 3 3 rc rc 3 6
Wykonanie obliczeń Faza doprowadzenia do stanu równowagi Ustalenie dmax Faza przeprowadzenia obliczeń Zbieranie średnich Jak ocenić czy jesteśmy w stanie równowagi?
Monitorowanie energii u Obserwując zmiany energii można oszacować po ilu krokach MC układ dochodzi do stanu równowagi
Ustalania maksymalnego przesunięcia IF ( MOD( ntrial, nadjst ).EQ. 0 ) THEN ratio = REAL(naccpt)/REAL(nadjst) IF ( ratio.gt. 0.5 ) THEN dmax = dmax * 1.05 ELSE dmax = dmax * 0.95 ntrial ilość kroków MC naccpt ilość zaakceptowanych kroków MC nadjst co ile kroków MC dostosowuje się maksymalne przesunięcie dmax ENDIF naccpt = 0 ENDIF Można tak robić jedynie w fazie doprowadzania układu do równowagi!!!
Struktura programu Wczytanie parametrów, wczytanie konfiguracji początkowej wyzerowanie liczników Kroki Monte Carlo Zbieranie średnich Zapisanie wyników, zapisanie ostatniej konfiguracji
Konfiguracja początkowa (fcc) Dla danej ilości cząsteczek Ntot oraz gęstości płynu znaleźć rozmiar sześciennego pudełka symulacyjnego. Znaleźć objętość V i długość krawędzi sześcianu L. N tot = V L=L x =L y =L z=v N tot =4 n 1 /3 3 N tot V= n=n x=n y =nz = N tot / 4 1/ 3 Cząsteczki układamy na sieci kubicznej fcc. Stała sieci jest dana następującym wzorem (jeśli uwzględnimy periodyczne warunki brzegowe): = x = y = z =L/ n
Konfiguracja początkowa fcc x(1) = 0.0 y(1) = 0.0 z(1) = 0.0 x() = 0.0 y() = / z() = / x(3) = / y(3) = 0.0 z(3) = / x(4) = / y(4) = / z(4) = 0.0 m=0 DO i = 1, n DO j = 1, n DO l = 1, n DO k = 1, 4 x( k+m ) = x(k) + * REAL( l - 1 ) y( k+m ) = y(k) + * REAL( j - 1 ) z( k+m ) = z(k) + * REAL( i - 1 ) ENDDO m=m+4 ENDDO ENDDO ENDDO Powielanie komórki elementarnej Cząsteczki w komórce elementarnej
Sprawdzanie konfiguracji DO i = 1, N - 1 xi = x(i) yi = y(i) DO j = i+1, N xd = xi - x(j) yd = yi - y(j) INCLUDE 'MI.inc' IF ( r.lt. ) THEN OVERLAP =.TRUE. ENDIF ENDDO MI.inc IF ( xd.gt. L/.) THEN xd = xd - L ELSEIF ( xd.lt. - L/. ) THEN xd = xd + L ENDIF IF ( yd.gt. L/. ) THEN yd = yd - L ELSEIF ( yd.lt. -L/. ) THEN yd = yd + L ENDIF r = xd*xd + yd*yd ENDDO Sprawdzamy konfigurację początkową czy jest poprawnie skonstruowana.
Kroki Monte Carlo Wybór cząsteczki Obliczenie oddziaływania wybranej cząsteczki z pozostałymi cząsteczkami Przesunięcie cząsteczki Obliczenie oddziaływania przesuniętej cząsteczki z pozostałymi cząsteczkami Obliczenie różnicy energii przed i po przesunięciu Akceptacja przesunięcia
Akceptacja przesunięcia V =V acc o n =min { 1,e V } new V old
Akceptacja przesunięcia V = Vnew -Vold V = V IF ( V.LT. 75.0 ) THEN IF ( V.LT. 0.0 ) THEN V = V + V x(i) = xnew y(i) = ynew z(i) = znew naccpt = naccpt + 1 ELSEIF ( EXP(- V).GT. RANF(dummy) ) THEN V = V + V x(i) = xnew y(i) = ynew z(i) = znew naccpt = naccpt + 1 ENDIF ENDIF ntrial = ntrial +1 FORTRAN
Przesuniecie w cylindrycznych współrzędnych? x new =x old 1 1 d max x new =x old 1 r max cos y new = y old 1 d max y new = y old 1 r max sin
Szacowanie błędu pomiaru Średnia wielkość A obliczona w symulacji MC run 1 A run= A run =1 Jeśli założyć, że wielkości A( ) są statystycznie niezależne to wariancja byłaby dana wzorem A run = A / run gdzie run 1 A = A run = A A run run =1
Szacowanie błędu pomiaru W symulacjach MC wielkości A( ) nie statystycznie niezależne jeśli zliczanie średnich odbywa się odpowiednio często. Aby rozwiązać ten problem sekwencja zliczeń wielkości A jest podzielona na bloki o długości b. Załóżmy, że mamy nb bloków, tak że nb b= run. Obliczamy wtedy średnią wartość wielkości A dla każdego bloku b 1 A b= A b =1 gdzie sumuje się jedynie po konfiguracjach w bloku b. Wariancję można wtedy oszacować jako nb 1 A b = A b A run nb b=1 Można oczekiwać, że ta wielkość jest odwrotnie proporcjonalna do b, dla dużych b, wtedy gdy wielkość bloków jest dostatecznie duża aby były one statystycznie niezależne
Fluktuacje energii Z fluktuacji energii całkowitej można obliczyć ciepło właściwe H NVT =k B T C V Energię całkowitą można podzielić na część kinetyczna i część potencjalną, które są nieskorelowane. NVT K V =0 H NVT = K NVT V NVT Część kinetyczna może być łatwo obliczona na przykład dla układu N atomów 3N K NVT = k B T =3N / Stąd fluktuacje energii potencjalnej dane są jako 3 V NVT =k B T CV N k B
Oszczędność CPU Lista sąsiadów
Oszczędność CPU Podział na komórki
Simulated annealing Minimalizacja funkcji z wieloma minimami
Krytyczne spowolnienie
Potencjały oddziaływań
Twarde dyski (kule) { 0 u r = hs Potencjał twardych kul, r, r
Diagram fazowy
Soft sphere potencjał u r = r ss =1 =6
Potencjał studni kwadratowej u {, r sw u r =, r 0, r sw r
Potencjał Lenard-Jonesa [ ] u r =4 r lj u lj ε σ r 1 r 6
Wielkości zredukowane W symulacjach wygodnie jest wyrazić wielkości takie jak temperatura, gęstość, ciśnienie i podobne w jednostkach zredukowanych. Tzn. że wybiera się wygodne jednostki długości, energii, masy i wyraża się wszystkie pozostałe wielkości w tych podstawowych jednostkach. Na przykład dla płynu Lennard-Jonesa, używa się potencjału w formie funkcji u(r) = f(r/ ). Naturalnym wybór podstawowych jednostek to jednostka długości jednostka energii W oparciu o te podstawowe jednostki definiuje się wielkości zredukowane oznaczane przez *. Na przykład potencjał Lennard-Jonesa w formie zredukowanej wygląda następująco [ ] 1 lj u r =4 r 1 1 r 6 W tej konwencji można napisać następujące wielkości w jednostkach zredukowanych jako:energia potencjalna, U*=U -1, ciśnienie P*=P 3-1, gęstość *= 3, temperatura T*=kbT -1.
Obcięty potencjał Lennard-Jonesa { lj u r, r r c u r = 0, r r c
Obcięcie potencjału znacząco zmienia diagram fazowy
Obcięty i przesunięty { lj lj u r u r c, r r c u r = 0, r r c