Präsentation herunterladen
Die Präsentation wird geladen. Bitte warten
Veröffentlicht von:Willafried Reichenbach Geändert vor über 10 Jahren
1
Statischer Druck (Aufgabe 3) Projektübung Klimamodellierung (05-3034) – A. Paul
2
Literatur Open University, Oceanography Course Team (1989), Ocean Circulation, pp. 40. –Sections 3.3.1, Pressure Gradients in the Ocean
3
Der statische Druck p in einer bestimmiten Tiefe z ist die Gewichtskraft, die die Wassersäule auf eine Flächeneinheit ausübt: g: Schwerebeschleunigung
4
Ist die Dichte des Meerwassers, dann kann man schreiben: Für den statischen Druck auf eine Flächeneinheit:
5
Mit dem Ursprung der z-Achse an der Meeresoberfläche und positiv nach oben, negativ nach unten: Dies ist die statische Grundgleichung.
6
Die statische Grundgleichung gilt nur in dieser Form, wenn die Dichte von der Tiefe unabhängig ist. z 0 Dichte als konstant angenommen oder gemittelt Druck p Der Druck p in der Tiefe z ist einfach : Nach Open University Abb. 3.9b
7
Gewöhnlich verändert sich die Dichte mit der Tiefe. z 0 Dichte verändert sich stetig mit der Tiefe Schicht der Dicke dz trägt den Druck dp bei Druck p Der Druck p in der Tiefe z ist die Summe ( ) aller Drücke dp : Nach Open University Abb. 3.9a
8
Horizontale Druckgradienten setzen den Ozean in Bewegung. Horizontale A B z z x in allen Tiefen Nach Open University Abb. 3.10 Dichte als konstant angenommen
9
Primzahlen (Aufgabe 2) Projektübung Klimamodellierung (05-3034) – A. Paul
10
Hinweise Fortran-Tutorial: http://www.fortran.de.vu/http://www.fortran.de.vu/ Die folgenden Folien enthalten alle Bausteine für die Lösung der Aufgabe 2 (Bestimmung der Primzahlen zwischen 2 und N )
11
Aufbau eines Hauptprogramms Ein Hauptprogramm besteht aus Anweisungen und Kommentaren. –Anweisungen (statements) unterteilt man in: ausführbare (exectutable) Anweisungen nichtausführbare (nonexecutable) Anweisungen –Kommentarzeilen beginnen mit ! Nach: Wehnes, Harald, Strukturierte Programmierung in FORTRAN 77, München 1985.
12
Reihenfolge der Anweisungen –Einleiten mit PROGRAM -Anweisung –Vereinbarungsteil: Konstanten und Variablen vereinbaren –Aktionsteil –Abschließen mit END PROGRAM -Anweisung
13
Konstanten (constants) sind Größen, deren Werte während des Programmablaufs nicht verändert werden können. Variablen können während der Programmausführung verschiedene Werte annehmen.
14
Man sollte alle Größen durch explizite Typanweisungen vereinbaren. Die Anweisung IMPLICIT NONE erlaubt es, Abweichungen von dieser Regel festzustellen.
15
PROGRAM primzahlen IMPLICIT NONE ! Konstantenvereinbarungen ! Variablenvereinbarungen ! Ausführbare Anweisungen END PROGRAM primzahlen
16
INTEGER : ganze Zahlen –im Arbeitsspeicher des Computers ohne Dezimalteil abgelegt REAL : reelle Zahlen –in Gleitpunktdarstellung (mit Mantisse und Exponent) gespeichert CHARACTER(LEN=n) : Zeichenkette der Länge n –darf n Zeichen enthalten
17
Konstantenvereinbarungen ! Konstanten ! output = Dateinummer (unit) für ! Ausgabe ! n = obere Schranke ! für Primzahlsuche INTEGER, PARAMETER :: output=7,n=100000 Die Dateinummern 5 und 6 sind für die Konsole und den Bildschirm reserviert.
18
Variablenvereinbarungen ! Variablen ! i,j = Schleifenvariablen ! m = Zahl der Schleifendurchläufe ! a = Feld (Vektor) mit Primzahlen ! fname = Dateiname INTEGER :: i,j,m INTEGER, DIMENSION(2:n) :: a CHARACTER(LEN=20) :: fname
19
! Lege die Ausgabedatei an ! und ordne ihr eine Dateinummer zu fname = "primes2.dat" OPEN(UNIT=output,FILE=fname, STATUS="REPLACE") ! Schließe die Ausgabedatei CLOSE (UNIT=output) Öffnen und Schließen einer Datei
20
Weitere ausführbare Anweisungen "Man schreibe alle Zahlen von 2 bis N auf." ! Initialisierung ! - Definiere ein Feld a ! mit den Elementen 2 bis n. ! - Setze zunächst alle Elemente ! auf 1 (= Primzahl) a(2:n) = 1
21
"Ist n 2 größer als N, so stoppe man den Prozess." ! Setze die Zahl der Schleifendurchläufe ! auf die ganze Zahl, die der ! Quadratwurzel aus n am nächsten kommt. m = NINT(SQRT(REAL(n)))
22
DO i=2,m ! m = Zahl der Schleifendurchläufe IF (a(i) == 1) THEN ! "die erste nicht gestrichene Zahl" j = i + i ! "streiche dann jede i-te Zahl" DO IF (j > n) EXIT a(j) = 0 ! setze auf 0 (= keine Primzahl) j = j + i END DO END IF END DO "Man rahme die Zahl 2 ein und streiche dann jede zweite Zahl. "Ist i die erste nicht gestrichene Zahl, so rahme man i ein und streiche dann jede i-te Zahl." Schleifen und Verzweigungen
23
Ausgabe in eine Datei Alle eingerahmten bzw. nicht gestrichenen Zahlen sind Primzahlen. ! Schreibe die Primzahlen in die Ausgabedatei DO i=2,n IF (a(i) == 1) WRITE (UNIT=output,FMT=*) i END DO
Ähnliche Präsentationen
© 2024 SlidePlayer.org Inc.
All rights reserved.