Untersuchung von Integrationsmethoden am Beispiel von Mehrkörpersystemen und Visualisierung in einer virtuellen 3D-Welt von Bastian Kayser Bachelor’s Thesis zur Erlangung des akademischen Grades Bachelor of Science (B.Sc.) Gutachter: Dr. Tim Conrad Zweitgutachter: Prof. Dr. Christof Schütte Fachbereich Mathematik und Informatik Freie Universität Berlin September, 2008 c Copyright by Bastian Kayser 2008 There is never time to do it right, but there is always time to do it over. - Murphy’s Law iii Inhaltsverzeichnis Abstract . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . vi Acknowledgments . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . viii 1 Einleitung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 1 2 Einkörpersysteme . . . . . . . . . . . . . . . . . . . . 2.1 Grundlagen . . . . . . . . . . . . . . . . . . . . . . 2.1.1 Das mathematische Pendel . . . . . . . . . 2.1.2 Integratoren . . . . . . . . . . . . . . . . . . 2.2 Formulierungen der Mechanik . . . . . . . . . . . . 2.2.1 Lagrangemechanik . . . . . . . . . . . . . . 2.2.2 Hamiltonmechanik . . . . . . . . . . . . . . 2.3 Numerische Lösungsverfahren . . . . . . . . . . . . 2.3.1 Diskretisierung von Anfangswertproblemen 2.3.2 Integrationsverfahren . . . . . . . . . . . . . 2.4 Theoretische Analyse . . . . . . . . . . . . . . . . . 2.4.1 Explizites Eulerverfahren . . . . . . . . . . 2.4.2 Implizites Eulerverfahren . . . . . . . . . . 2.4.3 Velocity-Verlet-Verfahren . . . . . . . . . . 2.5 Numerische Experimente . . . . . . . . . . . . . . . 2.5.1 Gesamtenergie . . . . . . . . . . . . . . . . 2.5.2 Erhaltung der Pendellänge . . . . . . . . . 2.6 Diskussion und Schlussfolgerungen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 3 4 4 4 6 8 8 9 10 11 14 16 17 17 26 29 3 Mehrkörpersysteme . . . . . . . . . . . . . . . . . . . . . 3.1 Veränderungen und Probleme bei Mehrkörpersystemen 3.1.1 Kräfteauswertungen . . . . . . . . . . . . . . . 3.1.2 Kollisionen . . . . . . . . . . . . . . . . . . . . 3.2 Lösungstrategien . . . . . . . . . . . . . . . . . . . . . 3.2.1 Lösungsstrategien zur Aufwandsreduktion . . . 3.2.2 Lösungsstrategie für Kollisionen . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 31 31 31 31 32 32 33 4 Visualisierung . . . . . . . . . . . . . . . 4.1 Wonderland . . . . . . . . . . . . . . . 4.2 Modellsystem . . . . . . . . . . . . . . 4.3 Implementierung . . . . . . . . . . . . 4.3.1 Aufbau des Partikelsystem . . 4.3.2 Client-Server Kommunikation . 4.3.3 Darstellung des Modellsystems 4.3.4 Programmsteuerung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 35 35 35 37 37 38 38 38 iv . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 5 Zusammenfassung . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 41 Literaturverzeichnis . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 43 v Untersuchung von Integrationsmethoden am Beispiel von Mehrkörpersystemen und Visualisierung in einer virtuellen 3D-Welt Bastian Kayser [email protected] Freie Universität Berlin, 2008 Gutachter: Dr. Tim Conrad [email protected] Zweitgutachter: Prof. Dr. Christof Schütte [email protected] Abstract Der Erkenntnisgewinn in den Naturwissenschaften stützt sich heute zu einem nicht unerhebliche Teil auf Computersimulationen von physikalischen Systemen. Diese sind nicht nur in den Biowissenschaften (z.B. Molekulardynamiksimulationen) sondern auch in anderen Gebieten, z.B. der Astrophysik oder der Materialforschung, von großer Bedeutung. Ohne ein grundlegendes Verständis der dabei verwendeten mathematischen Verfahren und deren Schwierigkeiten ist eine sinnvolle Deutung von Simulationsergebnissen schwierig. In dieser Arbeit sollen daher drei Integrationsverfahren sowohl analytisch als auch numerisch untersucht werden. Zusätzlich soll über die Implementierung eines Mehrkörpersystems in einer 3D-Welt eine Möglichkeit geschaffen werden, das Verhalten und Fehlverhalten von Integrationsmethoden anschaulich darzustellen. vi Untersuchung von Integrationsmethoden am Beispiel von Mehrkörpersystemen und Visualisierung in einer virtuellen 3D-Welt Erklärung Ich versichere hiermit, dass ich die vorliegende Arbeit selbstständig verfasst und keine anderen als die im Literaturverzeichnis angegebenen Quellen benutzt habe. Alle Stellen, die wörtlich oder sinngemäß aus veröffentlichten oder noch nicht veröffentlichten Quellen entnommen sind, sind als solche kenntlich gemacht. Die Zeichnungen oder Abbildungen in dieser Arbeit sind von mir selbst erstellt worden oder mit einem entsprechenden Quellennachweis versehen. Die Arbeit ist in gleicher oder ähnlicher Form noch bei keiner anderen Prüfungsbehörde eingereicht worden. Bastian Kayser 29. September 2008 vii Danksagung Zuallererst möchte ich mich bei Dr. Tim Conrad für die Übernahme der Betreuung, das Engagement, die Korrekturen und die Tipps bedanken, die ich während der Arbeit von ihm erhalten habe. Weiterhin gilt mein besonderer Dank Dr. Carsten Hartmann, der sehr viel Zeit und Geduld für Fragen aufgebracht hat. Ich danke Prof. Dr. Schütte für die Übernahme der Zweitkorrektur. Uwe Kamper, der mir die Arbeit mit Project Wonderland wesentlich erleichtert hat, und Kathrin Trappe danke ich für die angenehmen Stunden im Büro, die hilfreichen Korrekturen und Verbesserungsvorschläge und die netten Mittagessen. Zum Schluss möchte ich mich bei Natalie Gorczynski bedanken. Ohne ihre ständige Aufmunterung, Motivation und verordneten Zwangspausen wäre diese Arbeit kaum zustande gekommen wäre. Bastian Kayser Freie Universität Berlin September 2008 viii Kapitel 1 Einleitung Die Simulation von physikalischen Systemen ist in den Natur- und Ingenieurswissenschaften von großer Bedeutung. Mit ihrer Hilfe lassen sich zusätzliche Erkenntnisse gewinnen und teure und aufwändige Experimente einsparen. Beispiele hierfür sind MolekulardynamikSimulationen, Simulationen zur Entstehung von Galaxien oder Belastungssimulationen von Prothesen. Die zwei wichtigsten Voraussetzung hierbei sind: • Das simulierte System muss sich vergleichbar zum realen System verhalten. • Die Ergebnisse der Simulation müssen in einer angemessenen Zeitspanne verfügbar sein. Von den Anwendungsgebieten hängt ab, wie genau diese Voraussetzungen definiert werden. Diese Arbeit beschäftigt sich mit den mathematischen Verfahren zur Simulation von Mehrkörpersystemen und der Visualisierung in einer virtuellen 3D-Umgebung. Ziel der Arbeit ist es, einige Schwierigkeiten und Probleme bei der Simulation von physikalischen Systemen zu zeigen und anschaulich darzustellen. Dazu wurden drei numerische Integrationsverfahren anhand eines einfachen Beispiels sowohl analytisch als auch numerisch untersucht. Außerdem wurde das Verhalten eines Integrators anhand eines Mehrkörpersystems in der virtuellen 3D-Umgebung Project Wonderland visualisiert. Wie Untersuchungen gezeigt haben [23], eignen sich virtuelle 3D-Umgebungen gut zur Vermittlung von komplexen Inhalten, da sie dem Benutzer ein Gefühl der körperlichen Präsenz vermitteln. Daraus kann sich ein Gefühl für Größenverhältnisse und Bewegungen von Objekten entwickeln, welches bei 2D-Darstellung häufig nicht gegeben ist.Durch Hinzufügen von Interaktivität zur Simulation soll der Lerneffekt verbessert werden, da der Benutzer dadurch die Auswirkungen von Änderungen sofort erleben kann. Als Voraussetzung gilt hierbei, dass die Simulation nicht zu langsam ablaufen darf, da das System ansonsten nicht das Gefühl von Interaktivität vermittelt. Im folgenden Kapitel werden daher drei Integrationsverfahren ausführlich Einkörpersystems untersucht. Im darauf folgenden Kapitel wird erläutert, welche Probleme bei dem Übergang von Einkörper- zu Mehrkörpersystemen auftreten können. Das vorletzte Kapitel beschreibt die Visualisierung eines Mehrkörpersystems. Es stellt somit die praktische Umsetzung der vorherigen theoretischen Betrachtungen dar. 1 2 KAPITEL 1. EINLEITUNG Kapitel 2 Einkörpersysteme Der theoretische Teil der Arbeit untersucht drei Integrationsverfahren sowohl analytisch als auch numerisch am Beispiel eines Einkörpersystems. Als konkretes Beispielsystem dient das einfache mathematische Pendel. Dieses Modellsystem sowie eine Definition von numerischen Integrationsverfahren werden im folgenden Abschnitt 2.1 beschrieben. Anschließend werden in Abschnitt 2.2 zwei wichtige Formulierungen der klassischen Mechanik beschrieben: der Lagrangeformalismus und der Hamiltonformalismus. Für jede dieser Formulierungen werden die Bewegungsgleichungen des Pendels hergeleitet. In Abschnitt 2.3 wird die Diskretisierung von Anfangswertproblemen und die verwendeten numerischen Verfahren formal hergeleitet. In den darauf folgenden beiden Abschnitten dieses Kapitels wird zuerst eine analytische und anschließend eine numerische Untersuchung der Integrationsverfahren durchgeführt. Im letzten Teil dieses Kapitels werden die Beobachtungen zusammen zusammengefasst und diskutiert. Notation In dieser Arbeit werden Orts- bzw. Geschwindigkeitskoordinaten allgemein mit q bzw. q̇ bezeichnet. Die Entwicklung des Ortsvektors über die Zeit wird durch die Funktion q(t) beschrieben. Die dazugehörige Funktion der Geschwindigkeit in Abhängigkeit der Zeit wird als d q̇(t) = q(t) (2.1) dt bezeichnet. In Ausnahmefällen wird die Bezeichnung der Geschwindigkeit davon abweichend gewählt um deutlich zu machen, dass diese unabhängig von q bzw. q(t) ist. Winkel werden, falls nicht anders gekennzeichnet, im Bogenmaß angegeben. 2.1 Grundlagen Dieser Abschnitt beschreibt für das weitere Verständnis dieses Kapitels wichtige Voraussetzungen. 2.1.1 Das mathematische Pendel Als Modellsystem im theoretischen Teil dieser Arbeit dient das einfache mathematische Pendel. 3 4 KAPITEL 2. EINKÖRPERSYSTEME Abbildung 2.1: das mathematische Pendel Dieses Modellsystem wird verwendet, da es ein Standardbeispiel in der theoretischen Mechanik ist. Außerdem lässt es sich in verschiedenen Koordinatensystemen beschreiben und erlaubt die Einführung von Zwangsbedingungen. 2.1.2 Integratoren Physikalische Systeme werden durch ihre Bewegungsgleichungen und Anfangsbedingungen beschrieben. Bei den Bewegungsgleichungen handelt es sich meist um Differentialgleichungen (DFG) 1. oder 2. Ordnung. Da diese DFGs im Allgemeinen keine analytische Lösung besitzen oder diese nicht bekannt ist, muss sie durch numerische Verfahren an diskreten Zeitpunkten angenähert werden. Verfahren dieser Art werden als Integrationsverfahren bezeichnet. In dieser Arbeit sollen folgende Verfahren näher untersucht werden: Das explizite Eulerverfahren. Als einfachstes Integrationsverfahren eignet es sich zur Demonstration von generellen Problemen bei der numerischen Integration. Das implizite Eulerverfahren. Es dient als Beispiel eines impliziten Verfahrens und den damit verbundenen Vor- und Nachteilen. Das Velocity-Verlet-Verfahren. Dieses Verfahren stellt eine Erweiterung des bekannten Störmer-Verlet-Verfahren bzw. Leapfrog-Verfahrens dar. Dieses sind, in der Molekulardynamik und der Astrophysik, weit verbreitete Verfahren. Eine formale Beschreibung der Diskretisierung sowie die mathematische Formulierung der verwendeten Integrationsverfahren werden in den Abschnitten 2.3.1 und 2.3.2 eingeführt. 2.2 Formulierungen der Mechanik Mit Hilfe der klassischen Mechanik lassen sich die Bewegungen von makroskopischen Objekten beschreiben. Dies gilt für Molekülfaltungen ebenso wie für Planetenbewegungen. In diesem Kapitel werden daher zwei wichtige Formulierungen der Mechanik hergeleitet und erläutert. 2.2.1 Lagrangemechanik Als erstes wird die Lagrangemechanik eingeführt. Diese wird durch die Lagrangefunktion (L), die die Differenz von kinetischer (K) und potentieller (U) Energie ist, charakterisiert. 2.2. FORMULIERUNGEN DER MECHANIK 5 L(v, q) = K(v) − U (q) (2.2) Hierbei ist (q, v) ∈ R6N der Vektor der Orte und Geschwindigkeiten von N Körpern im dreidimensionalen Raum. Mit M wird die Massenmatrix bezeichnet. Sie hat folgende Gestalt: m1 m1 m1 M = .. . mN mN mN Mit mi wird die Masse des Körpers i bezeichnet. Aus dem Hamilton’schen Variationsprinzip folgt, dass die Bewegungen eines Systems das Wirkungsintegral Z S= L(q̇, q, t)dt stationär machen. Es kann gezeigt werden, dass die Euler-Lagrange-Gleichungen eine notwendige Bedingung für die geforderte Stationarität des Systems darstellen [18]: d dt ∂L ∂ q̇ − ∂L =0 ∂q (2.3) Durch die hier spezielle Form der Lagrangefunktion (2.2) und der Definition von K(v) = M 2 |v| 2 vereinfachen sich die Bewegungsgleichungen zu M q̈ = −∇q U (q). (2.4) Dies entspricht den Newton’schen Bewegungsgleichungen. Die Lagrangemechanik erlaubt im Gegensatz zur Newton’schen Mechanik die Formulierung des Systems in verallgemeinerten Koordinaten und die Einführung von Zwangsbedingungen. Bewegungsgleichung des Modellsystems Die kartesischen Koordinaten q des Pendels können durch den Auslenkungswinkel α gegenüber der Senkrechten (siehe Abbildung 2.1) durch eine Transformation T dargestellt werden. ( qx = l sin(α) T := qy = −l cos(α) (2.5) 6 KAPITEL 2. EINKÖRPERSYSTEME Hierbei wird vorausgesetzt, dass die Pendellänge l konstant bleibt. Die Geschwindigkeit q̇(t) des Pendels in kartesischen Koordinaten kann über die Winkelgeschwindigkeit α̇(t) wie folgt ausgedrückt werden: d qx (t) = α̇(t)l cos(α(t)) dt d qy (t) = α̇(t)l sin(α(t)) dt (2.6) (2.7) Da sich die kartesischen Koordinaten und Geschwindigkeiten vollständig durch α bzw. α̇ darstellen lassen, reicht diese Koordinate zur Beschreibung des Systems aus. Die Lagrangefunktion 2.2 ergibt sich dann als L(β, α) = m 22 β l + mgl cos(α). 2 (2.8) β bezeichnet hier eine von α unabhängige Winkelgeschwindigkeit. Die aus (2.3) folgende Bewegungsgleichung lautet g α̈ = − sin(α). l (2.9) Lösung der Bewegungsgleichung Eine geschlossene analytische Lösung der Bewegungsgleichung (2.9) ist nur durch die Näherung sin(α) ≈ α, α < 1 zu erreichen, da die Differentialgleichung dann die Form g l annimmt. Hierbei handelt es sich um eine lineare homogene Differentialgleichung. Diese besitzt die Lösung √ √ α(t) = (c1 sin( ωt) + c2 cos( ωt)). (2.10) α̈ = −ω α, ω = Der Beweis erfolgt durch zweimaliges Ableiten von α(t) nach t. √ Für t = 0 folgt, dass c1 = α̇(0) und c2 = α(0). ω 2.2.2 Hamiltonmechanik In der Hamilton’schen Formulierung der klassischen Mechanik wird ein System über seine Gesamtenergie, der Summe aus kinetischer und potenzieller Energie aller Teilchen des Systems, definiert. Als Hamiltonfunktion H(q, p) ergibt sich damit 1 H(q, p) = pT M −1 p + U (q, p). 2 Die Hamiltonfunktion H(q, p) ist also eine Funktion der Energie in Abhängigkeit des Phasenraums. Dabei beschreibt q die Orte und p die Impulse des Systems. M −1 ist die invertierte Massenmatrix. Im dreidimensionalen Raum ist die Hamiltonfunktion auf einem R6N Phasenraum definiert, wobei N die Anzahl der Teilchen des Systems angibt. Die Hamilton’schen Bewegungsgleichungen ergeben sich als q̇ = ∂H ∂p 2.2. FORMULIERUNGEN DER MECHANIK ṗ = − 7 ∂H ∂q Die Ableitung der Hamiltonfunktion nach der Zeit d ∂H ∂H H = q̇ + ṗ dt ∂q ∂p = ∇q U (q) p M −1 − ∇q U (q) p M −1 = 0 (2.11) (2.12) (2.13) zeigt, dass die Hamiltonmechanik energieerhaltend ist. Weiterhin sind die Lösungen der Hamiltonfunktion impuls- und drehimpulserhaltend, wenn die Hamiltonfunktion, wie in den hier betrachteten Fällen, invariant unter Translation und Rotation ist. Da keine explizite Abhängigkeit der kinetischen und potentiellen Energie von der Zeit vorliegt, sind die Lösungen zeitreversibel. Bewegungsgleichung des Modellsystems Die Bewegungsgleichung des mathematischen Pendels soll hier direkt über die potentielle und kinetische Energie erfolgen. Da in diesem Fall die Darstellung der Koordinaten als q = (qx , qy )T beibehalten wird, muss die Pendellänge mit Hilfe einer Zwangsbedingung ϕ(q) konstant gehalten werden. Durch diese Vorgehensweise soll gezeigt werden, welchen Einfluss die Beschreibung des Systems auf die anschließende Diskretisierung hat. Die Hamiltonfunktion des Pendels ist: H(q, p) = 1 |p|2 − mgqx 2m Die eingeführte Zwangsbedingung ϕ(q) hält die Pendelmasse in konstantem Abstand zum Aufhängpunkt des Pendels. Sie ist definiert als ϕ(q) = qx2 + qy2 − l2 = 0 und muss zu jedem Zeitpunkt erfüllt sein. Die Eingliederung der Zwangsbedingung in die Hamiltonfunktion folgt aus dem Lagrange-Multiplikator Theorem und der LegendreTransformation. Das Lagrange-Multiplikator Theorem besagt, dass eine Lagrangefunktion durch Zwangsbedingungen zu der Form L 7→ L + λ ϕ(q) erweitert werden kann. Aus der Legendre-Transformation ergibt sich die Hamiltonfunktion formal durch H := pq̇ − L(q̇, q), mit p := ∇q̇ L(q̇, q). Dadurch erweitert sich die Hamiltonfunktion zu Ĥ(q, p) = H(q, p) + λϕ(q) 1 = pT p − mgqy + λ(qx2 + qy2 − l2 ) 2m (2.14) (2.15) 8 KAPITEL 2. EINKÖRPERSYSTEME Als Bewegungsgleichungen ergeben sich dann q̇ = px m ∂ Ĥ ∂H = = py ∂p ∂p (2.16) m ṗ = − 2.3 −2λqx ∂ Ĥ ∂H ∂ϕ =− −λ = ∂q ∂q ∂q −mgqy − 2λqy (2.17) Numerische Lösungsverfahren In diesem Abschnitt wird kurz die Funktionsweise von numerischen Integrationsverfahren erläutert. Anschließend werden die in dieser Arbeit untersuchten Verfahren hergeleitet bzw. vorgestellt. 2.3.1 Diskretisierung von Anfangswertproblemen Ein physikalisches System kann durch ein Anfangswertproblem (AWP) der Form q̈(t) = f (q, q̇, t), q(0) = q0 , q̇(0) = q̇0 (2.18) beschrieben werden. Dabei handelt es sich um eine Differentialgleichung(DFG) 2. Ordnung. Probleme dieser Art besitzen im Allgemeinen keine analytische Lösung oder sie ist nicht bekannt. Durch Methoden der numerischen Mathematik ist es möglich, Lösungen für das AWP an diskreten Zeitpunkten zu bestimmen, indem dieses diskretisiert wird. Formulierungen hierfür finden sich in [16] und [19]. In dieser Arbeit soll die Formulierung aus [16] verwendet werden. Hier bezeichnet z(t, z0 ) die Lösung des AWP zum Zeitpunkt t ausgehend von z0 = (q0 , q̇0 ). Diese Lösung wird über die Funktion Φt (z0 ) = z(t, z0 ) bestimmt. Diese Funktion gibt für einen Zeitpunkt t die Lösung des AWP mit den Anfangsbedingungen z0 an. Da Φt1 ◦ Φt2 = Φt1+t2 gilt, kann die Funktion ΦT (zi ) , zi = z(ti , z0 ) durch die Funktionskomposition ΦT (zi ) ≈ Φ̂h ◦ ... ◦ Φ̂h (zi ), h · n = T angenähert werden, wenn gilt Φ̂h (zi ) ≈ Φh (zi ) , für h 1. 2.3. NUMERISCHE LÖSUNGSVERFAHREN 9 Numerische Verfahren, die eine solche Näherung berechnen, werden allgemein als Integrationsverfahren bezeichnet. 2.3.2 Integrationsverfahren In diesem Abschnitt werden die verwendeten Verfahren formal hergeleitet. Alle in dieser Arbeit betrachteten numerischen Integrationsverfahren gehören zur Klasse der Einschrittverfahren (ESV). Diese Klasse von Verfahren betrachtet zur Berechnung der Näherung zi+1 nur den Zustand zi . Außerdem sind die verwendeten Verfahren nur zur Lösung von DFGs 1.Ordnung geeignet. Da es sich bei der Bewegungsgleichung (2.9) um eine DFG 2. Ordnung handelt, muss diese in ein System von DFGs 1. Ordnung überführt werden. Dies ist möglich, indem q̈ = f (q, q̇) (2.19) überführt wird in q̇ = v (2.20) v̇ = f (q, v). (2.21) Herleitung der verwendeten Integrationsverfahren Finite Differenzen stellen einen Ansatz dar, um Integrationsverfahren für DGL der Form Ż = f (Z) herzuleiten. Hierbei wird als Näherung angenommen, dass Ż(t) ≈ Z(t + h) − Z(t) h (2.22) gilt. Da eine Näherung für Z(t + h) gesucht ist, ergibt sich durch Umstellen von (2.22) nach Z(t + h) ≈ Z(t) + h f (Z(t)) (2.23) die Berechnungsvorschrift des expliziten Eulerverfahrens. Natürlich muss für (2.21) genauso vorgegangen werden. Die Herleitung des impliziten Eulerverfahrens verläuft analog. Der Unterschied besteht darin, dass Ż(t + h) statt Ż(t) durch finite Differenzen angenähert wird. Dadurch ergibt sich als Berechnungsvorschrift des impliziten Eulerverfahrens Z(t + h) ≈ Z(t) + h f (Z(t + h)). (2.24) Das Verfahren wird implizit genannt, da die Lösung Z(t+h) von sich selbst abhängt. Daher muss bei impliziten Verfahren in jedem Schritt ein Gleichungssystem gelöst werden. Das dritte in dieser Arbeit untersuchte Verfahren ist das Velocity-Verlet-Verfahren. Dieses beruht auf dem bekannten Leapfrog-Verfahren [18]. Die Herleitung kann [7] bzw. [18] entnommen werden. Die Berechnungsvorschrift für das Velocity-Verlet-Verfahren lautet 10 KAPITEL 2. EINKÖRPERSYSTEME h2 −1 M F (qn ) 2 (2.25) h −1 M [F (qn ) + F (qn+1 )]. 2 (2.26) qn+1 = qn + hvn + vn+1 = vn + Dieses Verfahren ist durch seine Form besonders gut geeignet, um ein Gleichungssysteme wie (2.21)/(2.21) zu integrieren. Wichtige Eigenschaften von numerische Integrationsverfahren Folgende physikalische Größen werden von den exakten Lösungen der Bewegungsgleichungen erhalten: • der Gesamtimpuls I := n X mi · vi i=0 • der Gesamtdrehimpuls D := n X (qi − qo ) × mi · vi i=0 • die Gesamtenergie E := K(v) + U (q) Wenn die Entwicklung einer dieser Eigenschaften mit Hilfe eines numerischen Verfahrens untersucht werden soll, muss sie durch das Verfahren erhalten werden. Zwei weitere, häufig geforderte Eigenschaft von numerische Integrationsverfahren sind Symplektizität In dieser Arbeit wird die Definition aus [18] benutzt. Nach dieser ist ein ESV Φ̂ symplektisch, wenn für die Jacobimatrix JΦ̂ gilt JΦ̂T IJ JΦ̂ = IJ , IJ = 0 I . −I 0 (2.27) Symplektische Verfahren haben in der Regel sehr gute Energieerhaltungseigenschaften, die auch über lange Integrationszeiträume bestehen bleiben [18]. Zeitreversibilität Ein numerisches Integrationsverfahren wird als zeitreversibel bezeichnet, wenn eine Umkehrung der Impulse oder eine Umkehr der Integrationsrichtung von h zu −h dafür sorgt, dass das System sich in der Zeit wieder zum Ausgangspunkt zurück entwickelt. Dies ist bei zeitreversiblen Verfahren nur garantiert, falls keine Rundungsfehler auftreten. Die Eigenschaften der hier vorgestellten Methoden zur numerischen Integration werden in den beiden folgenden Abschnitten anhand des Modellsystems untersucht. 2.4 Theoretische Analyse Die hier gemachten Fehleranalysen orientieren sich an [16]. Bei der Fehleranalyse eines numerischen Integrationsverfahrens müssen zwei Arten von Fehlern betrachtet werden: • der Fehler pro Integrationsschritt • der kumulierte Fehler nach n Integrationsschritten 2.4. THEORETISCHE ANALYSE 2.4.1 11 Explizites Eulerverfahren Die Berechnungsvorschrift des expliziten Eulerverfahrens lautet zn+1 = zn + h f (zn ) bzw. qn+1 vn+1 = qn vn +h vn . M −1 F (qn ) (2.28) (2.29) Das explizite Eulerverfahren für den Lagrangeformalismus Aus der Iterationsvorschrift und der Bewegungsgleichung (2.3) ergibt sich folgende Iteration für die Position und die Geschwindigkeit: αn+1 αn βn = +h . (2.30) βn+1 βn (− gl sin(αn )) Fehleranalyse des expliziten Eulerverfahrens Der Fehler bei jedem Integrationsschritt lässt sich über die Taylorentwicklung im Zeitpunkt t abschätzen. Dabei wird angenommen, dass die Anfangswerte des Verfahrens zt der exakten Lösung z(t) der DGL entsprechen. Zur Erinnerung: q(t) (2.31) z(t) = q̇(t) Die Differenz der Taylorentwicklung der exakten Lösung zum numerischen Verfahren ergibt sich als h2 z̈(t) + O(h3 ) − (zt + h f (zt )) 2 h2 = (z(t) − zt ) + h (ż(t) − f (zt )) + z̈(t) + O(h3 ). 2 z(t + h) − zt+h = z(t) + h ż(t) + (2.32) (2.33) Nach Voraussetzung z(t) = zt ergibt sich der lokale Fehler le := z(t + h) − zt+h damit als le = h2 z̈(t) + O(h3 ). 2 (2.34) Nach [16] ergibt sich z̈(t) als z̈(t) = Jf (z(t)) ż(t) = Jf (z(t)) f (z(t)). (2.35) (2.36) Jf (z(t)) bezeichnet die Jacobimatrix von f (...) an der Stelle z(t). Für (2.9) ergibt sich als lokaler Fehler für das explizite Eulerverfahren h2 β(t) leexp = (2.37) g 2 ( l )2 cos (α(t)) sin (α(t)) Der lokale Fehler wächst also in O(h2 ). Für die Abschätzung des globalen Fehlers (ge) muss angenommen werden, dass die Funktion f der Lipschitzbedingung ||f (d) − f (e)|| ≤ L||d − e|| , d, e ∈ D ⊂ R (2.38) 12 KAPITEL 2. EINKÖRPERSYSTEME genügt. Dabei bezeichnet L die Lipschitzkonstante. Der globale Fehler im Integrationsschritt n + 1 ergibt sich aus allen lokalen Fehlern der vorangegangenen n Schritte und dem lokalen Fehler von n → n + 1. Wie beim lokalen Fehler (2.32) erfolgt die Abschätzung über die Differenz der Taylorentwicklung der exakten Lösung zum numerischen Verfahren: h2 z̈(ξ)) − (zn ) + h f (zn )) 2 h2 = (z(tn ) − zn ) + (hż(tn ) − h f (zn )) + z̈(ξ) 2 h2 = (z(tn ) − zn ) + h(f (z(tn )) − f (zn )) + z̈(ξ). 2 gen+1 = (z(tn ) + h ż(tn ) + Durch die Dreiecksungleichung ergibt sich als obere Schranke für ||ge(n+1) || ||gen+1 || ≤ ||z(tn ) − zn || + h||f (z(tn )) − f (zn )|| + ≤ ||z(tn ) − zn || + h L||z(tn ) − zn || + = (1 + h L)||z(tn ) − zn || + = (1 + h L)||gen || + h2 ||z̈(ξ)|| 2 h2 ||z̈(ξ)|| 2 h2 ||z̈(ξ)|| 2 h2 ||z̈(ξ)||. 2 (2.39) (2.40) (2.41) (2.42) Ungleichung (2.40) ergibt sich aus (2.39) durch Anwendung der Lipschitzbedingung. Die Ungleichung (2.40) gibt also eine obere Schranke für den Gesamtfehler im Integrationsschritt n + 1 in Abhängigkeit des Gesamtfehlers im Integrationsschritt n an. Für eine Abschätzung des Gesamtfehlers in Abhängigkeit des Anfangsfehlers ge0 := z(0)− z0 dient die rekursive Beziehung (2.42). Nach [16] erfüllt eine rekursive Ungleichung der Form an+1 ≤ C an + D die obere Schranke an ≤ C n a0 + Cn − 1 D C −1 Mit dieser Überlegung folgt für den globalen Fehler gen aus (2.42): (1 + hL)n − 1 h2 ||z̈(ξ)|| (1 + hL) − 1 2 ||z̈(ξ)|| = (1 + hL)n ||ge0 || + ((1 + hL)n − 1) 2L ||gen || ≤ (1 + hL)n ||ge0 || + (2.43) (2.44) Es wird angenommen, dass die Startwerte der exakten Lösung entsprechen und daher M definiert. Dadurch e0 = 0 gilt. Weiterhin wird M := max ||z̈(ξ)||, n · h = T und K := 2L ξ∈[0,T ] kann (2.44) vereinfacht werden zu ||gen || ≤ Kh(1 + hL)n . (2.45) Die Lipschitzkonstante L entspricht der Norm der Jacobimatrix Jf [16]. Damit ist g L ≤ max(1, | |). l (2.46) 2.4. THEORETISCHE ANALYSE 13 Aus (2.45) ist zu erkennen, dass die Schranke des globalen Fehlers exponentiell mit der Anzahl der Integrationsschritte n wächst. Außerdem zeigt der Faktor Kh, dass der Fehler sich linear zur Schrittweite verhält und daher für den globalen Fehler ge gilt lim ge = 0 (2.47) h→0 solange die Anzahl der Integrationsschritte n konstant gewählt wird. Falls n nicht konstant gewählt wird, sondern gilt T , h n= folgt daraus, dass lim n = ∞. h→0 Allerdings geht der globale Fehler auch hier gegen 0, da der Ausdruck (1 + T n T L) , h = n n die Form der Euler’schen Folge hat und somit lim (1 + n→∞ T n L) = const n folgt. Damit ist das explizite Eulerverfahren konvergent. Dies ist allerdings nicht der Fall, wenn Rundungsfehler mit in die Betrachtung aufgenommen werden. In diesem Fall ist das explizite Eulerverfahren nicht konvergent [1]. Der folgende Abschnitt beschreibt die Berechnung des expliziten Eulerverfahrens für die Bewegungsgleichungen im Hamiltonformalismus. Das explizite Eulerverfahren für den Hamiltonformalismus mit Zwangsbedingung Die Formulierung des Modellsystems im Hamiltonformalismus und insbesondere die Einführung von Zwangsbedingungen hat Auswirkungen auf die Diskretisierung und auf das Integrationsverfahren. Um das System in diskreten Zeitschritten integrieren zu können, wird Ż = f (Z, λ) = px m py m −2λqx −mgqx − 2λqy definiert. Hierbei beschreibt Z = (qx , qy , px , py ) einen Zustand des Systems. Die iterative Berechnungsvorschrift des expliziten Eulerverfahrens lautet Zn+1 = Zn + hf (Zn , λn ). Dabei muss λ immer so gewählt sein, dass für den nächsten berechneten Zustand Zn+1 gilt ϕ(Zn+1 ) = 0. Als Lösung ergeben sich daher die nichtlinearen Gleichungen 14 KAPITEL 2. EINKÖRPERSYSTEME 0 = Zn+1 − Zn + hf (Zn , λn ) (2.48) 0 = ϕ(Zn+1 ) (2.49) Die beiden Gleichungen werden zu folgendem nichtlinearen Gleichungssystem zusammengefasst Fexp (n) (n) (n+1) x qx + h( pm ) − qx (n) py (n) (n+1) q + h( ) − q y y m Zn+1 − Zn + hf (Zn , λn ) (n) (n) (n+1) =0 = = px + h(−2λqx ) − px ϕ(Zn+1 ) (n) (n) (n+1) py + h(−mg + 2λqy ) − py (n+1) 2 (n+1) 2 2 (qx ) + (qy ) −l (2.50) Dieses muss durch numerische Verfahren, wie z.B. dem Gauß-Newton-Verfahren oder dem Levenberg-Marquardt-Verfahren, gelöst werden. Schwierigkeiten beim Lösen des nicht-linearen Gleichungssystems Wichtig für alle diese Verfahren ist die Kondition der Jacobimatrix JF . Falls JF schlecht konditioniert bzw. singulär ist, kann es vorkommen, dass diese Verfahren zu einem falschen Ergebnis kommen oder garnicht konvergieren [6]. Die Jacobimatrix JFexp der Funktion Fexp lautet JFexp −1 0 0 0 0 0 −1 0 0 0 (n) = 0 0 −1 0 −2qx . (n) 0 0 0 −1 2qy h (n+1) (n+1) 2qx 2qy 0 0 0 exp t Die Eigenwerte λexp = (λexp 1 , ..., λ5 ) dieser Matrix sind exp λ = −1, −1, −1, −1, 0 . (2.51) (2.52) Insbesondere ist die Determinante der Jacobimatrix gleich 0. Damit ist die Matrix nicht invertierbar, also singulär. 2.4.2 Implizites Eulerverfahren Das implizite Eulerverfahren für den Lagrangeformalismus Die allgemeine Berechnungsvorschrift für das implizite Eulerverfahren lautet wie folgt: qn+1 = qn + h vn+1 vn+1 = vn + h M −1 (2.53) F (qn+1 ) (2.54) 2.4. THEORETISCHE ANALYSE 15 Mit den Lagrange-Bewegungsgleichungen (2.3) ergeben sich durch Einsetzen von (2.53) in (2.54) und umgekehrt folgende, nichtlineare Gleichungen: g αn+1 = αn + h [βn + h (− sin(αn+1 ))] l g βn+1 = βn + h [− sin(αn + h βn+1 )]. l (2.55) (2.56) Diese müssen in jedem Zeitschritt durch ein geeignetes Verfahren gelöst werden. Theoretische Analyse im Lagrangeformalismus Aufgrund der impliziten Struktur des impliziten Eulerverfahrens ist die Fehleranalyse komplizierter als beim expliziten Eulerverfahren. Daher wird hier das implizite Eulerverfahren als Runge-Kutta-Verfahren (RK-Verfahren) betrachtet [8],[16],[1]. Nach [1] ist das implizite Eulerverfahren ein implizites RK-Verfahren der Ordnung p = 1. Daraus folgt, dass der lokale Fehler in O(h2 ) wächst und das Verfahren damit konsistent ist. Für die Implementierung wurde die Matlabfunktion fzero verwendet. Der Algorithmus wird beschrieben in [9]. Das implizite Eulerverfahren für den Hamiltonformalismus mit Zwangsbedingung Zn+1 = Zn + hf (Zn+1 , λn+1 ) Auch hier ergibt sich wieder ein nichtlineares Gleichungssystem Fimp (n) (n+1) (n+1) qx + h( pxm ) − qx (n+1) p (n) (n+1) y qy + h( m ) − qy Zn+1 − Zn + hf (Zn+1 , λn+1 ) (n) (n+1) (n+1) = 0. = = p + h(−2λq ) − p x x x ϕ(Zn+1 ) (n) (n+1) (n+1) py + h(−mg + 2λqy ) − py (n+1) 2 (n+1) 2 2 (qx ) + (qy ) −l (2.57) Schwierigkeiten beim Lösen des nicht-linearen Gleichungssystems Die Jacobimatrix JFimp der Funktion Fimp lautet JFimp h m −1 0 0 0 h 0 −1 0 0 m = −2hλ 0 −1 0 −2hλ . (n+1) 0 2hλ 0 −1 2hqy (n+1) (n+1) 2qx 2qy 0 0 0 (2.58) Die Determinate dieser quadratischen Matrix ist ungleich 0. Somit ist die Matrix invertierbar und nicht singulär. 16 KAPITEL 2. EINKÖRPERSYSTEME 2.4.3 Velocity-Verlet-Verfahren Die allgemeine Berechnungsvorschrift für das Velocity-Verlet-Verfahren lautet h2 −1 M F (qn ) 2 (2.59) h −1 M [F (qn ) + F (qn+1 )]. 2 (2.60) qn+1 = qn + hvn + vn+1 = vn + Des Velocity-Verlet-Verfahren für den Lagrangeformalismus Durch Einsetzen der Bewegungsgleichung 2.9 erhält man folgende Berechnungsvorschrift h2 g (− ) cos(αn ) 2 l (2.61) h g (− )[sin(αn ) + sin(αn+1 )]. 2 l (2.62) αn+1 = αn + hβn + βn+1 = βn + Eigenschaften des Velocity-Verlet-Verfahrens Eine Herleitung des Verfahrens aus dem Leapfrog- bzw. Störmer-Verlet-Verfahren kann [18] entnommen werden. Das Velocity-Verlet-Verfahren hat die Fehlerordnung 2, ist symplektisch und zeitreversibel. Außerdem ist es stabiler in Bezug auf Rundungsfehler als das klassische Störmer-Verlet-Verfahren. [18]. Des Velocity-Verlet-Verfahren für den Hamiltonformalismus mit Zwangsbedingung Da das Velocity-Verlet-Verfahren Positionen und Geschwindigkeiten getrennt berechnet, ergeben sich folgende drei Gleichungen bzw. Gleichungssysteme: pn h2 F (qn ) + m 2 m h = pn + [F (qn ) + F (qn+1 )] 2 ! (n) (n+1) h −2λ(qx + qx ) = pn + 2 −2mg + 2λ(qy(n) + qy(n+1) ) qn+1 = qn + h (2.63) pn+1 (2.64) (2.65) ϕ(q) = qx2 + qy2 − l2 = 0 (2.66) Wie schon beim expliziten und impliziten Eulerverfahren werden diese zu einem Gleichungssystem zusammengefasst, welches geschlossen gelöst werden muss. Fvv (n) (n) x qx + h( pm )+ (n) h2 2 [−2λqx ] (n+1) − qx (n) (n) qy + h( py ) − h2 [−mg + 2λqy(n) ] − qy(n+1) m 2 Zn+1 − Zn + hf (Zn+1 , λn+1 ) (n) (n) (n+1) (n+1) =0 h = = p + [−2λ (q + q )] − p x x x x 2 ϕ(Zn+1 ) (n) h (n) (n+1) (n+1) py + 2 [−2mg + 2λ (qy + qy )] − py (n+1) 2 (n+1) 2 (qx ) + (qy ) − l2 (2.67) 2.5. NUMERISCHE EXPERIMENTE 17 Schwierigkeiten beim Lösen des nicht-linearen Gleichungssystems Wie beim expliziten und impliziten Eulerverfahren hängt die richtige Lösung des Gleichungssystems von der Beschaffenheit der Jacobimatrix ab. Diese wird für das VelocityVerlet-Verfahren mit JFvv bezeichnet und lautet wie folgt: JFvv −1 0 0 0 (n) h2 q x 2 q (n) 0 −1 0 0 h y (n) (n+1) = 0 −1 0 −h(qx + qx ) . −hλ (n) (n+1) 0 hλ 0 −1 h(qy + qy ) (n+1) (n+1) 2qx 2qy 0 0 0 (2.68) Die Determinante der Matrix ist ungleich 0. Da die Matrix außerdem quadratisch ist, ist sie invertierbar. In den meisten Fällen werden Systeme mit Zwangsbedingungen mit Hilfe der Algorithmen RATTLE und SHAKE berechnet [8], [2]. Während die hier verwendeten Lösungsverfahren alle Variablen des Gleichungssystem gleichzeitig lösen, werden bei RATTLE bzw. SHAKE abwechselnd die Zwangsbedingungen und dann Parameter wie Orte und Impulse bestimmt. Es hat sich gezeigt, dass ein solches Vorgehen bessere Ergebnisse erzielt [12]. 2.5 Numerische Experimente Dieser Abschnitt untersucht die in Abschnitt 2.3.2 vorgestellten Verfahren experimentell auf ihre Eigenschaften. Insbesondere wird das Verhalten der Verfahren in Abhängigkeit der gewählten Schrittweite betrachtet. Dazu wird die Zeitdauer, über die integriert wird, konstant gewählt. Durch Verringern der Schrittweite wird also die Anzahl der Integrationsschritte erhöht. Die Masse des Pendels beträgt 1 Kg, die Pendellänge ist auf 1m festgelegt. Für die Erdbeschleunigung g wurde der Wert 9.81m/s2 angesetzt. Die Schrittweite wird in Sekunden angegeben. Zur Berechnung der Lösung des impliziten Eulerverfahrens im Lagrangeformalismus wurde die Matlab-Funktion fzero mit Standardeinstellung verwendet. Zur Lösung der nichtlinearen Gleichungssysteme, die bei allen Verfahren im Hamiltonformalismus auftreten, wurde die Matlabfunktion fsolve des Optimization-Toolkits verwendet. Als Algorithmus wurde das Levenberg-Marquardt-Verfahren gewählt. Für alle weiteren Einstellung wie z.B. maximale Anzahl der Iterationen, geforderte Genauigkeit der Lösung usw. wurden die Standardeinstellungen gewählt. 2.5.1 Gesamtenergie Als erstes wird die Erhaltung der Gesamtenergie (siehe Abschnitt 2.3.2) untersucht. Die Erhaltung der Gesamtenergie eines geschlossenes Systems ist eine grundlegende Eigenschaft von physikalischen Systemen. Daher sollte sie von numerischen Integrationsverfahren erhalten werden. Das System wurde über eine Zeitdauer von 500 Sekunden integriert. Als Anfangsbedingungen wurde eine Auslenkung von α0 = 10◦ (im Bogenmaß) gewählt. Alle Angaben der Energie beziehen sich auf die Einheit Joule. 18 KAPITEL 2. EINKÖRPERSYSTEME Lagrangeformalismus Die folgenden Abbildungen zeigen die Entwicklung der Gesamtenergie des Systems über die Anzahl der Integrationsschritte. Die verwendete Integrationsschrittweite h ist in den Grafiken angegeben. Abbildung 2.2: Explizites Eulerverfahren Abbildung 2.3: Implizites Eulerverfahren 2.5. NUMERISCHE EXPERIMENTE 19 Abbildung 2.4: Velocity-Verlet-Verfahren Bei einer Schrittweite von h = 0.1 zeigt sich bei den beiden Eulerverfahren (Abbildung 2.2 und 2.3), dass die Energie des Systems nicht erhalten bleibt. Während beim expliziten Eulerverfahren die Energie während der Integration zunimmt, fällt diese beim impliziten Eulerverfahren nach ca. 15 Integrationsschritten auf den Wert 9.81. Dies entspricht der potentiellen Energie des Systems, wenn sich das Pendel in der Ruhelage befindet und keine kinetische Energie besitzt. Die Gesamtenergie beim Velocity-Verlet-Verfahren (Abbilgund 2.4) oszilliert dagegen um einen Wert von 9.81, bleibt aber hier im Mittel konstant. Abbildung 2.5: Explizites Eulerverfahren 20 KAPITEL 2. EINKÖRPERSYSTEME Abbildung 2.6: Implizites Eulerverfahren Bei einer Verkleinerung der Integrationsschrittweite um den Faktor 10 auf h = 0.01 zeigt sich beim expliziten und impliziten Eulerverfahren (Abbildung 2.5 und 2.6) folgendes Verhalten: Beim expliziten Verfahren wächst die Gesamtenergie nach ca. 6000 Integrationsschritten im Mittel linear an. Beim impliziten Eulerverfahren fällt die Gesamtenergie des Systems auf eine Wert von 9.81. Danach ist keine Veränderung der Energie zu erkennen. Abbildung 2.7: Explizites Eulerverfahren: 2.5. NUMERISCHE EXPERIMENTE 21 Abbildung 2.8: Implizites Eulerverfahren Eine weitere Verringerung der Schrittweite auf 0.001 (Abbildung 2.7 und 2.8) führt beim expliziten Eulerverfahren dazu, dass die Gesamtenergie im Mittel nicht mehr ansteigt. Allerdings nimmt die Oszillation der Energie über die Dauer der Integration zu. Das implizite Eulerverfahren verhält sich ähnlich wie bei den vorangegangen Schrittweiten. Die Gesamtenergie nähert sich wieder dem konstanten Wert von 9.81. Allerdings oszilliert die Energie über sehr viel mehr Integrationsschritte als bei den vorangegangen Experimenten. Da das Velocity-Verlet-Verfahren für Schrittweiten von h < 0.1 keine deutliche Änderung im Verhalten zeigt, wurden die Schrittweiten vergrößert um zu überprüfen, wann das Verfahren instabil wird. Abbildung 2.9: Velocity-Verlet-Verfahren 22 KAPITEL 2. EINKÖRPERSYSTEME Abbildung 2.10: Velocity-Verlet-Verfahren Die Abbildung 2.9 zeigt, dass die Energie bei einer Integrationsschrittweite von h = 0.65 oszilliert aber im Mittel konstant bleibt. Bei einer Schrittweite von h = 0.7 ist keine Oszillation mehr erkennbar und die Gesamtenergie steigt bis auf ca. 70000 an (Abbildung 2.10). Hamiltonformalismus Abbildung 2.11: Explizites Eulerverfahren 2.5. NUMERISCHE EXPERIMENTE 23 Abbildung 2.12: Implizites Eulerverfahren Abbildung 2.13: Velocity-Verlet-Verfahren Die Abbildungen 2.11 und 2.12 zeigen, anders als im Lagrangeformalismus, keine Oszillation der Energie. Allerdings steigt auch hier Energie des Systems beim expliziten Eulerverfahren stark an, hier etwa quadratisch mit der Anzahl der Schritte. Die Energie beim impliziten Eulerverfahren fällt nach wenigen Integrationsschritten auf −9.81 und zeigt danach keine Veränderung mehr. Beim Velocity-Verlet-Verfahren (Abbildung 2.13) zeigt sich eine Oszillation der Gesamtenergie. Außerdem nimmt die Gesamtenergie über die Dauer der Integration ab. 24 KAPITEL 2. EINKÖRPERSYSTEME Abbildung 2.14: Explizites Eulerverfahren Abbildung 2.15: Implizites Eulerverfahren Abbildung 2.16: Velocity-Verlet-Verfahren 2.5. NUMERISCHE EXPERIMENTE 25 Eine Verringerung der Schrittweite um den Faktor 10 führt bei den Eulerverfahren zu keiner qualitativen Änderung im Verhalten der Gesamtenergie. Der Anstieg beim expliziten Verfahren ist weiterhin quadratisch(Abbildung 2.14), allerdings setzt dieser Anstieg der Gesamtenergie hier erst nach ca. 18000 Integrationsschritten ein. Beim impliziten Verfahren (Abbildung 2.15) fällt die Gesamtenergie nach ca. 6000 Integrationsschritten auf den Wert −9.81 und bleibt anschließend konstant. Das Velocity-Verlet-Verfahren reagiert auf die Verringerung der Schrittweise mit einem Anstieg der mittleren Energie um etwa 0.03. Dies ist im Vergleich zum expliziten Eulerverfahren mit einem Anstieg von ca. 3 · 106 sehr gering. Abbildung 2.17: Explizites Eulerverfahren Abbildung 2.18: Implizites Eulerverfahren 26 KAPITEL 2. EINKÖRPERSYSTEME Abbildung 2.19: Velocity-Verlet-Verfahren Bei einer Schrittweite von h = 0.001 zeigt die Abbildung 2.17 einen S-förmigen Verlauf des Energieanstiegs beim expliziten Eulerverfahren. Trotz der kleinen Schrittweite wächst die Energie auf ca. 13 · 105 an. Beim impliziten Eulerverfahren fällt die Energie über die gesamte Integrationsdauer und nähert sich gegen Ende dem Wert −9.81. Aus Abbildung 2.19 ist zu erkennen, dass die Energie beim Velocity-Verlet-Verfahren sehr stark oszilliert. Allerdings ist im Gegensatz zu Abbildung 2.16 kein Drift der Gesamtenergie zu erkennen. Sie oszilliert um den Anfangswert von ca. −9.66. 2.5.2 Erhaltung der Pendellänge Da die Pendellänge eine konstante Eigenschaft des Modellsystems ist, ist die Einhaltung dieser Eigenschaft von elementarer Bedeutung für die Korrektheit der Simulation. Die Einhaltung im Lagrangeformalismus ist durch die Koordinatentransformation garantiert. Daher entfällt hier ein numerisches Experiment. Hamiltonformalismus Im Hamiltonformalismus soll die Pendellänge über die Zwangsbedingung konstant gehalten werden. Auch hier wurde als Anfangsbedingung der Simulation α0 = 10◦ gewählt, die Pendellänge wurde mit 1m festgelegt. Der Integrationszeitraum beträgt 500s. Die folgenden Grafiken zeigen den absoluten Fehler in der Erhaltung der Pendellänge in Abhängigkeit der Integrationsschritte. 2.5. NUMERISCHE EXPERIMENTE (a) Explizites Eulerverfahren 27 (b) Implizites Eulerverfahren Abbildung 2.20: Eulerverfahren Abbildung 2.21: Velocity-Verlet-Verfahren Die Abbildungen 2.20(a) und 2.20(b) zeigen den absoluten Fehler bei der Einhaltung der Zwangsbedingung vom expliziten und impliziten Eulerverfahren. Während die Pendellänge beim expliziten Eulerverfahren (Abbildung 2.20(a)) in der Simulation immer weiter vom Startwert abweicht, bleibt dieser Fehler beim impliziten Eulerverfahren (Abbildung 2.20(b)) sehr gering. Hier weicht die Pendellänge in der Simulation höchstens um 4 · 10−7 m vom Startwert ab. Der Fehler beim Velocity-Verlet-Verfahren oszilliert hauptsächlich im Bereich von 1.25 · 10−6 m. Darüber hinaus gibt es vereinzelt auftretende Fehler die größer sind, aber unterhalb von 3 · 10−6 m liegen. 28 KAPITEL 2. EINKÖRPERSYSTEME (a) Explizites Eulerverfahren (b) Implizites Eulerverfahren Abbildung 2.22: Eulerverfahren Abbildung 2.23: Velocity-Verlet-Verfahren Durch eine Verringerung der Schrittweite auf h = 0.01 fällt der Fehler beim expliziten und impliziten Eulerverfahren geringer aus. Während sich das implizite Eulerverfahren ähnlich verhält wie bei größerer Schrittweite, zeigt sich beim explizitzen Verfahren ein Abschnitt in der Fehlerfunktion, bei dem die Abweichung von der vorgegebenen Pendellänge über einen Bereich von ca. 10000 Integrationsschritten konstant bleibt (Abbildung 2.22(a)). Anschließend steigt der Fehler wie in Abbildung 2.20(a) an. Der Fehler beim Velocity-Verlet-Verfahren zeigt auch hier eine starke Oszillation. Die Amplitude der Oszillation, also die Abweichung der Pendellänge vom Startwert, nimmt mit der Anzahl der Integrationsschritte zu. 2.6. DISKUSSION UND SCHLUSSFOLGERUNGEN (a) Explizites Eulerverfahren 29 (b) Implizites Eulerverfahren Abbildung 2.24: Eulerverfahren Abbildung 2.25: Velocity-Verlet-Verfahren Der Fehler beim impliziten Eulerverfahren (Abbildung 2.24(b)) oszilliert bei dieser Schrittweite anfangs stark, bleibt aber unterhalb von 1.5 · 10−7 m. Mit zunehmender Anzahl der Schritte nimmt er weiter ab und nähert sich 0. Die Fehlerkurve beim expliziten Eulerverfahren in Abbildung 2.24(a) ist stärker abgeflacht als bei größeren Schrittweiten. Die Abweichung bleibt insgesamt unter 0.3m. Aus der Abbildung 2.25 für den Fehler beim Velocity-Verlet-Verfahren ist zu erkennen, dass der Fehler sehr stark oszilliert, aber über die gesamte Integrationsdauer unterhalb von 1.5 · 10−7 m bleibt. 2.6 Diskussion und Schlussfolgerungen Aus den theoretischen und numerischen Untersuchungen der Verfahren wird deutlich, dass die Eulerverfahren die Energie nicht erhalten. Selbst bei kleinen Schrittweiten gewinnt bzw. verliert das Modellsystem langfristig Energie. Das Velocity-Verlet-Verfahren erhält dagegen auch bei großen Schrittweiten (h = 0.65) im Lagrangeformalismus die Energie im Mittel. Allerdings erhält das Verfahren die Energie nicht exakt, unabhängig davon wie 30 KAPITEL 2. EINKÖRPERSYSTEME klein die Schrittweite gewählt wird. Im Hamiltonformalismus zeigen alle untersuchten Verfahren schlechtere Energieerhaltungeigenschaften als im Lagrangeformalismus. Die Ursachen hierfür ist Lösung des nichtlinearen Gleichungssystems, welche in jedem Integrationsschritt berechnet werden muss. Da diese numerisch berechnet wird, addiert sich in jedem Integrationsschritt ein zusätzlicher Fehler auf die Lösung der Integrationsverfahren. Bei der Einhaltung der Zwangsbedingungen zeigen sowohl das implizite Eulerverfahren als auch das Velocity-Verlet-Verfahren gute Ergebnisse. Bei beiden Verfahren bleibt der Fehler, unabhängig von den untersuchten Schrittweiten, unter einem absoluten Wert von 3·10−6 m. Der Fehler des explizite Eulerverfahren bleibt im Vergleich dazu auch bei kleinen Schrittweiten etwa um den Faktor 106 größer. Als Ergebnis ist festzuhalten, dass die beiden Eulerverfahren für Simulationen, bei denen es auf die Erhaltung der Gesamtenergie ankommt, unbrauchbar sind, da sie nach einigen tausend Integrationsschritten keine sinnvollen Ergebnisse mehr produzieren. Bei der Erhaltung der Pendellänge liefert das implizite Eulerverfahren auch über viele Integrationsschritte sinnvolle Ergebnisse. Allerdings ist dies auf den Verlust der Gesamtenergie während der Integration zurückzuführen. Da das Pendel während der Simulation Energie verliert, nimmt es eine Ruhelage bei einer Auslenkung von 0◦ ein. In dieser Lage erfährt das Pendel keine auslenkende Kraft und die Orte und Impulse des Systems ändern sich nicht mehr. Dadurch muss das nichtlineare Gleichungssystem (2.57) nur in Bezug auf die Einhaltung der Zwangsbedingung optimiert werden. Abschließend ist zu bemerken, dass das Velocity-Verlet-Verfahren die besten Ergebnisse in Bezug auf Energieerhaltung und die Einhaltung der Zwangsbedingung zeigt. Allerdings muss die Schrittweite bei der Hamiltonformulierung des Systems wesentlich kleiner gewählt werden, damit die Energie erhalten bleibt. Kapitel 3 Mehrkörpersysteme Das in Kapitel 2 untersuchte Modellsystem des mathematischen Pendels bestand aus einem einzigen bewegten Körper, der Pendelmasse. Da die meisten realen Systeme Mehrkörpersysteme sind, z.B. unser Sonnensyteme, ein Billardspiel oder Moleküle, werden in diesem Kapitel einige mögliche Probleme bei Simulationen von Mehrkörpersystemen beschrieben. Anschließend werden in Abschnitt 3.2 Lösungsansätze für die geschilderten Probleme erläutert. 3.1 Veränderungen und Probleme bei Mehrkörpersystemen Ein Mehrkörpersystem ist ein System, welches aus mehreren Objekten und Potentialen bzw. Kräften besteht, die auf diese Objekte einwirken. Im Gegensatz zu einem Einkörpersystem können hier Wechselwirkungen zwischen den Objekten des Systems auftreten. Bei diesen Wechselwirkungen kann es sich z.B. um chemische Bindungen, Kollisionen oder Gravitationskräfte handeln. Daher ergeben sich Schwierigkeiten, die bei Einkörpersystemen nicht auftreten können (siehe Abschnitt 3.1.1). Ein weiteres Problem kann die Kollision zwischen Partikeln des Systems darstellen. Die Art der Probleme hängt allerdings stark vom betrachteten Modellsystem ab. Daher wird in Abschnitt 3.1.2 eine Eingrenzung dieses Problems vorgenommen. Mögliche Lösungsansätze werden in 3.2.2 diskutiert. 3.1.1 Kräfteauswertungen Die potentielle Energie U (q) des in Kapitel 2 untersuchten Einkörpersystems war nur abhängig von der Position der Pendelmasse. In Mehrkörpersystemen mit n Partikeln ist die potentielle Energie U (q) abhängig von n Partikeln bzw. deren Positionen, da hier die Wechselwirkungen der Körper untereinander mit in die potentielle Energie des Systems eingehen. Dies kann zu Problemen bei der Simulation von Systemen dieser Art führen. Ein Beispiel hierfür ist die Berechnung aller paarweisen Wechselwirkungen, z.B. Gravitation, der Körper eines Systems. Ihre Anzahl wächst quadratisch mit der Anzahl der Körper. Dies ist für große Systeme, z.B. mehr als 10000 Körper, nicht effizient genug [15]. Im Folgenden werden nur Systeme betrachtet, deren potentielle Energiefunktionen aus Ein- und Zweikörperpotentialen besteht. Strategien um den quadratischen Rechenaufwand zur Simulation solcher Systeme zu reduzieren, werden im Abschnitt 3.2.1 vorgestellt. 3.1.2 Kollisionen Kollisionen stellen in physikalischen Systemen, unabhängig welche Art von Kollisionen simuliert werden sollen, aus folgenden Gründen ein Problem dar: 31 32 KAPITEL 3. MEHRKÖRPERSYSTEME • In bzw. nach jedem Integrationsschritt muss auf aufgetretene Kollisionen geprüft werden. Dadurch wächst der Rechenaufwand für jeden Integrationsschritt in O(n2 ), da n Abstände zwischen n Partikeln überprüft werden müssen. Wie in Abschnitt 3.1.1 erläutert, ist dieses Laufzeitverhalten bei Simulationen von großen Systemen nicht effizient genug. • Kollisionen können, je nach Wert der Schrittweite und der Geschwindigkeit der Teilchen, unentdeckt bleiben. Dies ist der Fall, wenn sich Teilchen zwischen zwei Integrationsschritten vollständig durchdrungen haben. Dies widerspricht dem realen Verhalten von z.B. Planetensystemen oder Autos. Um Fehler dieser Art in der Simulation zu vermeiden, muss eine geeigneter Wert für die Schrittweite in Abhängigkeit der Geschwindigkeiten und Beschleunigungen gewählt werden. Dieser Wert muss klein genug sein, damit sich Körper auch innerhalb eines Integrationsschritts nicht vollständig durchdringen können. Die folgende Betrachtung beschränkt sich auf ideal-elastische Stöße von starren und nicht starren Körpern, da diese für die später verwendeten Modellsysteme von Bedeutung sind. Bei ideal-elastischen Stößen ist die kinetische Energie der beteiligten Körper vor der Kollision gleich der kinetischen Energie nach der Kollision. Diese Eigenschaft muss in der Simulation erhalten bleiben. Unabhängig davon ergibt sich ein weiteres Problem bei der Kollision von starren Körpern, da sich die Impulse bzw. die Geschwindigkeiten der beteiligten Körper abrupt ändern. Dies stellt für die meisten numerischen Integrationsverfahren ein Problem dar, da die Funktionen von Orten und Geschwindigkeiten an diesen Stellen nicht mehr differenzierbar sind. Da die Verfahren die Ableitungen dieser Funktionen verwenden (2.22), kann keine sinnvolle Näherung für die Geschwindigkeit und den Ort nach der Kollision berechnet werden, wenn die Schrittweite nicht beliebig nahe bei 0 gewählt werden kann. Diese Näherung ist aufgrund der endlichen Maschinengenauigkeit bei Computersimulationen nicht möglich. Bei nicht-starren Körpern tritt dieses Problem nicht auf. Eine genauere Erklärung sowie Lösungsansätze für die geschilderten Probleme finden sich in 3.2.2. 3.2 Lösungstrategien Im folgenden werden einige generelle Lösungsstrategien für die Probleme aus Abschnitt 3.1 dargestellt. 3.2.1 Lösungsstrategien zur Aufwandsreduktion Wie bereits in Abschnitt 3.1.1 erwähnt wurde, sind die meisten Wechselwirkungspotentiale zwischen zwei Teilchen Funktionen ihres Abstands. Beispiele hierfür sind unter anderem die Gravitation oder das Lennard-Jones-Potential. Um die Anzahl der Potential- bzw. Kräfteauswertungen zu reduzieren, wird folgende Vereinfachung gemacht: Es werden nur Potentiale in der Kraftberechnung berücksichtigt, bei denen der Abstand der beteiligten Partikel eine vorher festgelegte Schranke unterschreitet. Die Überlegung hierbei ist, dass die Energie des Potentials sonst zu gering ist, um einen relevanten Einfluss auf das System auszuüben. Somit kann der in 3.1.1 beschriebene rechnerische Aufwand reduziert werden. Allerdings führt dieser sogenannte cutoff von Potentialen und Kräften im System dazu, dass die Gesamtenergie verändert wird. Weiterhin kann der cutoff dazu führen, dass die Gesamtenergie in einer Simulation nicht erhalten bleibt. Diese Fehler sind vernachlässigbar, wenn der cutoff groß genug gewählt wird [18]. Außerdem schränkt diese Methode nur die Anzahl der Kräfteauswertungen ein. Es müssen weiterhin alle O(n2 ) Abstände zwischen n Partikeln berechnet werden. Einen Lösungsansatz für dieses Problem bieten Algorithmen und Datenstrukturen die normalerweise zum 3.2. LÖSUNGSTRATEGIEN 33 Beschleunigen von Kollisionsabfragen verwendet werden. Beispiele sind Spatial Subdivision [10], kd-Trees oder oriented bounding boxes [5]. Weitere Verfahren werden in [11], [5], [17] beschriebenen. Allerdings ist nur die Broadphase 1 dieser Verfahren für die Reduzierung der Abstandsberechnungen von Bedeutung. 3.2.2 Lösungsstrategie für Kollisionen Die Anzahl der Kollisionsabfragen verringert sich durch die in Abschnitt 3.2.1 beschriebenen Verfahren. Die in 3.1.2 beschriebene Schwierigkeit bei der Wahl der Schrittweite lässt sich nicht allgemein lösen. Sie muss in Abhängigkeit der Geschwindigkeiten so gewählt werden, dass Partikel sich nicht in einem Integrationsschritt vollständig durchdringen können. Für das Problem der Kollision von starren Körpern wird in [13] eine Methodik vorgestellt, die die Schwierigkeit der nicht stetig differenzierbaren Trajektorie löst. Hierbei wird das System mit einem Gauß-Runge-Kutta-Verfahren integriert, bis ein Zusammenstoß (Überschneidung zweier Körper) aufgetreten ist. Der Zeitpunkt des Zusammenstoßes wird durch ein Bisektionverfahren bis auf eine festgelegte Genauigkeit aufgelöst. Die Veränderung der Impulse wird anschließend über den Impulserhaltungssatz für idealelastische Stöße berechnet. Eine solche Vorgehensweise erhält die Impulse, Drehimpulse und die Energie des Systems, wenn das verwendete Integrationsverfahren diese exakt erhält. Bei nicht starren Körpern, die sich teilweise durchdringen dürfen, kann die Simulation von Kollisionen über Zweikörperpotentiale erfolgen. Hierzu wird ein Potential definiert, welches eine Kraft beschreibt, die zwei Körper auseinander drückt wenn sie sich überschneiden. Die Form dieses Potentials bestimmt, wie weit sich Teilchen durchdringen können. Ein solches Potential kann allgemein definiert werden als ( f (dij ), dij ≤ (ri + rj ) U (dij ) = . (3.1) 0, dij ≥ (ri + rj ) Die Variable ri bezeichnet hierbei den Radius des Körpers i, dij den Abstand zwischen den Körpern i und j. Die Funktion f (dij ) bezeichnet ein, für das Modellsystem, passend gewähltes Potential, welches mit abnehmendem Abstand dij schnell ansteigt und die Körper so auseinander drückt. Diese Lösung ist energieerhaltend. 1 Broadphase bezeichnet das Vorgehen, möglichst viele Kollisionen von vornherein durch geringen Rechenaufwand ausschließen zu können. 34 KAPITEL 3. MEHRKÖRPERSYSTEME Kapitel 4 Visualisierung Um einen Teil der in den vorherigen Kapiteln entwickelten Theorie zu veranschaulichen, wird ein in Echtzeit simuliertes Mehrkörpersystem in eine interaktive 3D-Umgebung integriert. Dadurch sollen Probleme bei der Simulation und das Verhalten von Integrationsmethoden auch für Betrachter ohne tiefere Kenntnis der Theorie deutlich gemacht werden. Als Grundlage der Implementierung dient das Toolkit Project Wonderland [22]. In den folgenden Abschnitten wird das simulierte Modellsystem spezifiziert und die entstandene Programmstruktur beschrieben. 4.1 Wonderland Als Visualisierungsplattform dient Project Wonderland der Firma Sun Microsystems, Inc. Dabei handelt es sich um ein Open-Source Projekt mit dem virtuelle 3D-Welten aufgebaut werden können. Es wird aus verschiedenen Gründen für diese Arbeit verwendet: • Es basiert vollständig auf der universellen Programmiersprache Java und ist daher portabel. • Das Programm stellt einen großen Teil der Visualisierung, Benutzersteuerung, Netzwerkkommunikation und weitere wichtige Teile der Infrastruktur zur Verfügung. Dadurch kann man sich auf die Implementierung neuer Funktionalität konzentrieren. • Da es sich um ein Open-Source Projekt handelt können alle Teile den eigenen Bedürfnissen angepasst werden. Project Wonderland basiert auf dem Open-Source Gameserver Project Darkstar. Für Details über die Struktur von Project Wonderland und Project Darkstar wird an dieser Stelle auf [14], [22], [21] und [4] verwiesen. In den beiden folgenden Abschnitten wird das Modellsystem vorgestellt und die Programmstruktur der Implementierung vorgestellt. 4.2 Modellsystem Als Modellsystem wurde ein Würfel implementiert, der aus n × n × n Punktmassen, also Partikeln ohne räumliche Ausdehnung, besteht. Alle Partikel haben die gleiche Masse m und sind über ein Zweikörperpotential gekoppelt. Da in der Simulation nur Kräfte und keine Potentiale berechnet werden müssen, 35 36 KAPITEL 4. VISUALISIERUNG Abbildung 4.1: Das abgebildete Modellsystem besteht aus 4 × 4 × 4 Punktmassen (hier Kugeln). Diese sind paarweise über Kräfte (hier Stäbe) verbunden. Zur besseren Übersicht wurden nur die äußeren Partikel mit ihren Wechselwirkungen dargestellt. wird die Kraft definiert als F (qi , qj ) = e · (rm − dij )2 qi − qj , e ∈ R+ . |qi − qj | (4.1) Hierbei ist dij der euklidische Abstand zwischen zwei Partikeln qi und qj . Der Parameter rm gibt den Ruheabstand zwischen zwei Partikeln an, bei dem die Kraft 0 ist. Der Parameter e ist ein linearer Skalierungsfaktor. Da es sich hierbei um eine Kraft handelt, die nur zwischen verbundenen Partikeln wirkt, ist sie für alle nicht verbundenen Partikelpaare 0. Der Würfel befindet sich in einem leeren Raum, der von Wänden umschlossen ist. In diesem Raum wirkt ein homogenes Schwerefeld. Dieses Modellsystem wurde aus folgenden Gründen gewählt: • Es ist aufgrund der geringen Komplexität für einen Betrachter schnell zu begreifen. • Die Implementierung und insbesondere die Visualisierung war in dem knappen Zeitrahmen der Arbeit zu bewältigen. • Die Größe des Systems lässt eine Simulation in Echtzeit zu. Kollisionen von Partikeln untereinander sind in diesem Modellsystem ausgeschlossen. Allerdings kann eine Kollision von Partikeln mit den umgebenen Wänden auftreten. Dies wird durch ein Wandpotential gelöst. Die durch das Potential definierte Kraft wirkt abstoßend auf jedes Teilchen, dass einen Abstand rw zu einer der Wände unterschreitet. Die Kraft ist definiert als k · qi −w , falls d(qi , w) < rw d(qi ,w)2 + |qi −w| FW (qi ) = (4.2) 0 sonst Wenn ein Körper einen Abstand rw zu einer der umgebenen Wände w unterschreitet, wirkt eine entgegengesetzte Kraft auf ihn. Diese wächst für einen Abstand d(qi , w) < 1 quadratisch. Der Parameter k ∈ R+ ist ein linearer Skalierungsfaktor der Kraft. Durch die Konstante 0 < 1 wird verhindert, dass bei der Simulation eine Division durch 0 auftreten kann bzw. die Kraft zu groß und das Teilchen zu stark beschleunigt wird. 4.3. IMPLEMENTIERUNG 4.3 4.3.1 37 Implementierung Aufbau des Partikelsystem In diesem Abschnitt wird die Struktur des implementierten Partikelsystems beschrieben. Ein Ziel der Implementierung war, dass das System einfach zu verändern und zu erweitern ist. Dies betrifft vor allem die Kräfte, die Partikel und das verwendete numerische Integrationsverfahren. Um dies zu gewährleisten wurden für die Kräfte und das Integrationsverfahren Java-Interfaces definiert. Im folgenden wird die entstandene Programmstruktur beschrieben. Kräfte Jede implementierte Kraft enthält eine Variable vom Typ Vector,die Objekte vom Typ Particle enthält. Nur auf diese Objekte wirkt die Kraft. Das Interface Forces, das jede neue Kraft implementieren muss, enthält zwei Funktionsprototypen: • void addParticle(Particle p). Über diese Funktion werden Partikel einer Kraft hinzugefügt. • void calculateForce(). Diese Funktion berechnet für jeden Partikel die auf ihn wirkende Kraft und addiert diese auf Gesamtkraft, die auf den Partikel wirkt. Integrationsverfahren Jedes verwendete Integrationsverfahren benötigt die Partikel des Systems. Außerdem muss das Java-Interface Integrator implementiert werden. Dieses definiert die Funktion void nextStep(double h). Beim Aufruf dieser Funktion muss das Integrationsverfahren einen Integrationsschritt der Länge h machen. Der Parameter wird normalerweise vor dem Start einer Simulation vom Benutzer fest gewählt. In der Implementierung wurde das Velocity-Verlet-Verfahren benutzt, um das Modellsystem zu berechnen. Partikel Jedes Partikel des Systems wird als Objekt vom Typ Particle implementiert. Jedes dieser Objekte enthält: • eine eindeutige ID id • seine Masse m • seinen Radius r • die aktuelle und die vorangegangene Position qn und qn−1 • die aktuelle und die vorangegangene Geschwindigkeit vn und vn−1 • die aktuelle und die vorangegangene Kraft Fid (qn ) und Fid (qn−1 ) Da nur die Orte und Geschwindigkeiten eines vorangegangen Integrationsschritts gespeichert werden, ist bisher nur die Verwendung von Einschrittverfahen möglich. Partikelsystem Alle Partikel, Kräfte und das verwendete Integrationsverfahren werden in dem Objekt ParticleSystem kombiniert. Hier wird das gesamte Mehrkörpersystem inklusive aller Kräfte und des Integrationsverfahrens initalisiert. Außerdem werden in dieser Klasse die Partikel den entsprechenden Kräften zugeordnet. 38 4.3.2 KAPITEL 4. VISUALISIERUNG Client-Server Kommunikation Um die Simulation des Mehrkörpersystems auf den Clients darstellen zu können, müssen die Positionen der Partikel den Clients mitgeteilt werden. Bei dieser Visualisierung werden zusätzlich auch die Geschwindigkeiten aller Teilchen übertragen. Außerdem müssen Benutzeraktionen an den Server übertragen werden, damit dieser in geeigneter Weise reagieren kann. Bei die hier beschriebene Implementierung benutzt zur Kommunikation von der Oberklasse CellMessage abgeleitete Klassen. Eine genaue Beschreibung der Funktionalität dieser Oberklasse kann [20] entnommen werden. An dieser Stelle soll nur erwähnt werden, dass der Server nach jedem Integrationsschritt alle Positionen und alle Geschwindigkeiten in Form von Floatwerten an alle Clients sendet. Dazu dient die ParticleCellUpdateMessage Klasse. Benutzeraktionen werden vom Client über ParticleControllMessage-Objekte an den Server geschickt. In der gegenwärtigen Implementierung können Benutzer die Simulation anhalten sowie neu starten. Diese Aktionen werden durch in Textform in den MessageObjekten kodiert. 4.3.3 Darstellung des Modellsystems Das Modellsystem wurde, wie in Abbildung 4.1 zusehen ist, als einfaches Kugel-StabModell dargestellt. Die Farben der Kugeln sollen einen Eindruck für ihre momentane Geschwindigkeit vermitteln 1 . Diese Darstellung beruht auf der Darstellung aus [14] und wurde gewählt, da sie mit geringem Aufwand implementierbar ist und ausreicht, um die wichtigsten Teile des Modellsystem anschaulich zu visualisieren. Eine weitere wichtige Anforderung die Visualisierungen ist die flüssige Darstellung der Simulation, da Sprünge oder Verzögerungen in der Darstellung dem Beobachter ein falsches Verhalten des simulierten Systems vermitteln. Um dies zu vermeiden, werden die vom Server geschickten Nachrichten auf dem Client in eine Queue geschrieben. Erst wenn die Queue eine gewisse Größe erreicht hat, werden Nachrichten daraus gelesen und entfernt. Durch dieses Vorgehen haben kurze Verzögerungen bei der Datenübertragung vom Server zum Client keinen Einfluss auf die Darstellung. Falls eine Verzögerungen so lang sind, dass die Queue in dieser Zeit geleert wird, ist eine flüssige Darstellung nicht möglich. Da die berechneten Zeitpunkte und Geschwindigkeiten diskrete Zustände darstellen, würde das System in der Darstellung von einem Zustand i in den nächsten Zustand i + 1 “springen” statt sich dahin zu entwickeln. Dies widerspricht der gewohnten Wahrnehmung von Bewegungen und sollte daher vermieden werden. Dafür muss die Bewegung der Partikel von den Positionen q i zu q i+1 in der Visualisierung durch eine gradlinige Bewegung interpoliert werden. Dies gilt auch für die Zylinder, mit denen die Bindungen dargestellt werden. Um dies zu erreichen wurden Interpolatoren-Objekte verwendet. Diese gehören zur Java3D API, auf der die gesamte Darstellung von Project Wonderland beruht. Details dieser Funktionalität können [3] entnommen werden. 4.3.4 Programmsteuerung An dieser Stelle soll kurz die Benutzerinteraktion mit der Simulation geschildert werden. Benutzer haben die Möglichkeit in die Simulation einzugreifen. In der augenblicklichen Implementierung beschränkt sich diese Interaktivität auf das pausieren und das Neustarten der Simulation und damit der Darstellung. Allerdings bringen diese Funktionalitäten das Problem mit, dass sie vom ausführenden Client über den Server zu allen anderen Clients 1 Ruhende Partikel werden blau dargestellt, je höher die Geschwindigkeit eines Partikels ist, umso mehr ins Rote verschoben ist seine Farbe 4.3. IMPLEMENTIERUNG 39 weitergeleitet werden muss. Außerdem soll der Benutzer nicht zu lange auf eine von ihm getätigte Aktion warten müssen, da sonst das Gefühl der Interaktivität verloren geht. Am Beispiel der Benutzeraktion “Simulation neu starten” wird erläutert, wie diese Schwierigleiten glöst wurden: Die Ausführung dieses Befehls (hier Drücken der Taste ’r’) führt zu einem sofortigen Löschen der Queue (4.3.3), was wiederum zu einem Anhalten der Visualisierung führt. Außerdem werden alle weiteren ankommenden Updates der Positionen der Teilchen ignoriert. Erst danach wird eine Nachricht gesendet, die dem Server signalisiert die Simulation neu zustarten. Wenn der Server diese Nachricht erhält, wird eine Flag gesetzt die verhindert, dass während der Phase des Neustarts ein anderer Client den Server neustarten kann. Anschließend wird eine Nachricht an alle Clients gesendet, die daraufhin ihre Queue löschen und keine weiteren Positionsupdates des Servers akzeptieren. Erst danach wird das System neu gestartet. Als letztes sendet der Server allen Clients die Nachricht, dass der Vorgang des Neustartens abgeschlossen ist. Diese akzeptieren daraufhin wieder Positionsnachrichten und die Darstellung läuft wie gewohnt ab 4.3.3. 40 KAPITEL 4. VISUALISIERUNG Kapitel 5 Zusammenfassung In dieser Arbeit wurde die Funktionsweise von numerischen Integrationsverfahren anhand von Beispielen untersucht und visualisiert. Als Modellsystem diente in den theoretischen Betrachtungen und den numerischen Experimenten das mathematische Pendel. Dabei wurde deutlich, dass sowohl das explizite als auch das implizite Eulerverfahren für Simulationen aufgrund ihrer Energieerhaltungseigenschaften ungeeignet sind. Das VelocityVerlet-Verfahren eignet sich dagegen für längere Simulation von physikalischen Systemen. Nachdem das Velocity-Verlet-Verfahren als Integrationsverfahren für die spätere Visualisierung identifiziert worden war, wurde in Kapitel 3 beschrieben, welche zusätzlichen Schwierigkeiten bei der Simulation von Mehrkörpersystemen im Vergleich zu Einkörpersystemen auftreten können. Diese betrafen das Laufzeitverhalten und das Auftreten von Kollisionen. Für diese Probleme wurden Lösungsansätze beschrieben, die hauptsächlich aus dem Bereich der Kollisionserkennung stammen. Nach dieser ausführlichen theoretischen Betrachtung von Mehrkörpersystemen und Integrationsverfahren, wurde in Kapitel 4 die Visualisierung eines Mehrkörpersystems in einer virtuellen 3D-Umgebung beschrieben. Dabei wurde ein interaktives System geschaffen, welches sich zur dreidimensionalen Darstellung von physikalischen Systemen und deren Berechnung in Project Wonderland eignet. Mit diesem System kann das Verhalten von physikalischen System und insbesondere von Integrationsverfahren anschaulich dargestellt werden. Zusätzlich kann das System verändert und einfach erweitert werden. 41 42 KAPITEL 5. ZUSAMMENFASSUNG Literaturverzeichnis [1] A.Quarteroni, R.Sacco, and F.Saleri. Numerische Mathematik 2. Springer Verlag, 2000. [2] Eric Barth, Krzysztof Kuczera, Benedict Leimkuhler, and Robert D. Skeel. Algorithms for constrained molecular dynamics. Journal of Computational Chemistry, 16:pp 1192–1209, 1995. [3] Dennis J. Bouvier. Getting Started with the Java 3D API - A Tutorial for Beginners. Sun Microsystems, Inc., 1999. [4] Brendan Burns. Darkstar: The Java Game Server. O’Reilly, 2007. [5] Ming C.Lin, Dinesh Manocha, Jon Cohen, and Stefan Gottschalk. Collision detection: Algoritms and applications. [6] Peter Deuflhard. Newton Methods for Nonlinear Problems: Affine Invariance and Adaptive Algorithms. Springer Verlag, 2004. [7] D.Frenkel and B.Smit. Understanding Molecular Simulation: From Algorithms to Applications. Academic Press, 2002. [8] E.Hairer, C.Lubich, and G.Wanner. Geometric Numerical Integration: StructurePreserving Algorithms for Ordinary Differential Equations. Springer Verlag, 2002. [9] Forsythe, G. E., M. A. Malcolm, and C. B. Moler. Computer Methods for Mathematical Computations. Prentice-Hall, 1976. [10] Scott Le Grand. Broad-phase collision detection with cuda. 2007. [11] Takahiro Harada. Real-time rigid body simulation on gpus. 2007. [12] Dr. Carsten Hartmann. persönliche Korrespondenz. [13] Galina Kalibaeva, Michele Di Pierro, Giovanni Ciccotti, Carsten Hartmann, and Christof Schütte. Fast simulation of polymer chains. 2008. [14] Uwe Kamper. 3D-Visualisierung und Simulation von Biomolekülen innerhalb der 3D-Umgebung Project Wonderland. 2008. [15] lars Nyland, Mark Harris, and Jan Prins. Fast n-body simulation with CUDA. 2007. [16] Benedict Leimkuhler and Sebastian Reich. Simulating Hamiltonian Dynamics. Cambridge University Press, 2004. [17] Rodrigo G. Luque, Jo ao L. D. Comba, and Carla M. D. S. Freitas. Broad-phase collision detection using semi-adjusting bsp-trees. 43 44 LITERATURVERZEICHNIS [18] M.Griebel, S.Knapek, G.Zumbusch, and A.Caglar. Numerische Simulation in der Moleküldynamik. Springer Verlag, 2004. [19] M.Hermann. Numerik gewöhnlicher Differentialgleichungen. schaftsverlag, 2004. Oldenburg Wissen- [20] Jordan Slott. Extending project wonderland by creating new cell types. http://wiki.java.net/bin/view/Javadesktop/ProjectWonderlandNewCell, July 2008. [21] Sun Microsystems, Inc. Project darkstar. http://projectdarkstar.com/. [22] Sun Microsystems, Inc. Project wonderland: Toolkit for building 3d virtual worlds. https://lg3d-wonderland.dev.java.net/, 2008. [23] Martin Usoh, Christina Alberto, and Mel Slater. Presence: Experiments in the psychology of virtual environments.