kleiner planetarer Simulator

Kibo

Registriertes Mitglied
Also eine mechanische Berechnung ist allgemein symplektisch wenn gilt:

E_pot + E_kin =konstant über den gesamten Ablauf der Simulation.

E_kin lässt sich wohl leicht ausrechnen über: E_kin=1/2m*v^2
Für E_pot habe ich beispielsweise die Formel gefunden: E_pot= -G*m*M/r

Ist das soweit erst einmal richtig?

mfg
 

Bernhard

Registriertes Mitglied
Ist das soweit erst einmal richtig?
Hallo Kibo,

im Rahmen des aktuellen Themas ist das korrekt. Die vollständige Theorie ist aber allgemeiner aufgebaut. Wichtige Begriffe in diesem Zusammenhang sind beispielsweise:
http://de.wikipedia.org/wiki/Satz_von_Liouville_(Physik)
http://de.wikipedia.org/wiki/Phasenraum
MfG

EDIT: In dem von Dir verlinkten ersten Youtube-Clip wurde allerdings erwähnt, dass der symplektische Integrator die Gesamtenergie auch nur näherungsweise (und wesentlich besser als Euler) und nicht exakt konstant hält. Ein perfekter sympl. Integrator (Ordnung unendlich oder so ähnlich) sollte das aber prinzipiell machen.
 
Zuletzt bearbeitet:

Kibo

Registriertes Mitglied
Hallo,

Ich möchte, dass mein Programm die Sternfarbe anhand seiner Masse anpasst (leichte rote Sterne, schwere blaue Sterne).

Zur Bestimmung der Sternenfarbe habe ich die sehr einfache Formel

Sternfarbe in Nanometern 3000000/temp in Kelvin

gefunden.

Ich konnte jedoch keine Formel zur Berechnung der Temperatur aus der Masse finden. Hat da jemand vielleicht etwas zur Hand?

mfg
 

Bernhard

Registriertes Mitglied
Hallo Kibo,

das Hertzsprung-Russel-Diagramm verkoppelt zumindest die Farbe mit der absoluten Helligkeit. Vielleicht hilft das ja ein wenig weiter?
MfG
 

Kibo

Registriertes Mitglied
Hallo Bernhard,

sowas hatte ich befürchtet, dann schätze ich eben eine Funktion anhand des HRD ab.

mfg und danke
 

joeydee

Registriertes Mitglied
Erstmal zu deiner gefundenen Farbenformel: damit wäre die Sonne bei 3000000/5800=517nm grün?!
Es ist leider ein wenig komplexer: http://en.wikipedia.org/wiki/Planckian_locus#Approximation
Umrechnungen von LAB in RGB solltest du auch irgendwo finden.

Spektraltyp/Masse: Vielleicht reichen dir auch schon die Eckdaten aus dieser Tabelle: http://de.wikipedia.org/wiki/Spektralklasse#Einteilung - hier werden typische Massen für bestimmte Spektraltypen der Hauptreihensterne angegeben. Daraus kannst du eigentlich eine Wertetabelle zum Interpolieren basteln.
 

Kibo

Registriertes Mitglied
Hallo Joey,

Ich finde das Ergebnis grün doch sehr treffend. Grün ist ja so ziemlich genau der Durchschnitt, des von der Sonne ausgestrahlten Lichts.
Sieht man hier ganz gut. Jedenfalls, danke für die Links, leider helfen die mir aber auch nicht weiter wie ich von der Masse des Sterns denn nun zu seiner Oberflächentemperatur komme.

mfg
 

Bernhard

Registriertes Mitglied
leider helfen die mir aber auch nicht weiter wie ich von der Masse des Sterns denn nun zu seiner Oberflächentemperatur komme.
Hallo Kibo,

in der ersten Tabelle von hier: http://de.wikipedia.org/wiki/Spektralklasse#Einteilung findet man in Spalte 5 die durchschnittliche Masse jedes Hauptreihensterntyps, in Spalte 3 die zugehörige Farbe, wie man sie mit dem Auge wahrnimmt und in Spalte 4 die durchschnittliche Temperatur. Damit sind 99% aller Sterne berücksichtigt.
MfG
 

Kibo

Registriertes Mitglied
Wie kommst du damit auf die tatsächliche Sternfarbe?

Noch gar nicht, eines nach dem anderen.

Jedenfalls hab ich für die Beziehung Masse/Temperatur eine ganz gute Näherungsfunktion abgeschätzt:
f(m)=(m^0,51)*4950 ;m in Sonnenmassen

mfg

edit: hab ich, wie von Bernhard vorgeschlagen aus der Wikipedia-Tabelle erstellt.
 
Zuletzt bearbeitet:

Kibo

Registriertes Mitglied
hab die funktion noch ein bisschen angepasst:
f(m)=(m-0,1)^0,5*5000+440
passt mehr oder weniger
 

