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  on=min { 1 , Wn/Wo }
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
Wn=∏ 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 , Wn/Wo }
Generowanie nowej konfiguracji
Odtwarzanie starej konfiguracji
CMBC
Prawdopodobieństwo wygenerowania nowej konfiguracji n jest następujące
l
 on=∏
i=1
exp [− ui n] exp[−U n]
=
wi n
Wn
Podobnie dla ruchu w odwrotnego
exp[−U o]
n o=
Wo
Warunek równowagi szczegółowej jest spełniony gdy
acc o n Wn
=
acc n o Wo
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 B1  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 potencjalnejU=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 lnQ1 /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 xdx
V
f(x) jest nieujemna
∫ f  xdx=1
GF MC
N
GN =
1
g Xk
∑
N k=1
Wartość oczekiwana GN wynosi
EG 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 GR, 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
 n1

 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
 n1

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 1x ' 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.

Podobne dokumenty