Kürzlich hatte ich ja schon mal eine Empfehlung zu Programmier-sprachen abgegeben. Ich will hier in Zukunft einige Beispiele für die Leistungsfähigkeit von Python einstellen. Los geht es mit einer N-Körper Simulation, bei der die Vorgänge in Galaxien wie NGC660, NGC4490 oder anderen Exemplaren aus dem Zoo der Arp-Galaxien illustriert werden sollen.
N-Körperprobleme, mit N>2 lassen sich formelmäßig nicht lösen, da kommt man nur mit numerischen Methoden und Computerhilfe weiter. N-Körper sind bei einer Galaxie ziemlich viele …, soviele, dass kein Computer auch nur ansatzweise da hinreicht. Der Rechenaufwand ist proportional zu N*N oder N*log(N) bei den ausgetüfftelteren Verfahren, also bei einer Milchstraße mit N=10**11 bedeutet das 10**22 bzw. 10**12 Interaktionen bei einem Zeitschritt. Für eine Simulation braucht man je nach zeitlicher Auflösung hunderte bis tausende solcher Schritte.
Die Entwicklung von Sternhaufen (bis ca. 100000 Sterne) kann man mit heutigen Mitteln über das gesamte Weltalter verfolgen. Das wären z.B. kleine Kugelsternhaufen.
Galaxien, die 100 bis viele Millionen mal mehr Sterne enthalten lassen sich nur näherungsweise simulieren. (Die zu modellierenden Probleme lassen sich nicht ganz vergleichen, da z.B. in Galaxien nahe Vorübergänge von Sternen (“Kollisionen”) keine Rolle spielen, in Kugelsternhaufen aber sehr wichtig sind.)
Nichtsdestotrotz haben schon Anfang der 70er Jahre die Brüder Toomre mit ein paar dutzend “Sternen” interessante Ergebnisse erzielt. Hier wollen wir mit 20000 bis 50000 Objekten vorankommen. N-Body ist eine Domäne von Amuse. Besonders interessant ist die Unterstützung von CUDA z.B. durch den Integrator Bonsai. Hierdurch wird der Rechenaufwand auf die Grafikkarte (GPU) übertragen, die, je nach Ausführung 10 – 100mal schneller rechnen kann als unser Computer mit seiner CPU. Um einen anderen Code zu verwenden braucht man nur eine Programmzeile zu ändern. Wer z.B. mit Gadget2, dem Programm mit dem die Millenium-Simulation gerechnet wurde, macht diese Änderung in 3 Sekunden.
Jede Simulation ist am Start durch eine Auswahl von Anfangsbedingungen charakterisiert: Gesamtzahl der Sterne pro Galaxie, Festlegung der Massenverhältnisse von Halo (dunkel Materie), Scheibe und Bulge, Positionen der Galaxien im Raum und Ausrichtung der Rotationsachsen, Geschwindigkeitsvektor des Schwerpunktes im Gesamtsystem … Der Parameterraum ist somit ziemlich ausgedeht. Wer also mal die Vorgänge in z.B. Stephan’s Quintett simulieren möchte … braucht Geduld und Rechenleistung.
Eine stabile, zusammenhaltende Galaxie im Computer zu bauen ist dabei auch gar nicht so einfach, aber auch hier hält Amuse einen Code bereit (GalactICs).
Damit es hier nicht so trocken weitergeht, habe ich aus den Rechnereien einen kleine Film gemacht, der die gewünschte Vorstellung (hoffentlich) vermittelt. Ich erhebe keine Anspruch die Sache hiermit geklärt zu haben.
Wer mehr wissen möchte:
PARALLELE BERECHNUNGEN MIT CUDA