Kibo

Registriertes Mitglied
Färbung funktioniert wie von mir gewünscht. Ich arbeite noch am Leapfrog, dann gibt es das nächstes Release.
 

UMa

Registriertes Mitglied
Hallo Kibo,

die in dieser Wikipediatabelle angegebenen Massen sind die maximalen in diese Spektralklasse, also z.B. für F0, G0, ... und passen zu der oberen Temperaturangabe, nicht der mittleren oder unteren. Die Sonne hat z.b. 5772 K bei m=1.0. Bei deiner Formel kommt viel weniger raus.

Grüße UMa
 

Kibo

Registriertes Mitglied
Hallo Uma,

Wenn du jetzt schon meckerst sei froh dass du meinen Algorithmus Temperatur zu Farbe nicht gesehen hast ;)
Mir reicht die erste grobe Näherung, meine Sonne leuchtet schön gelb.

mfg
 

Kibo

Registriertes Mitglied
Wen vielleicht meine aktuelle Umsetzung interessiert:

Stemp:=(masse/1.989e30-0,1)**0.5 *5000 +440
spektrumdurchschnitt:=3000000/Stemp
rgbr:=-((spektrumdurchschnitt-650)/300)^2+1 ;blauer Anteil
rgbg:=-((spektrumdurchschnitt-525)/175)^2+1 ;grüner Anteil
rgbb:=-((spektrumdurchschnitt-475)/150)^2+1 ;roter Anteil
 

Kibo

Registriertes Mitglied
Es gibt ein neues, im wahrsten Sinne des Wortes, schönes Update.

Neu sind die Farbberechnung des Sterns, OpenGl Schattenberechnung, Versionskontrolle der settings.txt, mehr oder weniger richtige Anfangsausrichtung der Kamera und wie gesagt explizites Euler.
Immernoch nicht Fertig ist der Leapfrog Algorithmus (gerade keine Lust mehr auf Troubleshooting).
Kann sein das ich die ein oder andere Änderung vergessen habe, letztes Update ist ja lange her.

mfg
 

Bernhard

Registriertes Mitglied
Hallo Kibo,

hier eine Version des Leapfrog als Pseudocode a la UMa:

dt=Schrittweite

P1ort=ort_alt
P1v =v_alt
P1ort=ort_alt + dt/2*P1v
m1a=Grav(P1ort)

ort_neu=ort_alt + dt*v_alt + 1/2*dt*dt*m1a
v_neu =v_alt + dt*m1a
 

Kibo

Registriertes Mitglied
Hallo Bernhard,

dt=Schrittweite

P1ort=ort_alt
P1v =v_alt
P1ort=ort_alt + dt/2*P1v
m1a=Grav(P1ort)

ort_neu=ort_alt + dt*v_alt + 1/2*dt*dt*m1a
v_neu =v_alt + dt*m1a

Bist du sicher das das so stimmt?

mfg
 
Zuletzt bearbeitet:

Bernhard

Registriertes Mitglied
Bist du sicher das das so stimmt?
Hallo Kibo,

ich weiß, dass die Differenzenschemen in der Wikipedia etwas anders aussehen, aber ich bin mir sicher, dass die angeschriebene Variante zweiter Ordung ist. Es ist auch klar, dass es egal ist, ob die x-Variable den "Bock" bildet oder die v-Variable, denn es handelt sich insgesamt nur um einen zeitlichen Versatz von dt/2.

Kurz: Ich kann zwar nicht beweisen, dass dieses Schema symplektisch genannt werden darf, bin mir aber dessen ziemlich sicher, weil es eben aus dem englischen Artikel zum symplektischen Integrator stammt. Ich habe es in C++ bereits implementiert und damit in kürzester Rechenzeit sehr genaue Mond-Ephemeriden berechnen können. Zusammen mit der Richardson-Extrapolation ist dieses Verfahren bei langen Simulationszeiten schneller und genauer als Runge-Kutta und schneller als Bulirsch-Stoer. Nach dem gleichen Artikel habe ich mittlerweile auch das Verfahren dritter Ordnung implementiert und erfolgreich getestet.

In Deinem Programm sollte dieses Verfahren also eine deutliche Geschwindigkeitsverbesserung bei mindestens gleicher bis besserer Stabilität und Genauigkeit bringen.

Ich hätte auch noch einen Vorschlag für die Grafik des kleinen planetaren Simulators. Bei der Kameraposition würde ich bei der großen Zahl (z-Komponente?) statt einer 1 ganz vorne eine 5 verwenden, also fast die fünffache Entfernung. Für den Screenshot auf sourceforge habe ich genau diese Änderung verwendet. Man bekommt dann die Ansicht bis zur Marsbahn inklusive, was wesentlich netter aussieht als der "einsame" Merkur.
Gruß
 
Oben