Die Präsentation wird geladen. Bitte warten

Die Präsentation wird geladen. Bitte warten

Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ.

Ähnliche Präsentationen


Präsentation zum Thema: "Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ."—  Präsentation transkript:

1 Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ REAL sein.

2 Division ganzer Zahlen
Betrachte die Auswertung der Anweisung a = b*c/d, wobei b eine reelle Variable mit dem Wert ist, während c und d ganze Zahlen mit den Werten 9 und 10 sind. b*c wird zuerst ausgewertet, wobei c zunächst in den reellen Wert 9.0 umgewandelt wird. Danach wird der Wert von d in seinen reellen Gegenwert umgewandelt, bevor die Division ausgeführt wird. Ellis et al. (1994), S. 48

3 Division ganzer Zahlen
Was passiert, wenn der Ausdruck in der folgenden, mathematisch gleichwertigen Form geschrieben worden wäre: a = c/d*b ? In der ersten Operation sind beide Operanden ganze Zahlen, so dass der Unterausdruck c/d als ganzzahlige Operation ausgeführt wird. Das mathematische Ergebnis (0.9) wird abgeschnitten und liefert ein Zwischenergebnis von Null. Ellis et al. (1994), S. 49

4 Literaturhinweis Ellis, T.M.R., Phillips, Ivor R., and Lahey, Thomas M.: Fortran 90 Programming, Addison-Wesley Publishing Company, 1994. M. Schulz

5 Mathematical Operations
Deg_C = 5.0 * (Deg_F ­ 32.0) / 9.0  The expression on the RHS is evaluated and assigned to the REAL variable Deg_C * is the multiplication operator, ­ is the subtraction operator, / is the division operator, ** is the exponentiation, and = is the assignment operator. M. Schulz

6 Important Built-In Functions
ABS(x) Absolute value LOG(x) Natural logarithm LOG10(x) Base-10 logarithm EXP(x) Natural exponential SQRT(x) Square root SIN(x) Sine (x in radians!) COS(x) Cosine TAN(x) Tangent ASIN(x) Arcsine ACOS(x) Arccosine ATAN(x) Arctangent INT(x) Convert real to integer, truncation (7.8  7) NINT(x) Convert real to integer, rounding (7.8  8) REAL(i) Convert integer to real (1  1.0)

7 Unix-Tipp Wenn das aktuelle Verzeichnis “.” nicht im Suchpfad enthalten ist, dann kann man ein Programm a.exe mit dem Befehl ./a.exe starten.

8 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

9 G95-Optionen Option Bedeutung g95 --help g95 --target-help
g95 –fbounds-check Prüfe Feld- und Zeichenkettengrenzen

10 Fortran-Links http://www.g95.org/ http://de.wikibooks.org/wiki/Fortran

11 Vergleichsoperatoren
Bedeutung < kleiner <= kleiner oder gleich == gleich /= ungleich > größer >= größer oder gleich

12 Energiebilanzmodell (Aufgabe 4)
Projektübung Klimamodellierung ( ) – A. Paul

13 Punktmodell der Strahlungsbilanz
(Stocker 2004, Abschnitt 2.2) Gewöhnliche, nichtlineare Differentialgleichung erster Ordnung für die unbekannte, zeitabhängige Variable T(t)

14 R 6371 km Erdradius h 8.3 Skalenhöhe r 1.2 kg m-3 Luftdichte C 1000 J kg-1 K-1 Spezifische Wärme von Luft T K Temperatur a 0.3 Planetare Albedo S 1367 W m-2 Solarkonstante e 0.6 Emissions-vermögen s 5.67x10-8 W m-2 K-4 Stefan-Boltzmann-Konstante

15 Gleichgewichtstemperatur des globalen Energiebilanzmodells: Die aus Messungen bestimmte mittlere Oberflächentemperatur beträgt 14°C (fett ausgezogen).

16 Eis-Albedo-Rückkopplung
Die Eis-Albedo-Rückkopplung soll durch folgende Abschätzung der Elbedo parameterisiert werden:

17 Diskretisierung t = n Dt, n=0,1,2,…
T(t) in eine Taylorreihe entwickeln: Nach der ersten Ableitung auflösen: Euler-Schema

18 Ersetzen von Dt durch -Dt und addieren:
Schema der zentrierten Differenzen

19 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

20 Das Euler-Verfahren wertet die Ableitung nur an den Stellen x und x+Dx 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+Dx]

21 Runge-Kutta-Verfahren k-ter Ordnung
Durch die Auswertung von f(x,y) an weiteren Stützstellen im Intervall [x, x+Dx] und eine geschickte Linearkombination kann der Fehler von O(Dx) auf O[(Dx)k] reduziert werden

22 Die Vorschrift für das klassische Runge-Kutta-Verfahren 4
Die Vorschrift für das klassische Runge-Kutta-Verfahren 4. Ordung lautet: Stocker (2004), S. 33

23 Parameterisierte REAL-Variablen
REAL-Variablen (reelle Zahlen) sind „parameterisiert“. Der kind-Typparameter legt die Anforderungen an die minimale Genauigkeit und den Bereich des Exponenten fest.

24 ! Variable declarations REAL(KIND=q) :: dpress
! 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) ! 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 type INTEGER, PARAMETER :: q=dp ! Variable declarations REAL(KIND=q) :: dpress REAL(KIND=q), DIMENSION(1:km) :: p

25 FUNCTION- und SUBROUTINE-Unterprogramme
FUNCTION-Unterprogramme berechnen einen einzigen Wert, der an der Aufrufstelle eingesetzt wird. SUBROUTINE-Unterprogramme gestatten die gleichzeizige Berechnung mehrerer Werte. Wehnes (1985), Kapitel 6, S. 134

26 FUNCTION- und SUBROUTINE-Unterprogramme
SUBROUTINE rk4(y,dx,yp) IMPLICIT NONE ! Dummy arguments REAL(KIND=q), INTENT(IN) :: y,dx REAL(KIND=q), INTENT(OUT) :: yp ! Local variables ! dy1, dy2, dy3, dy4 = correspond to K1, K2, K3, K4 in ! fourth-order Runge-Kutta formula REAL(KIND=q) :: dy1,dy2,dy3,dy4 dy1 = f(y) dy2 = f(y + dx/2.0_q*dy1) dy3 = f(y + dx/2.0_q*dy2) dy4 = f(y + dx*dy3) yp = (dy _q*dy _q*dy3 + dy4)/6.0 END SUBROUTINE rk4

27 Block IF-Struktur ! Variable declarations
! tol = criteria of convergence (K) REAL(KIND=q) :: tol [..] ! Initializations tol = 1.0E-03_q ! Time loop DO itt=1,ittmax ! Test for convergence IF (ABS(tf – ti) < tol) THEN EXIT END IF END DO Wehnes (1985), Kapitel 4, S. 90


Herunterladen ppt "Reelle Zahlen Variablen, die grundsätzlich reelle Werte annehmen können oder in Ausdrücken erscheinen, die einen reelllen Wert liefern, sollten vom Typ."

Ähnliche Präsentationen


Google-Anzeigen