Az előadás letöltése folymat van. Kérjük, várjon

Az előadás letöltése folymat van. Kérjük, várjon

Molekuladinamika 3. Alkalmazások A módszer korlátai

Hasonló előadás


Az előadások a következő témára: "Molekuladinamika 3. Alkalmazások A módszer korlátai"— Előadás másolata:

1 Molekuladinamika 3. Alkalmazások A módszer korlátai
Egy velocity Verlet algoritmus SciLab-ban Alkalmazások A módszer korlátai

2 Egy velocity Verlet algoritmus SciLab-ban
Ha feltételezzük, hogy az 𝐹 𝑖 erők állandók a Δ𝑡 időintervallumban, akkor a mozgásegyenlet kiintegrálható analitikusan és a következő alakot ölti 𝑟 𝑖 𝑛+1 = 𝑟 𝑖 𝑛 + 𝑣 𝑖 𝑛 Δ𝑡 𝐹 𝑖 𝑛 𝑚 𝑖 Δ 𝑡 2 ez lényegében a jól ismert négyezetes úttörvény s 𝑡 = 𝑠 0 + 𝑣 0 𝑡+ 1 2 𝑎 𝑡 2 a formula az 𝑟 𝑖 𝑡+Δ𝑡 = 𝑟 𝑖 𝑡 + 𝑑 𝑟 𝑖 𝑡 𝑑𝑡 Δ𝑡 𝑑 2 𝑟 𝑖 𝑡 𝑑 𝑡 2 Δ 𝑡 2 +… Taylor-sorból is származtatható Dr. Erdélyi Zoltán Számítógépes modellezés

3 Egy velocity Verlet algoritmus SciLab-ban
A sebesség pedig a gyorsulásnak a differenciálás „naiv” módszerére (lsd. korábbi előadás) alapozott közelítéséből számítható 𝑎 𝑖 𝑛 ≈ 𝑣 𝑖 𝑛+1 − 𝑣 𝑖 𝑛 Δ𝑡 valamint, hogy 𝑎 𝑖 𝑛 ≈ 𝐹 𝑖 𝑛+1 + 𝐹 𝑖 𝑛 2 𝑚 𝑖 átlagerő/tömeg tehát 𝑣 𝑖 𝑛+1 = 𝑣 𝑖 𝑛 + 𝐹 𝑖 𝑛+1 + 𝐹 𝑖 𝑛 2 𝑚 𝑖 Δ𝑡 Dr. Erdélyi Zoltán Számítógépes modellezés

4 Egy velocity Verlet algoritmus SciLab-ban
Velocity Verlet algoritmus összefoglalva 𝑟 𝑖 0 és 𝑣 𝑖 0 megadása, Δ𝑡 megválasztása Az erő 𝐹 =−grad𝑈 𝑟 (𝑡) kiszámítása az n-edik időlépésben Atomok mozgatása: 𝑟 𝑖 𝑛+1 = 𝑟 𝑖 𝑛 + 𝑣 𝑖 𝑛 Δ𝑡+ 𝐹 𝑖 𝑛 2 m i Δ 𝑡 2 Az erő 𝐹 =−grad𝑈 𝑟 (𝑡) kiszámítása az n+1-edik időlépésben Sebességek számítása: 𝑣 𝑖 𝑛+1 = 𝑣 𝑖 𝑛 + 𝐹 𝑖 𝑛+1 + 𝐹 𝑖 𝑛 2 𝑚 𝑖 Δ𝑡 Az idő léptetése: 𝑡=𝑡+Δ𝑡 Ismétlés amíg szükséges Dr. Erdélyi Zoltán Számítógépes modellezés

5 Egy velocity Verlet algoritmus SciLab-ban
Határfeltétel szabad részecskék (nincsenek falak) 3 2 1 6 7 5 4 Dr. Erdélyi Zoltán Számítógépes modellezés

6 Egy velocity Verlet algoritmus SciLab-ban
Potenciál minimum egyensúly   grad𝑈=0  𝐹=0 Dr. Erdélyi Zoltán Számítógépes modellezés

7 Egy velocity Verlet algoritmus SciLab-ban
Ciklusokkal szervezett kód „szokásos” programnyelvekben (pl. C++) egy hatékony algoritmus SciLab-ban azonban nem az, mert a SciLab a ciklusműveleteket lassan dolgozza fel ahol lehet mátrixműveletekkel kell helyettesíteni Megjegyzés normált változókat használunk, azaz a potenciál paraméterek, Botzmann-állandó, atomok tömege egyenlő eggyel. Dr. Erdélyi Zoltán Számítógépes modellezés

