Hallo Bynaus und Bernhard,
Ich verstehe allerdings immer noch nicht ganz, was genau das Problem mit SCATR ist? Mal abgesehen davon, dass es in Fortran geschrieben ist. Ist es die schlechte Dokumentation? Die Sache mit Mond/Merkur?
Also die Sache mit dem Mond erübrigt sich ja, aber wenn der Integrator kollisionen nicht richtig erkennen kann, obwohl dass so dokumentiert ist, haben wir natürlich ein Problem. Das ist Bernhard sein Befund, ich habe dazu noch keine Untersuchung vorgenommen. Ich denke es ist auch relativ schwer, einen Testfall zu konstruieren.
Warten wir mal Bernhard seine genaue Diagnose ab.
Letzteres liesse sich, wie SRMeister schon gesagt hat, dadurch lösen, dass man den Mond weglässt (spielt hier eh keine grosse Rolle) und den Merkur durch eine Keplerbahn abschätzt. Eventuell könnte man das sogar für alle (massereichen) Planeten machen.
Ich denke mittlerweile, es wird uns kaum möglich sein, einen anderen bekannten Integrator soweit zu modifizieren. Das würde nur mit einem Eigenen klappen.
Nun zu den Punkten:
- 8 massive Planeten (auf Keplerbahnen?), evtl. ein paar grosse Asteroiden im Gürtel (masselos, nur als "Zielkörper")
Da es leider nur 2 Kategorien von Körpern gibt (masselos, massiv), kann man masselose Objekte nicht mit anderen masselosen kollidieren lassen. Eine Anpassung des Integrators scheint auch hier kaum möglich. Das stellt aber kein großes Problem dar, man kann auch ein paar massebehaftete Objekte in den Asteroidengürtel setzen.
- X Teilchen mit bestimmten Ausgangspositionen, -koordinaten und -geschwindigkeitsvektoren ("Werte"). Diese Teilchen werden als masselos angenommen, sie interagieren also nicht miteinander, aber ihre Bahnen werden durch Planeten gravitativ beeinflusst.
Okay, dies sind dann die "Theiatrümmer". Bernhard sein Algorithmus erzeugt die ja bereits erfolgreich.
- Sobald ein masseloses Teilchen sich einem Planeten (oder grossen Asteroiden) auf mehr als eine Hill-Sphäre nähert, werden seine Werte in ein lokales Koordinatensystem transformiert und mit sehr viel kürzerer Schrittweite gerechnet. Verfehlt es den Planeten, werden die Werte beim erneuten Erreichen des Hill-Radius an die ursprüngliche Simulation übergeben. Trifft es den Planeten (dh, es nähert sich auf weniger als einen bestimmten, kritischen Radius, der für jeden Planeten festgelegt werden kann), werden Trefferposition, Zeitpunkt sowie Bahnwerte zum Zeitpunkt der Kollision gespeichert und das Teilchen aus der Simulation entfernt.
Okay, im Prinzip funktioniert SCATR genau so wie du es beschreibst. Es sollte also bereits jetzt prinzipiell in etwa so laufen. An diesem Punkt hat Bernhard bedenken. Ich kann dazu wie gesagt noch keine Aussage treffen.
- Sobald ein masseloses Teilchen sich der Sonne zu stark nähert, eine grosse Halbachse über einem bestimmten Wert erreicht oder das System ganz verlässt (Fluchtgeschwindigkeit rel. zur Sonne), wird es aus der Simulation entfernt.
Okay, genau so funktioniert SCATR, wobei man für die einzelnen Kriterien grenzwerte vorgeben kann.
Ich hab keine Ahnung, ob dafür SCATR wirklich nötig ist, oder ob ein anderer (etablierter) Integrator (z.B. Mercury?) es genauso tun würde
Im Prinzip ist SCATR eine Erweiterung von SWIFT. SWIFT ist mMn ein sehr verbreiteter Integrator. SCATR ermöglicht, das äußere Sonnensystem in größeren Zeitschritten als das Innere zu berechnen, was man braucht um große Mengen von Objekten in der Oortcloud zu simulieren. Insofern hast du recht, SCATR ist nicht wirklich nötig.
Nach erneutem recherchieren bin ich auf einen anderen, modernen "Zweig" von SWIFT gekommen, der sich Swifter nennt und mit "SyMBA" einen sehr guten, allgemein benutzbaren Integrator bietet, der außerdem codetechnisch mit SCATR nah verwand ist(wir sind also eingearbeitet) da beide auf SWIFT basieren. Außerdem wurde dieser Integrator in der Literatur öfter erwähnt als SWIFT oder SCATR. Der Code zu SyMBA basiert auf
dieser Arbeit die 79 mal zitiert wurde.(
Hier zum PDF)
Meiner Einschätzung nach sollte man dem vielleicht eine Chance geben. Der bietet bis auf die Sache mit der Oortcloud das selbe wie SCATR, ist aber wohl um einiges genauer. Das hilft vllt. bei der Sache mit der Kollisionserkennung:
We present a new symplectic algorithm that has the desirable properties of the sophisticated but highly efficient numerical algorithms known as mixed variable symplectic (MVS) methods and that, in addition, can handle close encounters between objects. This technique is based on a variant of the standard MVS methods, but it handles close encounters by employing a multiple time step technique. When the bodies are well separated, the algorithm has the speed of MVS methods, and whenever two bodies suffer a mutual encounter, the time step for the relevant bodies is recursively subdivided to whatever level is required. We demonstrate the power of this method using several tests of the technique. We believe that this algorithm will be a valuable tool for the study of planetesimal dynamics and planet formation.
Außerdem ist es auch open source.