Nachtrag: Statischer Druck (Aufgabe 3) Projektübung Klimamodellierung (05-3034) – A. Paul.

Post on 05-Apr-2015

104 views 0 download

Transcript of 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