8 Egy velocity Verlet algoritmus SciLab-ban
A script neve: md_ciklus.sce clear(); //******************** //bemeneti parameterek N = 64; //reszecskek szama L = 10; //kocka oldalhossza vMax = 0.1; //maximalis kezdeti sebessegkomponens n = ceil(N^(1.0/3.0)); //reszecskek szama a 3 koordinata iranyban d = L / n; //racsallando dt = 0.01; //idolepes Dr. Erdélyi Zoltán Számítógépes modellezés

9 Egy velocity Verlet algoritmus SciLab-ban
//************* //inicializalas //reszecskek kezdeti pozicioja i = 1; //reszecske szamlalo for x = 1:n for y = 1:n for z = 1:n if i <= N then r(i,1) = (x ) * d; r(i,2) = (y ) * d; r(i,3) = (z ) * d; end i = i + 1; Dr. Erdélyi Zoltán Számítógépes modellezés

10 Egy velocity Verlet algoritmus SciLab-ban
//reszecskek kezdeti sebessege for i = 1:N for k = 1:3 v(i,k) = vMax * rand(1,'uniform'); end Dr. Erdélyi Zoltán Számítógépes modellezés

11 Egy velocity Verlet algoritmus SciLab-ban
//*********** // fuggvenyek function aa=gyorsulas(r) //gyorsulasok (F/m) szamitasa for i = 1:N //gyorsulasok nullazasa for k = 1:3 aa(i,k) = 0; end Dr. Erdélyi Zoltán Számítógépes modellezés

12 Egy velocity Verlet algoritmus SciLab-ban
for i = 1:N-1 //i-j parok tavolsagnegyzetenak szamitasa for j = i+1:N r2 = 0; for k = 1:3 rij(k) = r(i,k) - r(j,k); r2 = r2 + rij(k)^2; end //LJ: F = 4eps (12sig^12/rij^13 - 6sig^6/rij^6) = // rij 24 eps (2sig^12/rij^14 - sig^6/rij^7) = rij * f f = 24 * (2 * r2^(-7) - r2^(-4)); //eps = 1; sig = 1 //a = F/m, de m = 1 aa(i,k) = aa(i,k) + rij(k) * f; //i gyorsulasa j hatsara aa(j,k) = aa(j,k) - rij(k) * f; //j gyorsulasa i hatasara endfunction Dr. Erdélyi Zoltán Számítógépes modellezés

13 Egy velocity Verlet algoritmus SciLab-ban
function T = homerseklet(v) summa = 0; for i = 1:N for k = 1:3 summa = summa + v(i,k)^2; end T = summa / (3 * (N - 1)); //ekviparticio tetelebol a homerseklet; k_Botzmann=1 endfunction Dr. Erdélyi Zoltán Számítógépes modellezés

14 Egy velocity Verlet algoritmus SciLab-ban
//************************** //Velocity Verlet algoritmus fd=mopen(get_absolute_file_path('md_ciklus.sce')+'3D_data.out’,'wt') fd2=mopen(get_absolute_file_path('md_ciklus.sce')+'T.out’,'wt') for l = 1:1000 a = gyorsulas(r); // gyorsulas szamitasa az n-edik idolepesben (a_n) for i = 1:N for k = 1:3 r(i,k) = r(i,k) +v(i,k) * dt * a(i,k) * dt^2; v(i,k) = v(i,k) * a(i,k) * dt; // a sebesseg szamitasa elso fele // v_n+1=v_n+(a_n+a_n+1)/2*dt = 0.5*(v_n+a_n)*dt + 0.5*(v_n+a_n+1)*dt end Dr. Erdélyi Zoltán Számítógépes modellezés

15 Egy velocity Verlet algoritmus SciLab-ban
a = gyorsulas(r); // gyorsulas szamitasa az n+1-edik idolepesben (a_n+1), // a sebesseg szamitasahoz kell for i = 1:N for k = 1:3 v(i,k) = v(i,k) * a(i,k) * dt; // a sebesseg szamitasanak masodik fele; // a gyorsulas ujraszamolodik end Dr. Erdélyi Zoltán Számítógépes modellezés

16 Egy velocity Verlet algoritmus SciLab-ban
T(l) = homerseklet(v); mfprintf(fd,'%d\n', N); mfprintf(fd,'#S %d\n', l); for i = 1:N mfprintf(fd,'A '); for k = 1:3 mfprintf(fd,'%g ',r(i,k)); end mfprintf(fd,'\n'); mfprintf(fd2,'%g %g\n', l*dt, T(l)); mclose(fd); mclose(fd2); t = 1:l plot2d(t,T) Dr. Erdélyi Zoltán Számítógépes modellezés

17 Egy velocity Verlet algoritmus SciLab-ban
Valamelyest optimalizált algoritmus a ciklusműveletek kicserélése hatékony mátrixműveletekre az előző algoritmus futási idejének töredéke alatt fut le Dr. Erdélyi Zoltán Számítógépes modellezés

