Kinetikus Monte Carlo Bevezetés Véletlen bolyongás Residence time algoritmus
Bevezetés A kinetikus Monte Carlo (KMC) módszerek sokaságok kinetikájának modellezésére alkalmasak nem csak ez egyensúlyi állapot számolására alkalmas az egyes állapotok közötti utat is megmutatják pl. az egyensúlyba jutás útját Dr. Erdélyi Zoltán Számítógépes modellezés 2
Bevezetés Alapötlet: csak az aktuális állapot határozza meg, hogy mi lesz a következő állapot nincs memóriája a rendszernek a következő állapot valószínűségi alapon dől el a valószínűségeket mi definiáljuk előre, azokat csak használja az algoritmus ez a „lelke” a módszernek Dr. Erdélyi Zoltán Számítógépes modellezés 3
Bevezetés Atomi mozgási folyamatok leírására rácsnélküli KMC az atomok (részecskék) szabadon mozognak a rendelkezésre álló térben (pl. folyadék, gáz) rács KMC az atomok csak a kristályrács által meghatározott helyeken tartózkodhatnak, és az azok által meghatározott pályán mozoghatnak Dr. Erdélyi Zoltán Számítógépes modellezés 4
Véletlen bolyongás (1 részecske) Rács nélkül (2 dimenzió, ugrástávolság állandó) 1. kezdeti pozíció megadása 2. ugrási irány kisorsolása 3. koordináták frissítése 4. vissza a 2. pontba Dr. Erdélyi Zoltán Számítógépes modellezés 5
Véletlen bolyongás (1 részecske) Scilab-ban hatékonyabb algoritmus 1. n db ugrási irány kisorsolása 2. a megfelelő n db relatív koordinátaváltozás kiszámítása 3. pálya számítása a koordináták kumulatív összegzésével Dr. Erdélyi Zoltán Számítógépes modellezés 6
Véletlen bolyongás (1 részecske): példa rw2d.sci clear(); // veletlen bolyongas 2D-ben, racs nelkul // ugrasi tavolsag 1 function p = rw2d_elemi(n) t = grand(1,n,'unf',0,2*%pi) x = cos(t) y = sin(t) p = [x;y] endfunction Dr. Erdélyi Zoltán Számítógépes modellezés 7
Véletlen bolyongás (1 részecske): példa function [x,y] = rw2d(n) p = rw2d_elemi(n) x = [0 cumsum(p(1,:))] // 0 a kezdeti x koordinata y = [0 cumsum(p(2,:))] // 0 a kezdeti y koordinata endfunction //hivas [x,y] = rw2d(100) //beirhatunk akar 1e6-ot is, kiserletezzunk plot2d(x,y) //abrazolas Dr. Erdélyi Zoltán Számítógépes modellezés 8
Véletlen bolyongás (1 részecske) Rács nélkül (2 dimenzió, ugrástávolság változó) Levy folyamat 1. kezdeti pozíció megadása 2. ugrási irány kisorsolása 3. ugrási távolság kisorsolása 4. koordináták frissítése 5. vissza a 2. pontba Dr. Erdélyi Zoltán Számítógépes modellezés 9
Véletlen bolyongás (1 részecske) Scilab-ban hatékonyabb algoritmus 1. n db ugrási irány és távolság kisorsolása 2. a megfelelő n db relatív koordinátaváltozás kiszámítása 3. pálya számítása a koordináták kumulatív összegzésével Dr. Erdélyi Zoltán Számítógépes modellezés 10
Véletlen bolyongás (1 részecske): példa levy2d.sci clear(); // veletlen bolyongas 2D-ben, racs nelkul function p = levy2d_elemi(n) t = grand(1,n,'unf',0,2*%pi) r = grand(1,n,'nor',0,1) //az ugrastavolsag normalis eloszlasu // es 0-1 hosszusagu x = r.* cos(t) y = r.* sin(t) p = [x;y] endfunction Dr. Erdélyi Zoltán Számítógépes modellezés 11
Véletlen bolyongás (1 részecske): példa function [x,y] = levy2d(n) p = levy2d_elemi(n) x = [0 cumsum(p(1,:))] // 0 a kezdeti x koordinata y = [0 cumsum(p(2,:))] // 0 a kezdeti y koordinata endfunction //hivas [x,y] = levy2d(1e4) //beirhatunk akar 1e6-ot is, kiserletezzunk plot2d(x,y) //abrazolas Dr. Erdélyi Zoltán Számítógépes modellezés 12
Véletlen bolyongás (1 részecske): példa lépés Dr. Erdélyi Zoltán Számítógépes modellezés 13
Visszautasításos algoritmus Az előzőekben minden ugrás megvalósult. Azonban ez nem minden algoritmusban van így Pl. egy ugrás csak akkor valósul meg biztosan, ha azzal a rendszer teljes szabadenergiája csökken ha nem csökkenne, akkor egy véletlen szám segítségével eldöntjük, hogy a „kedvezőtlen” ugrás megvalósuljon-e ezek valószínűségét előre megadjuk, pl. egy függvénnyel tehát előfordulhat, hogy egy ugrás nem valósul meg Dr. Erdélyi Zoltán Számítógépes modellezés 14
Visszautasításos algoritmus ezért ezek az algoritmusok nem hatékonyak ellenben viszonylag könnyű a programozásuk Dr. Erdélyi Zoltán Számítógépes modellezés 15
Visszautasítás mentes algoritmus Ezek az algoritmusok mindig végrehajtanak hatékony (megváltozik az atomi konfiguráció) ugrásokat ehhez ki kell tudni választani a lehetséges, hatékony ugrásokat intenzív könyvelést igényel ezek közül kell választani valószínűségi alapon majd meg kell becsülni, hogy mennyi időt kell egy ilyen ugrásra várni átlagosan tehát nem egyenközű az időlépés ! Dr. Erdélyi Zoltán Számítógépes modellezés 16
Residence time algortimus Dr. Erdélyi Zoltán Számítógépes modellezés 17
Residence time algortimus Dr. Erdélyi Zoltán Számítógépes modellezés 18
Residence time algortimus Az ugrási valószínűség számítása Dr. Erdélyi Zoltán Számítógépes modellezés 19
Residence time algortimus Dr. Erdélyi Zoltán Számítógépes modellezés 20
Alkalmazási terület Sugárkárosodás anyagokban Felületen végbemenő folyamatok (Surface science) Vékonyfilm és kristálynövesztés Fém és félvezető ötvözetek keveredése, szilárdfázisú reakciója Adszorpciós és deszorpciós jelenségek Katalízis Biológiai rendszerek stb. Dr. Erdélyi Zoltán Számítógépes modellezés 21
Előnyei és hátrányai Előnyök Gyors az MD-hez képest Sztochasztikus Relatíve egyszerű stb. Hátrányok Az ugrási valószínűségeket ismerni kell Mechanizmust előre definiáljuk Szerkezetet előre definiáljuk (rács KMC) stb. Dr. Erdélyi Zoltán Számítógépes modellezés 22
Előnyei és hátrányai KMC + MD hibrid módszerek léteznek ún. on the fly KMC-k, ahol az ugrási valószínűségeket időnként újraszámolják MD-vel a KMC futása közben nagyon számításigényes Dr. Erdélyi Zoltán Számítógépes modellezés 23