Integrointialgoritmit molekyylidynamiikassa Markus Ovaska 28.11.2008
Esitelmän kulku MD-simulaatiot yleisesti Integrointialgoritmit: mitä integroidaan ja miten? Esimerkkejä eri algoritmeista Hyvän algoritmin kriteerit Oikean menetelmän valinta Yhteenveto
MD-simulaatioista yleisesti Monimutkaisen systeemin (hiukkasten lkm 1) aikakehitys mahdotonta ratkaista analyyttisesti Aineen perusrakenneyksikkönä yleensä atomi Simuloidaan atomien liikettä jonkin vuorovaikutusmallin pohjalta Sovelluskohteita käytännössä rajattomasti: nanosysteemit, biomolekyylit, materiaalitutkimus jne. Tavoitteena saada tietoa aineen ominaisuuksista Tutkittavan systeemin kokoa ja simulaatioaikaa rajoittaa tietokoneiden laskentakapasiteetti Tehokkaammat algoritmit > monimutkaisempia simulaatioita
Simulaation rakenne 1. Annetaan atomien paikoille ja nopeuksille alkuarvot: r i (0), v i (0) 2. Lasketaan atomeihin vaikuttavat voimat: F i (r i ) = V i 3. Integroidaan liikeyhtälöitä numeerisesti aika-askeleen t yli: r i (t) r i (t + t), v i (t) v i (t + t) 4. Lasketaan halutut suureet (energia, lämpötila, paine...) 5. Jos t < t max, palataan vaiheseen 2 6. Lasketaan kerätystä datasta (vaihe 4) tutkittavan kohteen ominaisuuksia
Liikeyhtälön numeerinen integrointi Liikeyhtälö m i a i = F i, tavoitteena ratkaista paikka r i nopeus v = dr dt, kiihtyvyys a = d 2 r dt 2 Paikka voidaan esittää Taylorin sarjana r(t + t) = r(t) + v(t) t + 1 2 a(t) t2 +... Vastaavasti nopeus: v(t + t) = v(t) + a(t) t +... Liikeyhtälön integrointi ajan T yli voidaan siis tehdä jakamalla T lyhyisiin askeliin t = T n ja käyttää Taylorin kehitelmää n kertaa. Tämä on perusta kehittyneemmille algoritmeille.
Predictor-Corrector-menetelmä 1. Ennustetaan paikka r ja sen derivaatat (v, a,...) hetkellä t + t hetken t tietojen perusteella (Taylorin kehitelmästä): r P (t + t), v P (t + t), a P (t + t),... 2. Lasketaan voima + kiihtyvyys hetkellä t + t : a C (t + t) 3. Korjataan ennustettuja suureita uuden kiihtyvyyden avulla > saadaan korjatut suureet r C (t + t), v C (t + t),... Luokitellaan kertaluvun mukaan: montako termiä Taylorin sarjasta esim. Gear5, viidennen kertaluvun integraattori: muuttujina r, v, a, d 3 r dt, d 4 r 3 dt, d 5 r 4 dt 5
Esimerkki: Nopeus-Verlet 1. r(t + t) = r(t) + v(t) t + 1 2 a(t) t2 2. v P (t + 1 2 t) = v(t) + 1 2 a(t) t 3. Lasketaan uudet voimat ja kiihtyvyydet: a(t + t) = 1 mf (t + t) 4. v C (t + t) = v P (t + 1 2 t) + 1 2a(t + t) t = v(t) + 1 2 [a(t) + a(t + t)] t MolDy:ssa hyvin yleisesti käytetty algoritmi Yksinkertainen, nopea laskea Riittävän tarkka useimpiin sovelluksiin, kun t pieni
Multiple time-scale integration Käytetään kahta (tai useampaa) eripituista aika-askelta tpitk = N t lyhyt, N kokonaisluku Jaetaan voimat nopeasti muuttuviin, F nopea ja hitaasti muuttuviin, F hidas Esim. molekyylin sisäinen värähtely paljon nopeampaa kuin molekyylien liike toistensa suhteen: F nopea kuvaa sisäisiä vuorovaikutuksia, F hidas molekyylien välistä voimaa 1. Lasketaan F hidas 2. Päivitetään nopeudet: v v + F hidas m t pitk 2.1 Lasketaan F nopea 2.2 Päivitetään nopeudet: v v + Fnopea m 2.3 Päivitetään paikat: r r + v t lyhyt + 1 2 2.4 Toistetaan N kertaa 3. Palataan kohtaan 1 t lyhyt F nopea m t2 lyhyt
Hyvä integrointialgoritmi? Nopea: liikeyhtälöiden ratkaisuun kuluu vähän laskenta-aikaa Vaatii vähän muistia mitä enemmän termejä Taylorin sarjasta, sitä enemmän muistia tarvitaan tärkeää lähinnä suurille systeemeille Tarkka paikan ja nopeuden suhteen tuottaa atomeille oikeat radat Toteuttaa säilymislait: energia säilyy algoritmi symmetrinen ajankäännön suhteen: t t t Voimat lasketaan vain kerran aika-askelta t kohden Voimien lasku simulaation työläin osuus Vakaa mahdollisimman suurella t:lla
Oikean menetelmän valinta Mikään algoritmi ei ole hyvä kaikessa Pakko tehdä kompromisseja nopeuden ja tarkkuuden välillä Yksinkertaisin menetelmä joka riittää Yleisesti: Monimutkaiset temput voivat aiheuttaa odottamattomia virheitä Simulaation sisältämä fysiikka on ymmärrettävä hyvin! Ohjelmointivirheiden määrä kasvaa ohjelman koon mukana... Nopeus-Verlet ja Gear hyviä perusalgoritmeja, paljon käyttökokemusta Erikoisemmat algoritmit (monta aika-askelta, muuttuva aika-askel jne.) tilannekohtaisesti Uusia algoritmeja kehitetetään jatkuvasti
Käytännön asioita Valmiita ohjelmia ja ohjelman osia runsaasti saatavilla, mutta: voivat sisältää virheitä asian ymmärtää parhaiten tekemällä itse roskaa sisään, roskaa ulos Ohjelman toiminta kannattaa testata kunnolla yksinkertaisia koesysteemejä, joiden käyttäytyminen tunnetaan saadaanko oikeat liikeradat? energian säilyminen?
Yhteenveto MD-simulaatioilla suuri määrä sovelluskohteita atomitason laskennallisessa tutkimuksessa Tehokkaammat algoritmit mahdollistavat monimutkaisempia simulaatioita Liikeyhtälöiden integrointiin monta tapaa, kaikilla kuitenkin sama perusta Parasta integrointialgoritmia ei ole, täytyy valita tilanteeseen parhaiten sopiva Molekyylidynamiikka ei ole vain ohjelmointia, vaan fysiikka sen takana on välttämätöntä ymmärtää