Vetenskapliga beräkningar III 171 Kapitel 11. Molekldnamik Fsikaliska sstem består i allmänhet av många väelverkande partiklar. I en vattendroppe kan det t.e. finnas mer än 10 1 vattenmolekler, och en fjärran gala kan innehålla mer än hundra miljarder stjärnor. Som vi vet, är N kropparsproblemet i allmänhet olösligt, då N >. Således kan man studera analtiskt ett sstem av två väelverkande kroppar, som t.e. solen och jorden, medan redan trekropparsproblemet saknar analtisk lösning. Detsamma gäller i kvantmekaniken, där man kan beräkna energinivåerna för en väteatom helt eakt, men heliumatomens energinivåer endast approimativt. Vi behöver effektiva numeriska metoder för att simulera dessa mångkropparssstem. En sådan metod är molekldnamiken, som introducerades av Alder och Wainwright år 1957. 11.1 Klassisk mekanik Molekldnamiken bgger på den klassiska mekaniken, som härleder sig från Newtons lagar, och vi skall därför börja med en kort repetition av den analtiska mekaniken. Om kraften kan framställas som den negativa gradienten av ett skalärt potentialfält V, så antar Newtons rörelseekvation för ett partikelsstem formen (om vi antar konservativa krafter) m k ẍ k = V, k = 1,,... Genom att introducera rörelsemängden p k kan detta ekvationssstem skrivas som ett ekvationssstem av första ordningen i derivatorna: p k = m k ẋ k ṗ k = V, k = 1,,.... Med hjälp av den kinetiska energin T = k m k ẋ k/ kan rörelsemängden alternativt uttrckas som p k = T/ ẋ k. Om vi introducerar funktionen L(ẋ 1, ẋ,..., 1,,...) = T V, (Lagranges funktion) så kan ekvationerna ovan uttrckas i formen p k = L ẋ k ṗ k = L, som kan kombineras till d L L = 0 dt ẋ k (Lagranges ekvationer).
Vetenskapliga beräkningar III 17 Enligt variationskalklen är detta ekvationssstem ekvivalent med Hamiltons princip (William Rowan Hamilton, 1834) δ t t 1 L(ẋ 1, ẋ,..., 1,,...)dt = 0, det vill säga, tidsintegralen av Lagranges funktion är ett etremum (vanligen ett minimum). För en endimensionell rörelse är det lätt att visa, att ett sådant variationsproblem leder till en differentialekvation. Antag att f är en funktion av tre variabler, ẋ, t och vi vill bestämma = (t) så, att variationen mellan integralen fdt tagen över den givna kurvan och en närliggande kurva med samma ändpunkter är noll. Vi får då t ( ) t f ( ) f δ f(, ẋ, t)dt = δ + t 1 t 1 ẋ δẋ t f f d dt = δ + t 1 ẋ dt (δ) dt [ ( ) ( )] t f f f = dt = t 1 t t 1 δ d dt [ f δ d dt δ + d ẋ dt ẋ δ )] t f δdt + t 1 ẋ δ ( f ẋ Emedan den sista termen försvinner (eftersom δ = 0 för t = t 1, t ) och δ är godtcklig, så måste ( ) d f f dt ẋ = 0 gälla för att integralen skall vara stationär (Euler, 1744). Eftersom detta resultat lätt kan utsträckas till flere variabler, så följer också Lagranges ekvationer av Hamiltons princip. Om vi uttrcker L med hjälp av generaliserade koordinater q 1, q,... (som beaktar bindvillkoren för rörelsen) så får vi en allmännare form av Lagranges ekvationer d L L = 0. dt q k q k Rörelseekvationerna kan generaliseras också på ett annat sätt. Om den kinetiska energin uttrcks med rörelsemängden T = k p k/m k så får vi ekvationssstemet ẋ k = T p k ṗ k = V, som överensstämmer med konservationslagen för energin T + V = E. Om V inte eplicit beror av tiden, så följer av differentialekvationerna ovan d dt (T + V ) = ( T ṗ k + V ) ẋ k = 0. k p k
Vetenskapliga beräkningar III 173 Om vi nu inför funktionen H(p 1, p,..., 1, ) = T + V, (Hamiltons funktion) så kan rörelseekvationerna skrivas som ẋ k = H p k ṗ k = H Genom att uttrcka dessa ekvationer i generaliserade koordinater q k får vi Hamiltons (kanoniska) ekvationer: q k = H p k ṗ k = H q k Man kan visa, att den kinetiska energin T uttrckt i generaliserade koordinater är en kvadratisk homogen funktion av q k, och av Eulers teorem för homogena funktioner följer då att T = k q k T q k = k q k L q k = k p k q k, om V är oberoende av q k. Detta leder till ett allmännare uttrck för Hamiltons funktion: H = T + V = T (T V ) = k p k q k L. I ett sstem av N väelverkande partiklar har vi förutom väelverkningspotentialen mellan partiklarna (V (r ij )), ofta också en ttre potential U et (r i ). Hamiltons funktion kan då uttrckas H = N i=1 p i m i + N N V (r ij ) + U et (r i ), i>j=1 i=1 där m i och p i betecknar massan, resp. rörelsemängden för den i:te partikeln. För ett sådant sstem kan Hamiltons ekvationer skrivas i formen ṙr i = p i m i ṗp i = f i, där N f i = i U et (r i ) i V (r ij ). j i
Vetenskapliga beräkningar III 174 Av rörelseekvationerna följer, att en bestämd rörelsemängdskomponent p k under vissa omständigheter kan konserveras, dvs ṗ k = 0. Villkoret för detta är att L, och således också H, skall vara oberoende av den motsvarande generaliserade koordinaten q k. För en godtcklig mängd partiklar är det alltid möjligt att finna se generaliserade koordinater, varav tre svarar mot translationer av massmedelpunkten, och tre mot rotationer av sstemet i sin helhet. Om potentialfunktionen V endast beror av storleken av partiklarnas inbördes avstånd, och det inte finns någon ttre potential (dvs U et fattas), så är V, H och L oberoende av dessa se generaliserade koordinater. Härav följer att den totala rörelsemängden P = i p i och det totala rörelsemängdsmomentet L = i r i p i = i m i r i ṙṙṙṙṙ i kommer att bevaras för ett fullständigt isolerat partikelsstem. Man kan också visa, att om V och H inte beror eplicit av tiden (dvs H/ t = 0), så följer av formen på rörelseekvationerna att totala derivatan Ḣ = dh/dt = 0, dvs att Hamiltonfunktionen är en rörelsekonstant. Denna energikonservationslag gäller oberoende av, om det eisterar en ttre potential eller ej, det viktigaste är att sstemet inte påverkas av krafter, som eplicit beror av tiden (eller hastigheten). En annan viktig sak är att rörelseekvationerna ska vara reversibla under tidsomvändning. Genom att bta förtecken för alla hastigheter eller rörelsemängder kommer partiklarna att röra sig bakåt. Om rörelseekvationerna har blivit riktigt lösta, kommer också partiklarnas banor att vara invarianta under tidsomvändning. 11. Verlets algoritm En vanlig metod som används för att lösa differentialekvationer av det slag, som förekommer i de klassiska rörelseekvationerna, är den finita differensmetoden, som vi beskrivit tidigare. Ofta använder man något slag av prediktor korrektormetoder, och proceduren är följande: (a) (b) (c) (d) Partiklarnas positioner, hastigheter, accelerationer etc. uppskattas vid tidpunkten t + t, utgående från deras värden vid tidpunkten t, krafterna, och därmed också accelerationerna a i = f i /m i beräknas i de na positionerna, de uppskattade positionerna, hastigheterna, accelerationerna etc. korrigeras med hjälp av de na accelerationerna, na värden av olika fsikaliska storheter, såsom energier, beräknas, varpå proceduren upprepas. En av de mest använda metoderna för att integrera rörelseekvationerna introducerades av Loup Verlet år 1967. Vi kan härleda den på följande sätt. Newtons rörelseekvationer för ett partikelsstem är m i r i = f i. Om R betecknar sammanfattningen
Vetenskapliga beräkningar III 175 av alla partikelkoordinater (r 1,r,...,r N ) och G betecknar alla de motsvarande accelerationerna (f 1 /m 1,f /m,...,f N /m N ) så kan vi skriva ekvationerna i formen R = G. Genom att tillämpa trepunktsformeln på andra derivatan R får vi R = R(t + t) R(t) + R(t t) t + O( t ). Vi kan också beräkna hastigheten ur differenskvoten: V = ṘṘṘṘṘ = R(t + t) R(t t) t + O( t ). Genom kombination får vi följande ekvationssstem R = G R(t + t) = R(t) R(t t) + t G(t) + O( t 4 ) V = ṘR V (t) = R(t + t) R(t t) t + O( t ), (Verlets algoritm) 1, som är den enklaste metoden att lösa rörelseekvationerna för ett klassiskt mångkropparssstem. För att starta upp en beräkning med Verlets algoritm behöver vi två begnnelsepositioner R(t = 0) och R(t 1 ). I praktiken anges bara begnnelsepositionen R(t = 0) och begnnelsehastigheten V (t = 0). Om kraften antas vara konstant under det första tidsintervallet [0, t], så kan vi approimera R(t 1 ) med R(t 1 ) R(t = 0) + tv (t = 0) + t G(t = 0), där G(t = 0) är den accelerationsvektor, som beräknats i begnnelseögonblicket för konfigurationen R(t = 0). Om det är viktigt, så kan noggrannheten nog förbättras, genom att man t.e. ersätter G(t = 0) i formeln ovan med (G(t = 0)+G(t 1 ))/, där G(t 1 ) beräknats för den konfiguration R(t 1 ), som beräknats med den enkla formeln. Proceduren kan upprepas flera gånger, tills man nått önskad noggrannhet. Verlets algoritm har både fördelar och nackdelar. Den bevarar tdligen rörelseekvationernas invarians under tidsomvändning (se avsn. 11.1), men avrundningsfelet kan småningom förstöra tidssmmetrin. Felet i hastigheten är alltid två storleksordningar högre än i positionen. En annan fördel med Verlets algoritm är att vi ofta bara vill ha reda på partiklarnas positioner, och de beräknas noggrannt av algoritmen. Om partiklarnas hastighet inte behövs, behöver vi inte ens beräkna den, eftersom positionsberäkningarna sker oberoende av hastighetsberäkningarna. Den största nackdelen med Verlets algoritm är att hastigheten beräknas ett steg efter positionen. Detta problem kan avhjälpas genom att vi beräknar hastigheten direkt ur kraften: dv dt = G V (t + t) = V (t) + t G(t) + O( t ). 1 Loup Verlet: Computer eperiments on classic fluids, Phs. Rev. 159 (1967) 98
Vetenskapliga beräkningar III 176 Vi kan också få bättre noggrannhet genom att ersätta G(t) med medelvärdet (G(t) + G(t + t))/. Positionen kan därpå beräknas genom att studera rörelsen inom tidsintervallet [t, t + t] för en konstant acceleration G(t), dvs R(t + t) = R(t) + t V (t) + t G(t). På detta sätt får vi en variant av Verlets algoritm, där hastigheten beräknas för samma tidssteg som positionen: R(t + t) = R(t) + t V (t) + t G(t) + O( t4 ) V (t + t) = V (t) + t (G(t + t) + G(t)) + O( t ). Som vi ser, beräknar denna hastighetsversion av Verlets algoritm både hastigheten och positionen med samma noggrannhet i varje steg. Som ett eempel på användningen av denna metod skall vi tillämpa den på Halles komet, en periodisk komet, som senast passerade nära solen på våren 1986. Kometen rör sig runt solen enligt Newtons gravitationspotential V (r) = G Mm r, där r är avståndet mellan kometen och solen, M är solens och m kometens massa, och G är gravitationskonstanten. Om vi använder relativa koordinater i avseende på sstemets massmedelpunkt, så kan rörelseekvationen för detta tvåkropparssstem uttrckas µ r r r r r = f = GMm r r 3, där µ är den reducerade massan µ = Mm större än kometens. M+m m, eftersom solens massa är mcket Vi antar, att rörelsen startar i den punkt av banan, som är längst bort från solen (apheliet). Två storheter antas vara kända, den totala energin och rörelsemängdsmomentet, som är rörelsekonstanter. Om vi för enkelhetens skull beskriver kometens rörelse i planet, så kan vi sätta 0 = r ma, v 0 = 0, 0 = 0 och v 0 = v min. Enligt astronomiska data är r ma = 5.8 10 1 m och v min = 9.13 10 m/s. Om vi nu tillämpar Verlets algoritm på detta problem så får vi (i+1) = (i) + t v (i) v (i+1) = v (i) + t (i+1) = (i) + t v (i) v (i+1) = v (i) + t [ g (i+1) [ g (i+1) + t g(i) ] + g (i) + t g(i) ], + g (i) sedd först i Kina år 40 f.kr., studerades av Halle och banbestämdes vid passagen 168
Vetenskapliga beräkningar III 177 där tidsintervallets inde har placerats inom parentes. Accelerationens komponenter är g = g r 3 g = g r 3, där r = + och g = GM. Vi kan använda kometens period 76 år som enhet för tid, och banans halva storael a =.68 10 1 m som enhet för längd, och kan då uttrcka utgångsvärdena sortlöst som r ma = 1.97, v min = 0.816 och g = 39.5. Nedan visas ett program som beräknar banan med hjälp av Verlets hastighetsalgoritm. function z=comet(g,0,v0,n,np) % Program som räknar ut positionen för Halles % komet med Verlets hastighetsalgoritm % % initialisering: h = 1/np ; t(1) = 0; (1) = 0; (1) = 0; r(1) = (1); g(1) = -g*0/0^3; g(1) = 0; v(1) = 0; v(1) = v0; % Verlets algoritm: for i=1:n-1 t(i+1) = i*h; (i+1) = (i) + h*(v(i) + h*g(i)/); (i+1) = (i) + h*(v(i) + h*g(i)/); r(i+1) = sqrt((i+1)^ + (i+1)^); g(i+1) = -g*(i+1)/r(i+1)^3; g(i+1) = -g*(i+1)/r(i+1)^3; v(i+1) = v(i) + h*(g(i+1)+g(i))/; v(i+1) = v(i) + h*(g(i+1)+g(i))/; end z = [t;r] ; För att inte räkningen skall ta så för tid på en vanlig PC kan man sätta antalet punkter på tidsaeln till 5001 och steglängden t = 1/500 = 0.0004. Med programmet kan vi då beräkna avståndet från solen som funktion av tiden och upprita kurvan. n=5001 ; np=500; g=39.47848; 0=1.966843; v0=0.815795; z=comet(g,0,v0,n,np); =z(:,1);
Vetenskapliga beräkningar III 178 =z(:,); plot(,) Nedan visas grafen av r(t), avståndet mellan kometen och solen. Enheten på tidsaeln är kometens omloppstid (76 år). Verlets algoritm är inte särskilt noggrann, men oftast räcker noggrannheten till för simuleringen. Om man använder ett för litet antal tidsintervall, märker man snart, att resultatet inte blir förnuftigt! En annan metod som ofta används i molekldnamiken, är halvstegs leap-frog metoden. Den kan uttrckas genom följande ekvationer R(t + t) = R(t) + t V (t + 1 t) V (t + 1 t) = V (t 1 t) + t G(t). I denna metod beräknas hastigheterna först, genom att hoppa över tidskoordinaterna till nästa halvstegsvärde V (t + 1 t) (därav namnet). Under detta steg kan också hastigheten vid tiden t beräknas ur tvåpunktsformeln V (t) = 1 (V (t + 1 t) + V (t 1 t)) (nödvändigt om man också vill beräkna energin vid tiden t). Om vi eliminerar hastigheterna ur ekvationerna, så ser vi att de är algebraiskt ekvivalenta med Verlets algoritm. Formlerna är dock noggrannare än Verlets metod, emedan man inte i något fall bildar skillnaden mellan två stora värden (och eventuellt nästan lika stora tal). I nästa kapitel skall vi studera en annan metod, Gears prediktor-korrektormetod, som också är noggrannare.