Simulation von Teilchenbewegungen SvT, by GSA: Unterschied zwischen den Versionen
Mgrill (Diskussion | Beiträge) |
|||
Zeile 19: | Zeile 19: | ||
==Mathematischer Hintergrund== |
==Mathematischer Hintergrund== |
||
Die Komponenten der beeden Vektoren <math>\vec{v_1}</math> und <math>\vec{v_2}</math> in Abhaengigkeit der Komponenten vor dem Stoss: |
Die Komponenten der beeden Vektoren <math>\vec{v_1}</math> und <math>\vec{v_2}</math> in Abhaengigkeit der Komponenten vor dem Stoss (relativ umständlich): |
||
<math>v'_{1x} = sin^2 \varphi \cdot v_{1x} + cos \varphi \cdot sin \varphi \cdot v_{1y} + cos^2 \varphi \cdot |
<math>v'_{1x} = sin^2 \varphi \cdot v_{1x} + cos \varphi \cdot sin \varphi \cdot v_{1y} + cos^2 \varphi \cdot |
||
Zeile 49: | Zeile 49: | ||
''Eingaben:'' |
''Eingaben:'' |
||
1.) Simulationszeit mit |
1.) Simulationszeit mit Stepping |
||
2.) Startmatrix |
2.) Startmatrix |
||
Zeile 90: | Zeile 90: | ||
*Plotten* |
*Plotten* |
||
zuerst |
zuerst: plot (konnte keine gefuellten Kugeln erstellen) |
||
danach Marker (line; die Markersize konnte nicht beliebig geaendert werden) |
danach: Marker (line; die Markersize konnte nicht beliebig geaendert werden) |
||
final patch und fill verwendet; ==> beste performance |
final: patch und fill verwendet; ==> beste performance |
||
*Berechnung der Stoesse* |
*Berechnung der Stoesse* |
||
Zeile 101: | Zeile 101: | ||
Aufbau des Programms |
Aufbau des Programms |
||
Es gibt eine Klasse sphere die Kugeln |
Es gibt eine Klasse sphere die Kugeln representiert |
||
die Kugeln werden durch die matrix geladen |
die Kugeln werden durch die matrix geladen |
||
selbe Kugeln werden auch verwendet um die Wand zu representieren |
selbe Kugeln werden auch verwendet um die Wand zu representieren |
||
Zeile 108: | Zeile 108: | ||
generell gibt es Probleme mit der Berechnung des Stosses; |
generell gibt es Probleme mit der Berechnung des Stosses; |
||
es kann passieren das sich 2 Kugeln vor dem naechsten Step schon beruehren; dadurch funktioniert die Kollisionsberechnung falsch; |
es kann passieren das sich 2 Kugeln vor dem naechsten Step schon beruehren; dadurch funktioniert die Kollisionsberechnung falsch; |
||
weiter hat die Wahl des Stepings einen grossen einfluss; je kleiner sie gewaehlt wird, desto genauer wird gerechnet; das |
weiter hat die Wahl des Stepings einen grossen einfluss; je kleiner sie gewaehlt wird, desto genauer wird gerechnet; das Stepping beeinflusst wie viele Berechnungsschritte übersprungen werden |
||
Darstellungsprobleme: |
Darstellungsprobleme: |
Version vom 16. Jänner 2008, 12:32 Uhr
Inhaltsverzeichnis
Ziel
Ziel des Projektes ist es, die Bewegung von Gasteilchen zu simulieren. Die Umsetzung soll mit Matlab auf Objektorientierung erfolge.
Physkalischer Hintergrund
1.) Annahmen
- alle Teilchen haben die selbe Masse m
- alle Teilchen haben das selbe Volumen V
- zwichen den Teilchen gibt es keine Wechselwirkungen
- es gibt keine Reibungsverluste
- die Teilchen bewegen sich nur in der x - y Ebene
2.) Grundlagen
- Energieerhaltung [math]\frac{m \cdot v^2}{2} = const.[/math]
- Impulserhaltung [math]m \cdot v = const.[/math]
Zwischen den Teilchen treten elastische zentrale Stoesse auf, weiter wird am Rande ein elastischer Stoss gegen eine Wand auftreten.
Mathematischer Hintergrund
Die Komponenten der beeden Vektoren [math]\vec{v_1}[/math] und [math]\vec{v_2}[/math] in Abhaengigkeit der Komponenten vor dem Stoss (relativ umständlich):
[math]v'_{1x} = sin^2 \varphi \cdot v_{1x} + cos \varphi \cdot sin \varphi \cdot v_{1y} + cos^2 \varphi \cdot v_{2x} + cos \varphi \cdot sin \varphi \cdot v_{2y} [/math]
[math]v'_{1y} = sin^2 \varphi \cdot v_{1y} + cos \varphi \cdot sin \varphi \cdot v_{1x} + cos^2 \varphi \cdot v_{2y} + cos \varphi \cdot sin \varphi \cdot v_{2x} [/math]
[math]v'_{2x} = cos^2 \varphi \cdot v_{1x} + cos \varphi \cdot sin \varphi \cdot v_{1y} + sin^2 \varphi \cdot
v_{2x} + cos \varphi \cdot sin \varphi \cdot v_{2y} [/math]
[math]v'_{2y} = cos^2 \varphi \cdot v_{1y} + cos \varphi \cdot sin \varphi \cdot v_{1x} + sin^2 \varphi \cdot v_{2y} + cos \varphi \cdot sin \varphi \cdot v_{2x} [/math]
Zentraler elastischer stoss von 2 Kugeln
Programmiertechnischer Hintergrund
Die Umsetzung erfolgt objektorientiert;
- Klasse Sphere
Programmaufruf
Eingaben:
1.) Simulationszeit mit Stepping
2.) Startmatrix
- Geschwindigkeit der Teilchen
- Startposition der Teilchen
4.) Export als Bildserie
Ausgabe
Es wird ein movie berechnet der betrachtet werden kann
typischer Aufruf
finalmain(100,1,300,0.1,'startmatrix3.txt')
100 .................. Endzeit der Simulation [ms]
1 .................... gibt jedes Bild aus [1]
300 .................. Laenge des Simulationsbereichs (Kantenlaenge a eines Quadrates) [pixel]
0.1 .................. stepping [1]
'startmatrix3.txt' ... Matrix mit Startwerten der Teilchen
typische Startmatrix
20 20 .5 0 3
25 25 0 0 3
typische Ausgabe
Simulation einiger Teilchen; das aktuelle Bild is oben mitte zu erkennen, die roten Punkte sind die Teilchen; der Rahmen stellt den begrenzenden raum dar, das Grid diehnt nur der besseren veranschaulichung
Werdegang der Software
*Plotten* zuerst: plot (konnte keine gefuellten Kugeln erstellen) danach: Marker (line; die Markersize konnte nicht beliebig geaendert werden) final: patch und fill verwendet; ==> beste performance *Berechnung der Stoesse* zuerst direkt berechnung zwischen 2 Objekten gab immer wieder Probleme das 2 Kugeln seltsame Wege nehmen konnten danach umstellung auf die Transformationsmethode
Aufbau des Programms
Es gibt eine Klasse sphere die Kugeln representiert die Kugeln werden durch die matrix geladen selbe Kugeln werden auch verwendet um die Wand zu representieren
Probleme:
generell gibt es Probleme mit der Berechnung des Stosses; es kann passieren das sich 2 Kugeln vor dem naechsten Step schon beruehren; dadurch funktioniert die Kollisionsberechnung falsch; weiter hat die Wahl des Stepings einen grossen einfluss; je kleiner sie gewaehlt wird, desto genauer wird gerechnet; das Stepping beeinflusst wie viele Berechnungsschritte übersprungen werden
Darstellungsprobleme: spheres.m Zeile 53: Umrechnung zwischen Inch und Pixel