Mein Spezialgebiet in der Astronomie ist die Himmelsmechanik und dort die numerische Simulation von Planetensystemen. Man bastelt sich im Computer ein Planetensystem, bei dem man die Zeit nach Belieben vor und zurück laufen lassen kann. So kann man beobachten, wie sich die Planeten verhalten und was passiert, wenn man bestimmte Parameter verändert. Ich habe das alles früher schon mal in einer eigenen Serie beschrieben: Teil 1, Teil 2, Teil 3, Teil 4. Aber natürlich kann man auch andere Systeme numerisch simulieren. Nicht nur die Planeten eines Planetensystems, sondern auch die Sterne in einer Galaxie. Oder die Galaxien in einem Galaxienhaufen. Oder man macht gleich Nägel mit Köpfen und simuliert das ganze Universum auf einmal.

Ok, das ist selbst für unsere Supercomputer noch ein hartes Stück Arbeit. Aber in den letzten Jahrzehnten hat sich da einiges getan. 1941 hat Erik Bertil Holmberg noch Glühbirnen benutzt um die Wechselwirkung von Galaxien zu simulieren. Heute kann man nicht nur simulieren, wie Galaxien miteinander interagieren, man kann simulieren, wie sie entstehen. Bei Projekten wie der Millenium-Simulation fängt man nicht mit fertigen Galaxien an, sondern nur mit diffuser Materie – so wie nach dem Urknall – und lässt sie wechselwirken um zu sehen, unter welchen Umständen sich Galaxien und Galaxienhaufen bilden die denen im realen Universum ähneln.

Solche Simulationen sind ganz anders aufgebaut als die numerischen Simulationen mit denen ich zu tun habe, wenn ich die Bewegung von Planeten untersuche. Bei einem Planetensystem hat man normalerweise knapp ein Dutzend Himmelskörper, die gegenseitig Gravitationskraft aufeinander ausüben. Man braucht auch – bis auf bestimmte Spezialfälle – nur die Gravitationskraft berücksichtigen. Nichtgravitative Kräfte oder hydrodynamische Effekte wie sie bei der Berücksichtigung von Gas- oder Staubwolken auftreten, müssen einen normalerweise nicht kümmern. Das klappt bei der Simulation von Galaxien bzw dem ganzen Universum nicht. Hier muss man die gravitative Wechselwirkung von zehntausenden Objekten berechnen; man muss den Einfluss der dunklen Materie berücksichtigen (gerade bei der Galaxienentstehung ist das fundamental, da sich die normale Materie dort ansammelt, wo auch viel dunkle Materie ist) – man braucht hier völlig andere Methoden und kann solche Simulationen auch meistens nur auf Supercomputern rechnen. Man muss die Programme also wieder so modifizieren, dass sie gleichzeitig auf tausenden Prozessoren laufen können – usw. Ich habe früher mal einige Zeit am Physikinstitut der Uni Zürich verbracht und mir dort von den Experten für astrophysikalische Simulationen auf Supercomputern all das beibringen lassen. Aber das ist nichts, was man so eben mal lernt; eine vernünftige kosmologische Simulation ist ein aufwendiges Forschungsprojekt!

Aber wenn man dann erstmal das Universum bzw. die Galaxien in seinem Computer hat, kann man damit jede Menge coole Sachen anstellen 😉 Aber eigentlich wollte ich gar nicht so viel erzählen, ich wollte eigentlich nur dieses nette Video verlinken, in dem kurz und knapp die Simulation von Galaxien auf dem Computer erklärt wird:

