numerische simulation2

Werbung
numerische simulation2
January 25, 2016
1
Numerical Methods in Extraterrestrial Physics - Numerische
Simulationen II
In [5]: %matplotlib inline
%config InlineBackend.figure_format = ’svg’
1.0.1
Virtueller Detektor
Unser virtueller Detektor, welcher zur Messung von (virtuellen) geladenen Sonnenwind-Teilchen verwendet
wird, bedarf folgender Komponenten um die Geschwindigkeit, Masse und Masse-pro-Ladung eines Ions zu
messen.
1.
2.
3.
4.
5.
Die
Die
Die
Die
Die
Klasse
Klasse
Klasse
Klasse
Klasse
Particle: Beschreibt und Definiert das Verhalten unserer geladenen Ionen
Tof: Definiert die Flugzeit Messung des Detektors
PQ: Definiert die Impuls-pro-Ladungs Messung des Detektors
SSD: Definiert die Energie Messung des Detektors
Detektor: Fügt die einzelnen Komponenten zusammen
Die Klassen Particle und Tof haben wir bereits fertiggestellt. Heute geht es also um die Umsetzung
einer Impuls-pro-Ladungs Messung mittels der PQ Klasse. Eine bereits fertig gestellte Particle und Tof
Klasse findet ihr hier.
1.0.2
Die PQ (Impuls-pro-Ladung) Klasse
Die Bestimmung von p/q findet über die Ablenkung eines geladenen Teilchens in einem B-Feld statt. Hier
ein kleiner Vorgeschmack der Detektor Geometrie:
In [6]: from pq import PQ
from particle import Particle
import pylab
ax = pylab.figure().gca()
ax.set_xlim(0,0.15); ax.set_ylim(-0.12,0.02);ax.set_aspect("equal")
pq = PQ(); pq.dt = 1e-9
pq.plot(ax)
P = Particle()
P.set_v((4e5,0,0))
pq.compute_particle(P)
P.plot(ax)
1
ax.legend();
Gleichsetzung der in einem konstanten Magnetfeld wirkende Lorentzkraft mit der Zentripetalkraft liefert
das Messprinzip des P/Q Analysators.
FL
FZ
~ = q · v⊥ · B z
q · ~v × B
2
mv⊥
=
r
p
⇒
= Bz · r
q
=
(1)
(2)
(3)
Bei konstant gehaltenem Gyrationsradius r, können wir also durch ein Wechsel von Bz unterschiedliche
p/q unserer Teilchen filtern. Die Auflösung des p/q-Analysators ist dabei durch die Anzahl der einstellbaren
Bz und das ∆r gegeben, d.h. die Breite des kuppelförmigen Eintritts Systems. In Kombination mit der
Flugzeit Messung erhalten wir die Masse-pro-Ladungs des gemessenen Teilchens:
⇒
Bz · r · τ
m
=
,
q
d
wobei d und τ die Flugzeitstrecke und gemessene Flugzeit des Teilchens sind.
In [7]: ax = pylab.figure().gca()
ax.set_xlim(0,0.15); ax.set_ylim(-0.12,0.02);ax.set_aspect("equal")
pq.plot(ax)
2
(4)
for B in arange(0.0,0.1,0.01):
P = Particle()
P.set_v((4e5,0,0))
pq.set_B(B)
pq.compute_particle(P)
P.plot(ax)
ax.legend();
In diesem Beispiel (m = 1 amu, q = 1e, v = 450 km/s, r = 10 cm ) konnte das Teilchen bei einem
B-Feld von Bz = 0.04 T, den Analysator passieren. Unsere gemessene Masse-pro-Ladung entspricht also
ca 0.95 amu/e. Ein grundlegendes Problem bei der Benutzung solcher m/q Analysatoren besteht darin,
dass das Magnetfeld (in der Realität meist ein E-Feld) durchgesteppt werden muss, um die Masse-proLadung zu bestimmen. Da die Auflösung des Analysator von der Anzahl der Steps abhängt, und bei jedem
step nur Teilchen einer gewissen Impuls-pro-Ladungs Breite den Analysator passieren können, reduzieren
wir signifikant die Messeffizienz unseres Detektors. Bei einer Step Anzahl von 100, messen wir in erster
Näherung nur 1% aller eingeschossenen Teilchen.
1.1
Übung: Die PQ Klasse
In dieser Übung geht es nun um die Implementierung einer Klasse für die Impuls-pro-Ladungs Messung
unserer Teilchenquelle. Das Teilchen soll dabei in einem kuppelförmigen Analysator durch ein konstantes
Magnetfeld (in z-Richtung) abgelenkt werden.
1.) Erstellen Sie eine Klasse für die Impuls-pro-Ladungs Messung. Fügen sie hierfür Attribute ein, die die
Position, den Radius (10 cm), und Breite des Eintrittssystems (1 cm) definieren. Schreiben Sie eine Methode
zur Visualisierung des Eintrittssystems. Hierfür ist die Wedge Klasse aus matplotlib sehr gut geeignet.
In [8]: from matplotlib.patches import Wedge
2.) Schreiben Sie eine Methode mit der Sie ein Teilchen durch die Detektor Geometrie propagieren
lassen können. Hierfür benötigen Sie eine Methode für die Kollisionsabfrage, d.h. befindet sich das Teilchen
innerhalb von r ± ∆r oder nicht.
3
3.) Implementieren Sie eine Methode zum Setzten des Magnetfeldes innerhalb des Analysators. Lassen
Sie das Teilchen im Magnetfeld propagieren. Hierfür müssen sie wahrscheinlich die Methode zur Berechnung
von ∆v in Ihrer Teilchen Klasse modifizieren.
4.) (Optional) Erstellen Sie eine Detektor Klasse, in der Sie die Tof und PQ Klassen zusammenfügen.
Die Detektor Klasse soll dabei das “Steppen” der PQ Klasse übernehmen. Visualisieren einige Trajektoren
durch Ihren Detektor. Hier ein mögliches Beispiel:
In [10]: from
from
from
from
detector import Detector
tof import Tof
pq import PQ
particle import Particle
tof = Tof()
pq = PQ()
D = Detector(tof,pq)
ax = D.plot()
for i in range(300):
P = Particle()
P.generate_v(mu=(400e3,0),sig=(10e3,10e3))
if D.calc_particle(P):
P.plot(ax)
ax.legend();
In [9]:
4
Herunterladen