Simulation von Teilchenbewegungen SvT, by GSA: Unterschied zwischen den Versionen

Aus Physik
Zur Navigation springen Zur Suche springen
 
(10 dazwischenliegende Versionen von 2 Benutzern werden nicht angezeigt)
Zeile 1: Zeile 1:
 
== Ziel ==
 
== Ziel ==
Ziel des Projektes ist es, die Bewegung von Gasteilchen zu simulieren. Die Umsetzung soll mit Matlab auf Objektorientierung erfolge.
+
Ziel des Projektes ist es, die Bewegung von Gasteilchen zu simulieren. Die Umsetzung soll mit Matlab auf Objektorientierung erfolgen.
   
 
==Physkalischer Hintergrund==
 
==Physkalischer Hintergrund==
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 beiden Vektoren <math>\vec{v_1}</math> und <math>\vec{v_2}</math> in Abhaengigkeit der Komponenten vor dem Stoss (unberücksichtigt: relative Position zueinander, also Kugel2 nur im positiven Quadranten):
   
 
<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 31: Zeile 31:
   
 
<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>
 
<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.
  +
Diese Methode führt zu einer Reduktion der obigen Formeln auf (unter Berücksichtigung der negativen <math>v'_{1y}</math>-Richtung):
  +
  +
  +
<math>v'_{1x} = sin^2 \varphi \cdot v_{1x} </math>
  +
  +
<math>v'_{1y} = -cos \varphi \cdot sin \varphi \cdot v_{1x} </math>
  +
  +
  +
<math>v'_{2x} = cos^2 \varphi \cdot v_{1x} </math>
  +
  +
<math>v'_{2y} = cos \varphi \cdot sin \varphi \cdot v_{1x} </math>
  +
  +
  +
Zugrunde liegender Sachverhalt:
   
 
[[Image:Kugel.jpg]] Zentraler elastischer stoss von 2 Kugeln
 
[[Image:Kugel.jpg]] Zentraler elastischer stoss von 2 Kugeln
Zeile 49: Zeile 70:
 
''Eingaben:''
 
''Eingaben:''
   
1.) Simulationszeit mit Steping
+
1.) Simulationszeit mit Stepping
   
 
2.) Startmatrix
 
2.) Startmatrix
Zeile 55: Zeile 76:
 
* Startposition der Teilchen
 
* Startposition der Teilchen
   
  +
3.) Borderlength
4.) Export als Bildserie
 
  +
   
 
''Ausgabe''
 
''Ausgabe''
   
  +
Export als Bildserie.
Es wird ein movie berechnet der betrachtet werden kann
 
  +
Es wird ein 'movie' berechnet, der betrachtet werden kann.
   
   
Zeile 68: Zeile 91:
 
100 .................. Endzeit der Simulation [ms]
 
100 .................. Endzeit der Simulation [ms]
   
1 .................... gibt jedes Bild aus [1]
+
1 ...................... gibt jedes Bild aus [1]
   
 
300 .................. Laenge des Simulationsbereichs (Kantenlaenge a eines Quadrates) [pixel]
 
300 .................. Laenge des Simulationsbereichs (Kantenlaenge a eines Quadrates) [pixel]
   
0.1 .................. stepping [1]
+
0.1 ................... stepping [1]
   
 
'startmatrix3.txt' ... Matrix mit Startwerten der Teilchen
 
'startmatrix3.txt' ... Matrix mit Startwerten der Teilchen
Zeile 85: Zeile 108:
 
''typische Ausgabe''
 
''typische Ausgabe''
   
[[Image:Ausgabe.jpg]] 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
+
[[Image: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==
 
==Werdegang der Software==
 
 
 
*Plotten*
 
*Plotten*
zuerst polt (konnte keine gefuellten Kugeln erstellen)
+
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*
zuerst direkt berechnung zwischen 2 Objekten
+
zuerst: direkt berechnung zwischen 2 Objekten, es gab immer wieder Probleme, sodass 2 Teilchen seltsame Wege nehmen konnten
  +
danach: Umstellung auf die Transformationsmethode
gab immer wieder Probleme das 2 Kugeln seltsame Wege nehmen konnten
 
danach umstellung auf die Transformationsmethode
 
   
 
Aufbau des Programms
 
Aufbau des Programms
   
Es gibt eine Klasse sphere die Kugeln reprsentiert
+
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 wurden zuerst verwendet um die Wand zu representieren, später Übergang auf Kontrolle von kritischen Koordinaten.
   
 
Probleme:
 
Probleme:
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, dass sich Teilchen 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 Steping beeinflusst wie viele Berechnungsschritte ubersprungen werden
+
weiter hat die Wahl des Steppings einen grossen Einfluss:je kleiner sie gewaehlt wird, desto genauer wird gerechnet; das Stepping
  +
beeinflusst wie viele Berechnungsschritte übersprungen werden.
   
 
Darstellungsprobleme:
 
Darstellungsprobleme:
 
spheres.m Zeile 53: Umrechnung zwischen Inch und Pixel
 
spheres.m Zeile 53: Umrechnung zwischen Inch und Pixel
  +
  +
== Software zum Download ==
  +
Das Programm project-particle steht hier als download bereit: [[Media:project-particles.zip|Download der Teilchensimulation]]
  +
Es wurde unter Windows mit Matlab 2006R12 und unter Linux mit Matlab 7.1.0.183 (R14) erfolgreich getestet.
  +
  +
== Autoren ==
  +
Bei weiteren Fragen kann man die Programmierer gerne konsolidieren <br>
  +
[mailto:mgrill@student.tugraz.ac.at Grill Manuel]<br>
  +
[mailto:yao.shan@student.tugraz.ac.at Shan Yao]<br>
  +
[mailto:harald.altinger@student.tugraz.ac.at Altinger Harald]<br>

Aktuelle Version vom 17. Jänner 2008, 10:09 Uhr

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 beiden Vektoren [math]\vec{v_1}[/math] und [math]\vec{v_2}[/math] in Abhaengigkeit der Komponenten vor dem Stoss (unberücksichtigt: relative Position zueinander, also Kugel2 nur im positiven Quadranten):

[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. Diese Methode führt zu einer Reduktion der obigen Formeln auf (unter Berücksichtigung der negativen [math]v'_{1y}[/math]-Richtung):


[math]v'_{1x} = sin^2 \varphi \cdot v_{1x} [/math]

[math]v'_{1y} = -cos \varphi \cdot sin \varphi \cdot v_{1x} [/math]


[math]v'_{2x} = cos^2 \varphi \cdot v_{1x} [/math]

[math]v'_{2y} = cos \varphi \cdot sin \varphi \cdot v_{1x} [/math]


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

3.) Borderlength


Ausgabe

Export als Bildserie. 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, es gab immer wieder Probleme, sodass 2 Teilchen 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 wurden zuerst verwendet um die Wand zu representieren, später Übergang auf Kontrolle von kritischen Koordinaten. 

Probleme:

 Generell gibt es Probleme mit der Berechnung des Stosses:
 es kann passieren, dass sich Teilchen vor dem naechsten Step schon beruehren, dadurch funktioniert die Kollisionsberechnung falsch;
 weiter hat die Wahl des Steppings 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

Software zum Download

Das Programm project-particle steht hier als download bereit: Download der Teilchensimulation Es wurde unter Windows mit Matlab 2006R12 und unter Linux mit Matlab 7.1.0.183 (R14) erfolgreich getestet.

Autoren

Bei weiteren Fragen kann man die Programmierer gerne konsolidieren
Grill Manuel
Shan Yao
Altinger Harald