Samstag, 27. Juni 2009

Problemchen

programmieren und dipom-arbeiten ist im Grunde nichts anders als laufend Problemchen zu lösen. Mal kleine mal größere. Dieses Monat war geprägt von 2 größeren. Das erste Problem war, sehr schwer ausfindig zu machen.
Zum glück ist jetzt der ganze code in einem Versionskontrollsystem namens Subversion. Viele Open Source Pojekte benutzen Subversion, damit mehrere Leute gleichzeitig arbeiten können und sich nicht in die Quere kommen. Sehr praktisch.
Das zweite Problem welches ich jetzt habe ist aber nicht Programmier-technisch sonder mathematisch. Dieser Punkt kommt wohl in jeder größeren Arbeit mal vor? War alles umsonst was ich bis jetzt gemacht habe? Nein! Das ist zumindest meine Meinung.
Dabei hört es sich so einfach an. Ich muss herausfinden wo ein Partikel einen zeitschritt zuvor war. Ich weiß wo es jetzt ist und ich kenne das 3d Geschwindigkeit Feld. Also es ist alles da, oder nicht? Aber kurz zum Anfang der Geschichte.
Das Ziel ist das Modell zu erweitern, dass ich die ganze Geschichte von Partikeln im Eis aufzeichne. Hört sich sehr einfach an, da ich ja das Eisschildmodell schon habe, das mir Geschwindigkeiten usw liefert. Also einfach eine variable definieren wo das ganze gespeichert wird, fertig. Es ist ja nur eine einfache Advection, es passiert keine chemische umwandlung und keine Diffusion. Aber genau das ist das Problem.
Man denkt man könnte einfach die Partikel die aufs Eis fallen mitführen. Einfach bei der Temperatur Formel was weglassen?Aber nein, da es keine Diffusion gibt, gibt es scharfe übergänge von einer Eigenschaft zur anderen. Wenn z.B zwei Gletscher zusammenströmen, dann ist das eine Eis und damit die Partikel darin 2000 Jahre alt und beim anderen 40000. An einer stelle hab ich dann einen Übergang von 2000 auf 4000. Also genau an der zwischenFläche hab ich auf einem Sprung. Das führt zu einigen Problemen. Bei der Temperatur gibt es so etwas aber nicht, da ist es egal wie alt das Eis ist die Temperatur hat dort keinen Sprung. Um die genze Geschichte der Partikel zu erfassen, müssen solche Sprünge also möglich sein. Der Herkunftsort und die Zeit wo es auf des Eis gelandet ist muss erhalten bleiben. Es ist die denkbar einfachste Formel, ungefähr so: Die Änderung ist 0!

Das Problem wurde erst 2002 das erste mal für Eisschildmodelle gelöst. Die Idee war also es so zu machen wie 2002. Siehe dazu auch das Bild unten.
Es grundsätzlich zwei arten wie man ein Modell umsetzt. Man teilt seinen ganzen Bereich also z.B Grönland in eine Gitter auf sagen wir 20x20 km und 100 Schichten in der hohe. Bei der Euler Methode hat man ein fixes Gitter und schaut sich an was passiert. Im Lagrange Modell schaut man ein Teilchen an und folgt es die ganze zeit über. Dabei wird verbiegt sich dann sozusagen das Gitter. Beide Varianten haben vor und nachteile.
Mein Eisschildmodell hat ein fixes Gitter. Also jetzt kommts: es gibt die Semi-Lagrange methode. Das ist eine Mischung aus beiden. Man verwendet ein fixes Gitter und verfolgt im jeden Zeitschritt nur das Teilchen das als Endpunkt einen Gitterpunkt trifft. Da sich bei mir ja die Eigenschaft nicht ändern soll reicht es wenn ich weiß wo das Teilchen hergekommen ist und wie die Eigenschaft dort zum vorherigen zeitschritt war.

Die Schwierigkeit liegt jetzt daran zu wissen wo das Teilchen voher war. In einem 3D Gitter mit einer anderen Geschwindigkeit in jedem Punkt innerhalb einer Gitterzelle! Und einer sich immer änderten Geschwindigkeit.
Ja wann das nicht funktioniert dann funktioniert die ganze Methode nicht, bzw wird das ungenau, so ist alles ungenau und wird mit jedem Zeitschritt ungenauer. Wenn man mal eben 400.000 Jahre durchrechnet dann summieren sich die Abweichungen.
In dem Artikel steht darüber leider nix genaues nur eine extreeeem einfache Formel: Der ort wo es vorher war ist gleich dem Ort wo es jetzt ist minus dem zurückgelegten weg....
Also hab ich weitere Artikel gesucht die semi-lagrange benutzen und nach einem Tag hab ich auch einige gefunden wo es genauer beschrieben wird, mit allem numerischen Krimskrams den man auch noch berücksichtigen muss. Also bin ich zuversichtlich das es funktionieren wird und werde mich am Montag nochmal mit meinem Betreuer treffen.

Es wird also immer komplexer und komplizierter je mehr man darüber nachdenkt. Ein anfangs einfache Aufgabenstellen entwickelt sicher immer mehr zu einem interessanten, komplexen Problem. Man verliert sich dabei sehr schnell in Details. Zu jedem Detail gibt es zig Artikel und bald denkt man nur mehr zu kompliziert und ist man ist sich der einfachsten Dinge nicht mehr sicher. So war es gut, das ich das hier mal niedergeschrieben habe damit ich selbst wieder weiß was die ursprüngliche Zielsetzung war.

Dann fängts aber erst richtig an, denn dann kann man virtuelle Eisbohrkerne machen und sie mit realen vergleichen! Über Isotopen und wofür man sie verwendet werde ich später mal was schreiben.

Gut, war jetzt ein etwas längere Beitrag, aber so brauch ich wenn ich dann in einer Woche in Graz bin nicht immer erklären was ich den mache. Ich freue mich schon auf daham, also bis dann.

P.S. Im August fahr ich nach Island! Zum wandern usw, also nicht vom AWI aus.