dx generacji
Transkrypt
dx generacji
Program MC Napisać program symulujący twarde kule w zespole kanonicznym. Dla N > 100 twardych kul. Gęstość liczbowa 0.1 < N/V < 0.4 . Zrobić obliczenia dla 2,3 różnych wartości gęstości. Obliczyć radialną funkcję korelacji. Zrobić jej wykres. Odczytać z wykresu wartość radialnej funkcji korelacji w punkcie r= Opisać warunki prowadzenia symulacji, czyli a) ile kroków MC było zrobionych aby doprowadzić układ do stanu równowagi. b) ile kroków MC użyto do zbierania średnich c) jakie było maksymalne przesunięcie d) jaki był procent zaakceptowanych przesunięć e) co ile kroków MC były zbierane średnie (histogram g(r)) CBMC Algorytm „Configurational-Biased MC” (CBMC) składa się z następujących kroków 1. Generujemy próbna konformację stosując schemat Rosenblutha aby zbudować całą cząsteczkę, obliczamy czynnik Rosenblutha W(n) 2. Odtwarzamy konformację i obliczamy czynnik Rosenblutha W(o) 3. Akceptujemy taki próbny ruch z prawdopodobieństwem acc on=min { 1 , Wn/Wo } Generowanie nowej konfiguracji Odtwarzanie starej konfiguracji CMBC Generowanie próbnej konformacji n polimeru składającego się z l monomerów robi się według następującego algorytmu: 1. Pierwszy atom jest umieszczany losowo a jego energia jest oznaczona przez u1(n) oraz w1(n) = k exp[-u1(n)], gdzie k jest liczbą koordynacyjną sieci, na przykład k=6 dla sieci prostej kubicznej. 2. Dla następnego segmentu z indeksem i, mamy k możliwych próbnych kierunków. Energia próbnego kierunku j jest oznaczana przez ui(j). Z tych k możliwych kierunków wybieramy jeden, niech będzie oznaczony przez n, z następującym prawdopodobieństwem exp[−ui n] pi n= wi n Gdzie wi(n) jest zdefiniowane w następujący sposób k wi n=∑ exp [− ui j] j=1 CBMC Energia oddziaływania ui(j) zawiera wszystkie oddziaływania segmentu i z innymi cząsteczkami w układzie i z segmentami od 1 do i-1 tej samej cząsteczki. Nie zawiera natomiast oddziaływań z segmentami od i+1 do l. Stąd całkowita energia łańcucha polimeru jest dana przez l U n=∑ ui n i =1 3. Krok Nr 2 jest powtarzany, aż do zbudowania całego łańcucha, wtedy można obliczyć czynnik Rosenblutha konfiguracji n l Wn=∏ wi n i=1 CBMC W podobny sposób oblicza się wagi Rosenblutha dla starej konfiguracji o 1. Jeden z łańcuchów jest wybrany losowo, ten łańcuch oznacza się przez o 2. Obliczamy energię pierwszego monomeru u1(o) oraz w1(o) =k exp[-u1(o)] 3. Aby obliczyć wagę Rosenblutha dla reszty łańcucha obliczmy energię monomeru i w jego aktualnym położeniu oraz energię jaką by miał gdyby się znajdował w pozostałych k-1 miejscach sąsiadujących z położeniem monomeru i-1. Tak obliczone energie są wykorzystane do obliczenia k wi o=exp [− ui o]∑ exp [− ui j] j=2 4. Po odtworzeniu całego łańcucha oblicza się l W o=∏ wi o i=1 CBMC Akceptacja ruchu z konfiguracji o do konfiguracji n dana jest przez acc o n=min { 1 , Wn/Wo } Generowanie nowej konfiguracji Odtwarzanie starej konfiguracji CMBC Prawdopodobieństwo wygenerowania nowej konfiguracji n jest następujące l on=∏ i=1 exp [− ui n] exp[−U n] = wi n Wn Podobnie dla ruchu w odwrotnego exp[−U o] n o= Wo Warunek równowagi szczegółowej jest spełniony gdy acc o n Wn = acc n o Wo Semigrand Ensemble W przypadku mieszanin symetrycznych symulacje Monte Carlo można przeprowadzić dokonując jedynie dwu rodzajów ruchów przesuwania cząsteczek i zamiany cząsteczek A na cząsteczki B i odwrotnie. Składnik A Składnik B Symulacje Monte Carlo W przypadku symulacji w semigrand ensemble oprócz ruchów związanych z przesuwaniem cząsteczek oraz zmianą objętości, należy również uwzględnić ruchy związane z zamianą jednych cząsteczek na inne. Robi się to w następujący sposób. Wybieramy losowo jedną cząsteczkę spośród wszystkich cząsteczek N i z równym prawdopodobieństwem zamieniamy tę cząsteczkę na cząsteczkę innego rodzaju. Prawdopodobieństwo akceptacji takiego ruchu dane jest przez: { acc A B=min 1 , B exp [− U sN ] A } gdzie U(sN) oznacza zmianę energii potencjalnej układu jeśli zamienimy cząsteczkę A na cząsteczkę B. Symulacje Monte Carlo Jeśli będziemy postępować w ten sposób, że najpierw wybieramy losowo z równym prawdopodobieństwem rodzaj cząsteczki, czyli A albo B, a potem dopiero zamieniamy tę cząsteczkę na inną to wtedy prawdopodobieństwo akceptacji takiego ruchu jest dane innym wzorem. Jeśli wybraliśmy cząsteczkę A, to wtedy można ja zamienić na cząsteczkę B z prawdopodobieństwem. { acc A B=min 1 , N A B exp [− U sN ] N B1 A } gdzie U(sN) oznacza zmianę energii potencjalnej układu jeśli zamienimy cząsteczkę A na cząsteczkę B. Overlapping distributions Załóżmy, że prowadzimy symulacje Monte Carlo układu 1. Dla każdej konfiguracji, którą próbkujemy w układzie 1 obliczamy energię potencjalną układu 0 U0(sN) dla tej samej konfiguracji i stąd różnicę energii potencjalnejU=U1(sN) - U0(sN). Następnie tworzymy histogram który przedstawia gęstość prawdopodobieństwa różnicy energii potencjalnej U. Oznaczmy ten histogram przez p1(U). W zespole kanonicznym p1(U) jest dane przez N d s exp[−U1 ] U1 −U0− U ∫ p1 U = q1 gdzie q1 =∫ d sN exp[− U1 sN ] Overlapping distributions Dzięki funkcji możemy zastąpić U1 przez U0+U w czynniku Boltzmanna p1 = d s N exp [−U0 U ] U1 −U0− U ∫ U= q0 q1 q1 exp[− U] N d s ∫ exp [−U 0 ] U1 −U0 − U q0 q0 = exp [ − U ] p0 U q1 p0(U) jest gęstością prawdopodobieństwa znalezienia różnicy energii potencjalnej między układami 0 i 1 podczas próbkowania dostępnych konfiguracji układu 0 Overlapping distributions Różnica swobodnej energii między układem 0 i 1 jest dana przez F =−kB T ln q1/q0 Wobec tego ln p1 U = F − U ln p0 U Umbrella sampling p1 U = p0 U exp [ F − U ] Całkując obie strony równania po U ∞ ∞ d U p1 U=exp F ∫ d U p0 U exp U ∫ −∞ −∞ 1 = exp F 〈 exp− U 〉0 exp− F = 〈 exp− U 〉0 Umbrella sampling exp− F = 〈 exp− U 〉0 Powyższe równanie jest użyteczne w obliczaniu różnicy energii swobodnej układów, które nie różnią się znacząco od siebie, ale w przypadku znacznych różnic jego stosowalność jest ograniczona. W wielu przypadkach największy wkład do średniej pochodzi z obszarów przestrzeni konfiguracyjnej gdzie p0(U) jest jest bardzo małe podczas gdy exp[-U] jest bardzo duże. Dlatego błąd statystyczny w F jest duży. Umbrella sampling W tej metodzie czynnik Boltzmanna jest zastąpiony przez nieujemna funkcję wagową (rN). Prawdopodobieństwo znalezienia się w punkcie rN w przestrzenie konfiguracyjnej jest więc proporcjonalne do (rN). F =−k B T lnQ1 /Q0 =−k B T ln N N s exp −U s ∫ [ 1 ] ∫s N N exp [ −U 0 s ] drN rN exp [−U 1 rN ] / rN ∫ 〈 exp[− U ] 〉0= N N N N dr r e xp − U r / r ∫ [ ] 0 Umbrella sampling Oznaczając przez <...> średnią po rozkładzie prawdopodobieństwa proporcjonalnym do (rN) 〈 exp [− U 1]〉 〈 exp[− U ] 〉0= 〈 exp [− U 0]〉 Aby licznik i mianownik powyższego równania były niezerowe, (rN) powinno nakładać się na siebie w regionach przestrzeni konfiguracyjnej, które są próbkowane przez układ 0 i układ 1. Z tego powodu metoda ta bierze swoją nazwę. GF MC G=∫ f x g xdx V f(x) jest nieujemna ∫ f xdx=1 GF MC N GN = 1 g Xk ∑ N k=1 Wartość oczekiwana GN wynosi EG N =∫ f x g x dx GF MC Jesteśmy zainteresowani energią stanu podstawowego i funkcją własną równania Schroedingera. H 0 R= E0 0 R Funkcja Greena jest zdefiniowana następująco H GR, R'= R−R' GF MC Rozwiązaniem formalnym funkcji Greena jest G R, R' =∑ E R R' −1 R Funkcje własne. Równanie Schroedingera może być zapisane w postaci 0 R=E0∫ G R, R' 0 R'd R' 0 R Można otrzymać przez iteracje równania n1 R=E T∫ G R, R' R' dR' ET est próbna energią. n GF MC Załóżmy, że funkcja próbna jest kombinacja liniową 0 R=∑ C R Wtedy n n R=∑ ET C R E Dla dostatecznie dużych n wyraz =0 dominuje sumę w powyższym równaniu ET R≈ E0 n n C 0 0 R GF MC n1 ET n R≈ R E0 Co dowodzi, że iteracyjnie można dostać funkcje falowa stanu podstawowego. Energię stanu podstawowego E0 można otrzymać z powyższego równania. GF MC Rozważmy, cząsteczkę na linii ograniczona odpychającymi ścianami. Równanie Schroedingera ma następującą postać 2 d x =E x 2 dx x=0 dla Funkcja falowa stanu podstawowego i energia mają postać 0 x=cos x, 2 2 2 E0= ∣ x∣≥1 GF MC 1/ 2 1−x ' 1 x , G x , x ' = 1/ 2 1x ' 1− x , { x≤ x ' x≥ x ' Równanie całkowe do rozwiązania wygląda następująco 1 x=E T ∫ G x , x ' x 'd x ' −1 G(x,x') można stosować jako gęstość rozkładu. GF MC Wybieramy początkową populację punktów x', z (0)(x'); załóżmy, że są równomiernie rozłożone. Wtedy dla każdego x' 1. należy skonstruować dwa trójkąty, które tworzą G(x,x'); 2. dla każdego trójkąta należy obliczyć ETA, gdzie A jest polem powierzchni trójkąta 3. dla każdego trójkąta, należy wygenerować losowo liczbę całkowitą N, tak że <N>=ETA (to znaczy N= największa liczba całkowita mniejsza niż ETA plus jednorodna liczba losowa) 4. następnie próbkuje się <N> punktów w każdym trójkącie aby tworzyć „nową generację”. Punkty są próbkowane z gęstości prawdopodobieństwa unormowanej do 1 o kształcie trójkąta.