Simulation von Teilchenbewegungen SvT, by GSA

Aus Physik
Zur Navigation springen Zur Suche springen

Ziel

Ziel des Projektes ist es, die Bewegung von Gasteilchen zu simulieren. Die Umsetzung soll mit Matlab auf Objektorientierung erfolgen.

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:

[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]

Verwendete Methode:

Berechnung mittels eines Spezialfalles (1 teilchen in Ruhe, anderes nur in x-Richtung eine Geschwindigkeit). Andere Fälle werden auf Spezialfall transformiert. Analog werden die fehlenden Geschwindigkeitskomponenten berechnet (nur die 2 Teilchen vertauscht). Letztendlich werden alle addiert und natürlich die Rücktransformation nicht vergessen.

Zugrunde liegender Sachverhalt:

Kugel.jpg Zentraler elastischer stoss von 2 Kugeln

Wand.jpg Stoss auf eine Wand

Programmiertechnischer Hintergrund

Die Umsetzung erfolgt objektorientiert;

  • Klasse Sphere


UML.jpg

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

Ausgabe.jpg Simulation einiger Teilchen; das aktuelle Bild ist oben mitte zu erkennen, die roten Punkte sind die Teilchen; der Rahmen stellt den begrenzenden Raum dar, das Grid dient 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