18 Egy velocity Verlet algoritmus SciLab-ban
A script neve: md.sce clear(); //******************** //bemeneti parameterek N = 64; //reszecskek szama L = 10; //kocka oldalhossza vMax = 0.1 //maximalis kezdeti sebessegkomponens n = ceil(N^(1.0/3.0)); //reszecskek szama a 3 koordinata iranyban d = L / n; //racsallando dt = 0.01; //idolepes Dr. Erdélyi Zoltán Számítógépes modellezés

19 Egy velocity Verlet algoritmus SciLab-ban
//************* //inicializalas //reszecskek kezdeti pozicioja i = 1; //reszecske szamlalo for x = 1:n for y = 1:n for z = 1:n if i <= N then r(i,1) = (x ) * d; r(i,2) = (y ) * d; r(i,3) = (z ) * d; end i = i + 1; Dr. Erdélyi Zoltán Számítógépes modellezés

20 Egy velocity Verlet algoritmus SciLab-ban
//reszecskek kezdeti sebessege v = vMax * rand(N,3,'uniform'); Dr. Erdélyi Zoltán Számítógépes modellezés

21 Számítógépes modellezés
//*********** // fuggvenyek function aa=gyorsulas() //gyorsulasok (F/m) szamitasa aa = zeros(N,3); //gyorsulasok nullazasa for i = 1:N-1 //i-j parok tavolsagnegyzetenak szamitasa rij = ones(N-i,1) * r(i,:) - r(i+1:N,:); r2 = sum(rij.^2,2); //LJ: F = 4eps (12sig^12/rij^13 - 6sig^6/rij^7) // = rij 24 eps (2sig^12/rij^14 - sig^6/rij^8) = rij * f f = 24 * (2 * r2.^(-7) - r2.^(-4)); //eps = 1; sig = 1 //a = F/m, de m = 1 F = rij .* [f f f]; ss = sum(F,1); aa(i,:) = aa(i,:) + ss; //i gyorsulasa j hatsara aa(i+1:N,:) = aa(i+1:N,:) - F; //j gyorsulasa i hatasara end endfunction Dr. Erdélyi Zoltán Számítógépes modellezés

22 Egy velocity Verlet algoritmus SciLab-ban
//************************** //Velocity Verlet algoritmus fd=mopen(get_absolute_file_path('md.sce')+'3D_data.out",'wt') fd2=mopen(get_absolute_file_path('md.sce')+'T.out",'wt') for l = 1:1000 a = gyorsulas(); // gyorsulas szamitasa az n-edik idolepesben (a_n) r = r +v * dt * a * dt^2; v = v * a * dt; // a sebesseg szamitasa elso fele // v_n+1=v_n+(a_n+a_n+1)/2*dt = 0.5*(v_n+a_n)*dt + 0.5*(v_n+a_n+1)*dt a = gyorsulas(); // gyorsulas szamitasa az n+1-edik idolepesben (a_n+1), // a sebesseg szamitasahoz kell v = v * a * dt; // a sebesseg szamitasa masodik fele Dr. Erdélyi Zoltán Számítógépes modellezés

23 Egy velocity Verlet algoritmus SciLab-ban
T(l) = sum(v.^2) / (3 * (N - 1)); //ekviparticio tetelebol a homerseklet; k_Botzmann=1 mfprintf(fd,'%d\n', N); mfprintf(fd,'#S %d\n', l); for i = 1:N mfprintf(fd,'A '); for k = 1:3 mfprintf(fd,'%g ',r(i,k)); end mfprintf(fd,'\n'); mfprintf(fd2,'%g %g\n', l*dt, T(l)) mclose(fd); mclose(fd2); t = 1:l; plot2d(t*dt,T) Dr. Erdélyi Zoltán Számítógépes modellezés

24 Egy velocity Verlet algoritmus SciLab-ban
Az algoritmus futásának eredménye hőmérséklet-idő Dr. Erdélyi Zoltán Számítógépes modellezés

25 Egy velocity Verlet algoritmus SciLab-ban
atomok mozgása Dr. Erdélyi Zoltán Számítógépes modellezés

26 Számítógépes modellezés
Alkalmazások Diffúziós együttható Szerkezeti tényezők Hőtágulási együttható Szabadenergia Hibadinamika Olvadáspont Hővezetés Kémiai reakció kinetika Kötési energia Molekuláris konformáció Fonon diszperzió Elasztikus tulajdonságok Plasztikus tulajdonságok Ütközési kaszkádok stb. Dr. Erdélyi Zoltán Számítógépes modellezés

27 Számítógépes modellezés
A módszer korlátai Leginkább korlátozott részecskeszám korlátozott időskála Dr. Erdélyi Zoltán Számítógépes modellezés


Letölteni ppt "Molekuladinamika 3. Alkalmazások A módszer korlátai"

Hasonló előadás


Google Hirdetések