Előadást letölteni
Az előadás letöltése folymat van. Kérjük, várjon
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
Hasonló előadás
© 2024 SlidePlayer.hu Inc.
All rights reserved.