28 Gedanken zu „Wie man Galaxien am Computer simuliert“
  1. Kann man nicht die benötigte Rechenleistung wie beim SETI-Projekt über das Internet auf viele Rechner verteilen ? So in der Art wie einen Bildschirmschoner ?

  2. @Mike: „Kann man nicht die benötigte Rechenleistung wie beim SETI-Projekt über das Internet auf viele Rechner verteilen ? So in der Art wie einen Bildschirmschoner ? „

    Ne, ich glaub das haut da nicht hin. Du musst ja für jeden Zeitschritt die Wechselwirkung von JEDEM Massenpunkt auf jeden anderen berechnen. Erst dann kriegst du die neuen Positionen der Massen und kannst den nächsten Zeitschritt berechnen. Das kann man nicht lokal auf viele Computer verteilen, da müsste man immer ewig warten, bis alle fertig sind.

  3. Ooooch, ich hatte jetzt eigentlich erwartet, dass mir gezeigt wird, wie sich denn nun eine Galaxie formiert. Aber trotzdem ganz nett, das Video.

  4. “ … Du musst ja für jeden Zeitschritt die Wechselwirkung von JEDEM Massenpunkt auf jeden anderen berechnen. …“

    Muss man das wirklich tun? Bei solchen Distanzen kann das soch nicht funktionieren, die Gravitation breitet sich doch auch nur mit Lichtgeschwindigkeit aus.
    Ich schreibe gerade zum Spass eine „Simulation“ bei der jedes Objekt ein Feld anregt, das wiederum die anderen Objekte beeinflusst. Funktioniert eigentlich ganz gut ..

  5. @Felix: „Bei solchen Distanzen kann das soch nicht funktionieren, die Gravitation breitet sich doch auch nur mit Lichtgeschwindigkeit aus“

    Naja, man baut da bei kosmologischen Skalen schon gewissen Dämpfungsparameter ein. Aber wenn du ne Galaxie mit hunderttausend Sternen simulieren willst, dann musst du hundertausend*hunderttausend Wechselwirkungen berechnen, da kommst du nicht umhin. Und dann ist es noch ein recht grobes Modell weil eine Galaxie eigentlich ein paar hundert Milliarden Sterne hat…

  6. Statt 100000×100000 Wechselwirkungen kann man mit Approximationen auch ganz gut fahren, siehe barnes&hut treecode und/oder Multipolentwicklungen.

  7. Aber jetzt nochmal eine Frage an den Spezialisten: koennte man eine Simulation so aufziehen dass man jeden Massepunkt ein Feld anregen lässt, das Feld breitet sich wellenförmig aus und beeinflusst so die anderen Massepunkte.
    Wie gesagt, das funktioniert eigentlich ganz schoen, das Problem ist nur dass wenn sich die Massepunkte sehr schnell in Relation zur Ausbreitungsgeschwindigkeit des Feldes bewegen (im extrem schneller als sich das Feld ausbreiten kann) sie sich dann selber abbremsen.
    Gibt es da Modelle? Im Moment habe ich einfach ein skalares Feld.

  8. Naiv wie ich bin würde ich die Galaxie in kleine Würfelchen zerlegen und bei der Berechnung der Kräfte auf die Sterne in einem Würfelchen nur die Nachbarwürfel in Sterne auflösen. Alles weiter entfernte würde ich durch einen soliden Würfel mit der Masse der darin enthaltenen Materie im Schwerpunkt ersetzen und mit zunehmender Entfernung immer mehr Würfelchen zu größeren Würfeln zusammenfassen.

    In ein Schritt rechnet man das aus der Sicht jedes Würfelchens einmal durch und betrachtet dann, ob sich Sterne in Nachbarwürfel bewegt haben. Die Würfelmassen werden entsprechend modifiziert, und man rechnet den nächsten Schritt.

    Lässt sich super parallelisieren: Jede CPU rechnet die Sicht eines Würfelchens und erhält als Input nur die Massen der anderen Würfel und die Position der Sterne in den Nachbarwürfeln. Sollte die Zahl der Rechenschritte enorm verkleinern.

  9. @Felix: „koennte man eine Simulation so aufziehen dass man jeden Massepunkt ein Feld anregen lässt, das Feld breitet sich wellenförmig aus und beeinflusst so die anderen Massepunkte.“

    Inwiefern sollte das was bringen? Die Wechselwirkung zwischen Massen ist die Gravitation. Da gibt es entsprechende Gleichungen von Newton oder Einstein und das sind die Gleichungen, die man benutzen muss, wenn man wissen will, wie die Wechselwirkung aussieht. DIe Ausbreitungsgeschwindigkeit der Gravitation ist bis auf bestimmte kosmologische Simulationen vernachlässigbar.

  10. @Alderamin: Ja, so ähnlich wird das auch gemacht. Aber am Ende bleiben halt doch SEHR viele Wechselwirkungen übrig, die man berechnen muss…

  11. @Florian: „Inwiefern sollte das was bringen?“

    Es ist (fuer meine Zwecke) sehr schnell. Der Aufwand steigt nicht Quadratisch. Der Aufwand für Feldberechnung ist konstant, unabhängig von der Anzahl der Massepunkte, und kann mit einer halbwegs modernen GPU recht effektiv erledigt werden.

  12. Die Raumzeitkrümmung is Geometrisch und wirkt immer* nichts mit Lichgeschwindigkeit.

    Die Parallelisierungsmöglichkeiten einer Simulation hängt stark von der verwendeten Numerik ab, welche wiederum von der Physik abhängen (je nachdem machen unterschieldiche Verfahren mehr Sinn).
    Aber wenn man I/O für die eigentliche Rechnung auf ein langsameres Medium hat (z.B. ganz schlimm Festplattenzugriffe statt Arbeitsspeicher) wird das ganze direkt um eine Größenordnung langsamer.
    Approximationen bringen da nicht so furchtbar viel, da diese ja auch berechnet werden müssen. Es ist je nach Verfahren und abzubildener Physik möglich mit nur einer teilaktualisierten Matrix (weiterzurechnen, aber spätestens wenn man 2 Zeitschritte entfernt ist muss man warten.

    * es gab da irc eine Studie in der hergeleitet wurde, dass es wohl doch eine Schranke gibt, aber selbst da waren es afaik vieeele Größenordnungen > als c

  13. Hehe echt cooles Video , aber schade das es wohl nicht Möglich ist ähnlich wie bei dem Seti Projekt sowas über viele PC’s durchs Internet zu bewerkstelligen. Aber auf jeden Fall ein Toller Artikel.

  14. Hehe echt cooles Video , aber schade das es wohl nicht Möglich ist ähnlich wie bei dem Seti Projekt sowas über viele PC’s durchs Internet zu bewerkstelligen. Aber auf jeden Fall ein Toller Artikel.

  15. @Felix:
    „Danke fuer den Link. Nach dem zweiten gelesenen Satz war mir schon klar dass ich auf dem Holzweg bin :-(“

    Bitte laß Dich nicht beirren! Nur, weil es auch anders (Feld ohne Laufzeit) berechnet werden kann, muß Deine Betrachtung mit Laufzeit der Gravitation nicht falsch sein. Deine Ergebnisse sehen ja anscheinend bereits realistisch aus, oder?

    Willst Du Deinen Code mal zur Verfügung stellen?

    Herzliche Grüße.

  16. Hallo alle zusammen! =)

    Ich hab an dieser Stelle mal eine eher doofe Frage.
    Was haltet Ihr von folgendem Simmulationsprogramm für den PC?
    https://www.universesandbox.com/

    Mir ist durchaus klar, dass diese Programm hauptsächlich der Unterhaltung dient und nicht im Geringsten einer wissenschaftlichen Simulation entspricht bzw. entsprechen kann. Jedoch frage ich mich, ob eurer Meinung nach diese Simmulation zumindest einen gewissen Lehreffekt bzgl. des Verstehens von Gravitationswirkungen von div. Himmelskörpern untereinander hat?

    Danke schonmal für die evtl. Antworten! =)

    VG, AM

  17. @Felix:
    SCHWAR_A hat recht lass dich nicht beriiren. Vereinfachungen und Korrekturfaktoren sind das täglich Brot jedes Simulanten (und warscheinlich auch von so manchem auch Forscher und Entwickler 😉 ).

    Ich wollte nur klarstellen, dass man da aufpassen muss und nicht annehmen kann c wäre in dieser Formulierung irgendwie natürlich drin.
    Überhaupt ging es mir mehr darum die Hoffnungen auf etwas alla SETI@home etwas zu drücken. Parallelisierung klappt gut* solange man ein gutes Netzwerk zwischen den Rechenkernen hat (im einfachsten Fall passiert das alles eben auf einem Rechner).

    BTW: Was für ein Verfahren nimmst du als Grundlage? Wäre auch an Code interessiert, wobei ich bei mir nur OpenCL Code wirklich verwenden könnte, bei ATI ist ja nichts mit CUDA. Wobei das bei mir eher hobbymäßig ist.

    *natürlich Verfahrensabhängig

  18. @Philipp

    Ich hatte ja =>da oben skizziert, wie ich so was programmieren würde. Da betrachtet man jeweils eine kleine Region im Detail und abstrahiert entfernte Objekte zu immer größeren Einheiten. So was müsste sich doch prima à la SETI@home verteilen lassen. Jeder Rechner erhält ein Würfelchen mit seiner unmittelbaren Umgebung zum Rechnen und rechnet einen Schritt, gibt danach die Koordinaten der Sterne aus seinem Würfelchen zurück (auch wenn die in andere Würfelchen weitergewandert sind) und ein zentraler Rechner sammelt alle Koordinaten ein und teilt sie im nächsten Schritt den teilnehmenden Rechnern wieder neu zu.

    Wenn man eine Menge Speicher aufwendet, könnte man die Grobaufteilung der Galaxie aus Sicht jedes Würfelchens für jeden Rechner in der Zentrale halten und nur Gewichts-Updates für solche Würfel versenden, die sich verändert haben, dann bliebe der Kommunikationsaufwand pro Rechner klein. Für entferntere große Regionen reichten dann vermutlich auch Updates alle n Rechenschritte. Würfelgröße und n nähmen mit der Entfernung zum berechneten Würfelchen zu. Der zentrale Rechner würde dann nur noch Gewichte der Würfel berechnen.

  19. @Alderamin
    Das n-Körper problem ist an und für sich schon ziemlich gut parallelisierbar. Mit den Details kenn ich mich nicht so aus, aber man findet mittels Google genug hinweise wie man einen guten Code für GPUs backen kann.

    Deine Idee mit den „Würfeln“ ist nicht neues, in der Festkörpermechanik (so dass was ich so halt mache 😉 ) verwendet man die Finte Element Methode. Deren Idee ist genau das, wir zerlegen die Geometry in kleine simple Einheiten (Würfel, Tetraeder, Dreieecke, Vierecke), man nennnt das oft Vernetzung, und lösen innerhalb dieser die Diff’Gleichungen. Einen ähnlichen Ansatz verfolgt die Finite Volumen Methode.

    Das ist super wenn man letzten Endes an dem Feld interessiert ist (z.B. in meinem Fall den Spannungen oder Dehnungen). Ich habe mir schonmal überlget, ob es nicht interessant wäre mit diesem Ansatz ein Raum-Zeit Feld zu simulieren mit voller ART. In erster Linie natürlich um zu sehen ob man das überhaupt halbwegs sinnvoll hinbekommt. Ob das dann weiteren Erkenntnisgewinn abwirft – keine Ahnung – aber ich fände das faszinierend.

    Für N-Körper Probleme ist mMn die Aufteilung in feste Würfel wenig zielführend, aber es gibt da Verfahren die nur O(NlogN) statt O(N^2) auskommen in dem man eine baumartige „Würfelung“ mit verschieden großen Würfeln generiert. Siehe z.B.:
    https://de.wikipedia.org/wiki/Barnes-Hut-Algorithmus

  20. @Philipp

    Danke für den Link, das ist genau so beschrieben, wie ich es mir überlegt hatte. Bin zwar Informatiker, aber mit diesem Teilgebiet hatte ich bisher nicht zu tun, trotzdem kenne ich natürlich die Methode der finiten Elemente vom Prinzip her. Der Witz bei der Gravitationssimulation ist gerade der, dass die betrachteten Würfel mit zunehmender Entfernung immer größer werden können und sich damit auch die Zahl der enthaltenen Sterne immer seltener signifikant ändert, Gesetz der großen Zahlen, also braucht es auch immer seltener Updates, die Kommunikationsaufwand verursachen.

    Klar, dass die Methode von Barnes und Hut schon lange bekannt ist, das Verfahren liegt ja auf der Hand. Ich hätte nur gedacht, dass auf diese Weise vielleicht der Ansatz verteilter Rechner funktionieren sollte, aber wenn sehr viele Einzelschritte zu rechnen sind, dann ist der Kommunikationsaufwand vielleicht trotzdem zu hoch, als dass sich ein Vorteil gegenüber einem System mit weniger Rechenleistung, aber effizienterer Interprozessor-Kommunikation ergäbe.

  21. @SCHWAR_A:
    Der code liegt auf „https://plansch.sourceforge.net“. Ist teils mit OpenCL implementiert, aber wirklich eher eine „Simulation“ mit Betonung auf den Anführungszeichen.

  22. @Felix:
    Super! Danke!
    Nach meiner Auffassung ist das Wort Simulation nicht „herabzustufen“:
    wenn das hineingesteckte Modell richtig ist, kommt beliebig genau das raus, was man auch mißt.

    ZB.: Bei „Deinem“ Modell hast Du Raum und Zeit diskretisiert. Unter Berücksichtigung von Laufzeit erhältst Du genau die Ergebnisse, die auch die ART hervorbringt, und zwar, weil diese bereits die feld-theoretische Version mit unendlich kleinen Zeitschritten des diskreten Modells darstellt. Damit läßt sich in vielen Fällen „leichter rechnen“ und muß nicht erst simulieren.

    Versuch’s mal mit einem Binärsystem mit gleichen Massen. Wenn alles stimmt, wird ihr gegenseitiger Abstand immer kleiner – und das ganz ohne spezielle Anwendung von SRT und ART… das habe ich hier mal beschrieben…

    Herzliche Grüße.

Schreibe einen Kommentar

Deine E-Mail-Adresse wird nicht veröffentlicht. Erforderliche Felder sind mit * markiert

Diese Website verwendet Akismet, um Spam zu reduzieren. Erfahre mehr darüber, wie deine Kommentardaten verarbeitet werden.