Download - Nachtrag: Statischer Druck (Aufgabe 3) Projektübung Klimamodellierung (05-3034) – A. Paul
Nachtrag: Statischer Druck(Aufgabe 3)
Projektübung Klimamodellierung (05-3034) – A. Paul
Open University Abb. 3.15
Unterschied zwischen barotropen und baroklinen Bedingungen
Intensität der blauen Schattierung ist Maß für Dichte des Meerwassers. (a) Flächen gleicher Dichte und Flächen gleichen Drucks verlaufen parallel und mit konstanter Steigung. Horizontaler Druckgradient konstant. (b) Flächen gleicher Dichte schneiden Flächen gleichen Drucks. Horizontaler Druckgradient nimmt mit Tiefe ab.
Unix-Tipp
• Wenn das aktuelle Verzeichnis “.” nicht im
Suchpfad enthalten ist, dann kann man ein
Programm a.exe mit dem Befehl
./a.exe starten.
Tipps zur Fehlersuche
• “PRINT”-Anweisungen einbauen, um den
Wert bestimmter Variablen zu überprüfen
• Spezielle Compileroptionen wählen, um
zum Beispiel Feldbereichsüberschrei-
tungen anzuzeigen (Hinweise folgen)
Energiebilanzmodell(Aufgabe 4)
Projektübung Klimamodellierung (05-3034) – A. Paul
Punktmodell der Strahlungsbilanz
(Stocker 2004, Abschnitt 2.2)
414
dT Sh C T
dt
Gewöhnliche, nichtlineare Differentialgleichung erster Ordnung für die
unbekannte, zeitabhängige Variable T(t)
R 6371 km Erdradius
h 8.3 km Skalenhöhe
1.2 kg m-3 Luftdichte
C 1000 J kg-1 K-1 Spezifische Wärme
von Luft
T K Temperatur
0.3 Planetare Albedo
S 1367 W m-2 Solarkonstante
0.6 Emissions-
vermögen
5.67x10-8 W m-2 K-4 Stefan-Boltzmann-
Konstante
Gleichgewichtstemperatur des globalen Energiebilanzmodells: Die aus Messungen bestimmte mittlere Oberflächentemperatur beträgt 14°C (fett ausgezogen).
Eis-Albedo-Rückkopplung
2 3
2 3
2 3
1 1( ) .
2 3!t t t
dT d T d TT t t T t t t t
dt dt dt
T(t) in eine Taylorreihe entwickeln:
2 3
2
2 3
( ) 1 1.
2 3!
Korrekturterm der Ordnung
t t t
T t t T tdT d T d Tt t
dt t dt dt
t
t = n t, n=0,1,2,…
Nach der ersten Ableitung auflösen: Euler-Schema
Diskretisierung
3 4
2 3
3 4
2
( ) 1 1.
2 3! 4!
Korrekturterm der Ordnung
t t t
T t t T t tdT d T d Tt t
dt t dt dt
t
Ersetzen von t durch -t und addieren:Schema der zentrierten Differenzen
, ,dy
f x y xdx
0 0 .y x y
4, , ( , ) 1 .4
Sy T x t f x y y
• Das Euler-Verfahren ist das einfachste, aber
auch ungenaueste Verfahren zur Lösung der
gewöhnlichen Differentialgleichung erster
Ordnung
mit der Anfangsbedingung
Im Fall des Energiebilanzmodells ist
• Das Euler-Verfahren wertet die
Ableitung nur an den Stellen x und x+x
aus.
• Dies entspricht der Linearisierung der
langwelligen Ausstrahlung.
• Genauere Verfahren vom Typ “Runge-
Kutta k-ter Ordnung” verwenden weitere
Stützstellen im Intervall [x, x+x]
Runge-Kutta-Verfahren k-ter Ordnung
• Durch die Auswertung von f(x,y) an
weiteren Stützstellen im Intervall [x, x+x]
und eine geschickte Linearkombination
kann der Fehler von O(x) auf O[(x)k]
reduziert werden
Parameterized REAL variables
• REAL variables (floating point numbers)
are parameterized
• The kind type parameter specifies
minimum precision and exponent range
requirements.
! Parameter declarations
! Symbolic name for a real kind type with at least ! 15 decimal digits of precision and an exponent range ! from 10**300 to 10**(-300) (“double precision”)INTEGER, PARAMETER :: dp=SELECTED_REAL_KIND(P=15,R=300)
! Symbolic name for a real kind type with at least ! 6 decimal digits of precision and an exponent range! from 10**30 to 10**(-30) (“single precision”)INTEGER, PARAMETER :: sp=SELECTED_REAL_KIND(P=6,R=30)
! Symbolic name for a default real kind typeINTEGER, PARAMETER :: q=dp
! Variable declarationsREAL(KIND=q) :: dpressREAL(KIND=q), DIMENSION(1:km) :: p
Functions and subroutines REAL(KIND=q) FUNCTION feuler(y,s,dx) IMPLICIT NONE !----------------------------------------------------------------- ! This function integrates one time step using the forward Euler ! method for the ODE: dy/dx = f(x,y(x)) ! ! Input arguments: ! y = temperature (K) ! s = solar radiation (W m^(-2)) ! dx = time step (s) ! ! Result variable: ! feuler = dy ! ! Uses external function: rhs ! ! Based on code by M. Yoshimori !-----------------------------------------------------------------
REAL(KIND=q), INTENT(IN) :: y,s,dx
feuler = rhs(y,s)*dx
END FUNCTION feuler
The block IF construct
! Variable declarations! tol = criteria of convergence (K)REAL(KIND=q) :: tol[..]! Initializations tol = 1.0E-03_q[..]! Time loopDO itt=1,ittmax
[..]
! Test for convergence IF (ABS(tf – ti) < tol) THEN EXIT END IFEND DO