Hier werden die Unterschiede zwischen zwei Versionen gezeigt.
Beide Seiten der vorigen Revision Vorhergehende Überarbeitung Nächste Überarbeitung | Vorhergehende Überarbeitung | ||
ss2021:project2:doku [2021/10/10 20:08] pauli_fritze [Kerneigenschaften] |
ss2021:project2:doku [2021/10/14 15:23] (aktuell) pauli_fritze [Reibung] |
||
---|---|---|---|
Zeile 8: | Zeile 8: | ||
=====Kerneigenschaften===== | =====Kerneigenschaften===== | ||
Wie oben erklärt besteht unser Algorithmus aus drei Hauptfunktionen, diese werden im folgendem genauer beschrieben. | Wie oben erklärt besteht unser Algorithmus aus drei Hauptfunktionen, diese werden im folgendem genauer beschrieben. | ||
+ | ====Gravitation==== | ||
Die Gravitation war die erste und bleibt nach wie vor die wichtigste programmierte Eigenschaft in unserem Code. | Die Gravitation war die erste und bleibt nach wie vor die wichtigste programmierte Eigenschaft in unserem Code. | ||
===Theorie=== | ===Theorie=== | ||
- | $F_G=\gamma\cdot\frac{m_1\cdot m_2}{r^2}$ | + | |
$F=m\cdot a$ | $F=m\cdot a$ | ||
- | Als Gravitation bezeichnet man die Anziehungskraft zwischen Massen. Jede Masse im Universum zieht sich gegenseitig an, dabei ist die Stärke der Anziehungskraft abhängig von Masse und Abstand der Massekörper. Die Gravitationskonstante $\gamma$ beträgt im Universum ungefähr $6,67\cdot10^{-11}\frac{m^3}{kg\cdot s^2}$, weshalb die Auswirkung der Gravitation kleiner Massen üblicherweise deutlich schwächer ist als die elektromagnetische Anziehungskraft beispielsweise. In unserer Simulation haben wir größere Konstanten gewählt - dies beschleunigt den Ablauf, sozusagen wie ein Zeitraffer... | + | Als Gravitation bezeichnet man die Anziehungskraft zwischen Massen. Jede Masse im Universum zieht sich gegenseitig an, $F_G=\gamma\cdot\frac{m_1\cdot m_2}{r^2}$ dabei ist die Stärke der Anziehungskraft abhängig von Masse und Abstand der Massekörper. Die Abhängigkeit vom Abstand zwischen den Körpern führt dazu, dass bei sehr geringen Abständen (limes r gegen null) die Gravitationskraft sehr groß wird. Da Körper ihre Masse nicht in einen Punkt konzentrieren, dreidimensionale Objekte sind, kommt es zu Kollisionen, bevor die Stärke der Gravitation sozusagen ins unendliche schießt. [Zur Kollision in unserer Simulation folgt später ein Abschnitt] |
+ | Die Gravitationskonstante $\gamma$ beträgt im Universum ungefähr $6,67\cdot10^{-11}\frac{m^3}{kg\cdot s^2}$, weshalb die Gravitation zwischen kleinen Massen üblicherweise nicht zu einer spürbaren Beschleunigung führt. In unserer Simulation haben wir größere Konstanten gewählt, und somit die Stärke der Anziehungskraft deutlich erhöht. | ||
- | Bei den Berechnungen stoßen wir, sobald mehr als zwei Massekörper im Spiel sind, auf das sogenannte Dreikörperproblem: für drei und mehr Körper ist es bisher (bis auf Spezialfälle) nicht gelungen, exakte analytische Lösungen zu finden, Bahnkurven exakt vorherzusagen. Die Differentialgleichungen beinhalten zu viele unbekannte Variablen... | + | Bei den Berechnungen stoßen wir, sobald mehr als zwei Massekörper im Spiel sind, auf das sogenannte Dreikörperproblem (([[ https://www.spektrum.de/lexikon/physik/dreikoerperproblem/3389 ]])) : für drei und mehr Körper ist es bisher (bis auf Spezialfälle) nicht gelungen, exakte analytische Lösungen zu finden und Bahnkurven genau vorherzusagen, die Differentialgleichungen beinhalten zu viele unbekannte Variablen. |
- | hier mehr dazu lesen: [[https://www.spektrum.de/lexikon/physik/dreikoerperproblem/3389]] | + | Numerische Berechnungen sind dennoch möglich, wobei für jedes Paar von Massekörpern in jedem Zeitschritt die Kraft bestimmt -und aus allen Kräften für die einzelnen Partikel die resultierende Beschleunigung aufsummiert wird. |
+ | Mit dieser neuen Beschleunigung ergibt sich eine aktuelle Momentangeschwindigkeit für jedes Partikel, und die Position im nächsten Zeitschritt wird für die erneute Berechnung verwendet. Mithilfe dieser Methode konnten wir in unserer Simulation die Wechselwirkung vieler Massen aufeinander darstellen. | ||
+ | ===Umsetzung=== | ||
- | Numerische Berechnungen sind dennoch möglich, wobei für jedes Paar von Massekörpern in jedem Zeitschritt die Kraft bestimmt -und aus allen Kräften für die einzelnen Partikel die resultierende Beschleunigung aufsummiert wird. Mit dieser neuen Beschleunigung ergibt sich eine aktuelle Momentangeschwindigkeit für jedes Partikel, und die Position im nächsten Zeitschritt wird für die erneute Berechnung verwendet. | + | In jedem Frame, also Zeitschritt, unserer Simulation, werden die einzelnen Partikel nacheinander betrachtet. |
+ | Dieses Schema zeigt grob die durchlaufenen Schleifen: | ||
- | ===Umsetzung=== | + | Zunächst werden die Abstände zu den anderen Partikeln berechnet, und anschließend entweder eines der beiden Kollisions-szenarien (Fusion/Explosion), oder die Gravitations-beschleunigung berechnet. |
+ | Für die Berechnung der Beschleunigung erstellten wir die Funktion "Gravitation". Als Input nimmt sie die Positionen zweier Partikel (diese sind als x,y,z Koordinate in der Partikelliste gegeben) und die Stärke der Gravitationskonstante, und als Output erhalten wir die Beschleunigung, welche auf Partikel i wirkt. In einem Zeitschritt von einer Sekunde entspricht diese Beschleunigung dem Geschwindigkeitsvektor, welcher durch diese Beschleunigung an dem Partikel ansetzt, da $a=\frac{v}{s}$ gilt. Diese Geschwindigkeitsvektoren werden alle auf die | ||
+ | vorherige Geschwindigkeit von Partikel i hinzu addiert, und es ergibt sich die neue Momentangeschwindigkeit. | ||
- | Die Auswirkung der Gravitation auf die Teilchen in unserer Simulation berechnen wir mit $a=\frac{F}{m}$, wobei | + | Aus physikalischer Sicht steht jeder Frame für eine Sekunde, wobei die Simulation (aus ästhetischen und praktischen Gründen) deutlich schneller abgespielt wird. |
- | $a=\frac{v}{s}$ gilt. | + | |
- | Aus physikalischer Sicht steht jeder Frame für eine Sekunde, wobei die Simulation deutlich schneller abgespielt wird. | + | |
- | {{:ss2021:project2:code_schleife_schema.pdf|}} | + | {{:ss2021:project2:code_schleife.jpg?800|}} |
- | ==Reibung== | ||
- | als einen weiteren Bestandteil unserer Simulation haben wir Reibung eingebaut, welche die Bewegung dämpft, da kinetische Energie umgewandelt wird. | ||
- | |||
- | ====Gravitation==== | ||
- | Die Gravitation war die erste und bleibt nach wie vor die wichtigste programmierte Eigenschaft in unserem Code. | ||
- | ===Theorie=== | ||
- | $F_g=\gamma\frac{m_1\cdot m_2}{r^2}$ | ||
- | ===Umsetzung=== | ||
====Reibung==== | ====Reibung==== | ||
===Theorie=== | ===Theorie=== | ||
+ | Als einen weiteren Bestandteil unserer Simulation haben wir Reibung eingebaut, welche die Bewegung dämpft, da kinetische Energie umgewandelt wird. Es gibt verschiedene Arten von Reibung, Abhängig von beispielsweise der größe der Angriffsfläche des Objekts und der Beschaffenheit der Umgebung durch die es sich bewegt. | ||
+ | Wir haben uns dfür entschieden, abhängig von Geschwindigkeit und Masse der Partikel, einen geringen Geschwindigkeitsverlust zu kalkulieren. | ||
+ | |||
+ | Wenn sich also einige Partikel in einem Kräftegleichgewicht auf stabilen Bahnen bewegen, führt die Reibung in der Simulation dazu, dass sie stetig kleine Anteile ihrer Bewegungsenergie verlieren, und die Bahnen nicht endlos als stabile Bewegung gegeben bleiben. | ||
+ | |||
===Umsetzung=== | ===Umsetzung=== | ||
====Kollision==== | ====Kollision==== |