Dies ist eine alte Version des Dokuments!
Im Rahmen des Projektlabor Mathesis, welches im MINTgrün Orientierungsstudium angesiedelt ist, wurde dieses Projekt umgesetzt. Wie bereits der Name andeutet, ist das Ziel des Projekts eine Simulation von Partikeln im dreidimensionalen Raum. Besonders auf die drei Kerneigenschaften Gravitation, Reibung und Kollision wird hierbei wertgelegt.
Unser Programm basiert auf der Bibliothek vpython, welche die graphische Umsetzung ermöglicht. Im Anfang unseres Programms werden die Partikel zweimal erzeugt. Einmal als die Liste „partikel“, welche die einzelnen Partikel als Dictionaries enthält, und einmal als die Liste „kugeln“, welche vpython Objekte enthält, die graphisch dargestellt werden können.
Nach dem definieren einiger Funktionen, auf welche im Detail weiter unten eingegasngen wird, findet sich die Hauptschleife in Form eines while Loops, eine Schleife, welche theoretisch unentlich laufen kann. Die Grundidee hierbei ist, dass jede Iteration in dieser Hauptschleife einen Frame der Simulation bildet. Die Dictionaries aus „partikel“ enthalten sieben Einträge. Hierbei stellen drei die Position im dreidimensionalen Raum dar und- drei weitere Einträge den Geschwindigkeitsvektor. Der letzte Eintrag ist für die Masse, welche zum Beispiel bei der Gravitationsfunktion benötigt wird. In jeder Iteration wird dann die Position eines jeden Partikels aktualisiert, indem auf die alte Position $\vec{p}_{alt}$ der Geschwindigkeitsvektor $\vec{v}$ hinzuaddiert wird.
Es gilt also für die neue Position $\vec{p}_{neu}=\vec{p}_{alt}+\vec{v}$. Auf diese Weise würde zunächst eine gradlinige Bewegung für alle Partikel entstehen. Die Simulation wird aber dadurch interessant, dass in der Hauptschleife vorneweg noch die anderen Funktionen die Geschwindigkeitsvektoren verändern, teilweise entfallen sogar ganze Partikel. Im folgendem werden diese Kerneigenschaften und die damit verbundenen Funktionen erläutert, welche den eigentliche Grund der Simulation darstellen.
Wie oben erklärt besteht unser Algorithmus aus drei Hauptfunktionen, diese werden im folgendem genauer beschrieben.
Die Gravition war die erste und bleibt nach wie vor die wichtigste programmierte Eigenschaft in unserem Code.
$F_g=\gamma\frac{m_1\cdot m_2}{r^2}$
Die Kollision findet genau dann statt, wenn sich zwei Partikel zu nahe kommen, hierbei wird zwischen der Fusion bei langsamen -und Explosion bei schnellen Zusammenstößen unterschieden. Die besondere Herausforderung hierbei bestand darin, dass sich die eigentliche Partikelanzahl verändert. Ein Problem ähnlich wie bei der Gravitation besteht darin, dass auch hier zwischen je zwei Partikeln zunächst der Abstand ermittelt weerden muss, wodurch eine hohe Rechenzeit entsteht. Die beiden folgenden Fälle treten nur ein, wenn der Abstand zwischen zwei Partikeln klein genug ist.
Anschaulich gesprochen, verschmelzen bei der Fusion zwei Partikel zu einem. Im Programm wird hierbei zunächst ein Partikel übernommen. Seine Position bleibt gleich, da sich beide Partikel relativ nah sein sollen. Als nächstes wird der neue Richtungsvektor ermittelt. Da hier der Impulserhaultungssatz wichtig ist, verwenden wir folgende Formel
$\vec{v}_{neu}\cdot(m_1+m_2)=m_1\cdot\vec{v}_1+m_2\cdot\vec{v}_2$
Es wird