einführung in fortran 77 wissenschaftliche...

3
1 computational geodynamics Goethe University of Frankfurt Einführung in wissenschaftliche Programmiersprachen mit Geo-Anwendungen (GeoNumerik) Do 9 ct – 11:45 in Geowiss-GW 2.106 = Linux-Pool I H. Wallner [email protected] Download-Link: http://user.uni-frankfurt.de/~wallner/Geonumerik 7. Tag Plan Aufgabe “alle Fortran 77 Befehle” testen Dyke Abkühlung Analytische Lösung Finite Differenzen 1D (?) computational geodynamics Goethe University of Frankfurt Ffm, 13. Juni 2013 2 computational geodynamics Goethe University of Frankfurt Aufgabe (letzte Woche) Ein Fortran-Programm schreiben, in dem alle (nicht veralteten) Schlüsselwörter benutzt werden und die ihre Verwendung demonstrieren. FORTRAN 77 3 computational geodynamics Goethe University of Frankfurt c23456 PROGRAM all77 IMPLICIT LOGICAL(L) PARAMETER (MTDIM=20) INTEGER fall CHARACTER*72 text DIMENSION text(MTDIM) DATA text/ 1'Kopf: PROGRAM prgn, FUNCTION fktn(), SUBROUTINE sbrn()', 2'Aufruf: fktn(), CALL sbrn(), ??ENTRY esbrn()', 3'Ende: RETURN, STOP, END', 4'Deklaration: IMPLICIT, IMPLICIT NONE', 5' INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER', 6' DIMENSION, ?COMMON, ??EQUIVALENCE', 7' PARAMETER, EXTERNAL, INTRINSIC, SAVE, DATA, ?BLOCK DATA', 8'Kontrolle: GOTO mn1', 9' ?GOTO (mn1,mn2,mn3), n123', f' ??GOTO mnvariable,(mn1,mn2,mn3)', 1' ??GOTO mnvariable', 2' ??ASSIGN mn TO mnvariable', 3' IF(logaus) statement', 4' IF(logaus) THEN ... ELSE ... ENDIF', 5' ?IF (numaus) mn1,mn2,mn3', 6' CONTINUE, ??PAUSE', 7' DO mndo i=ia,ie,ink ... mndo, DO i=ia,ie ... ENDDO', 8'I/O: OPEN, CLOSE, INQUIRE', 9' READ, WRITE, PRINT', f' REWIND BACKSPACE ENDFILE FORMAT'/ PRINT *,'Liste aller FORTRAN77 Keywords:' PRINT '(5X,A)',text FORTRAN 77 c23456 L=.FALSE. PRINT '(/X,A)','Demo GOTO und IF in DO' DO 101 I=-1,7 PRINT 901,I 901 FORMAT(' DO mit',I3) 902 FORMAT(' GOTO-Marke ',I3,' angesprungen.') GOTO (11,12,13), I PRINT *,' I < 1 | I > 3 =>GOTO 14' GOTO 14 11 PRINT 902,11 GOTO 101 12 PRINT 902,12 GOTO 101 13 PRINT 902,13 GOTO 101 14 PRINT 902,14 IF (I) 21,22,23 PRINT *,' nach IF(I) 21,22,23' 21 PRINT 902,21 GOTO 101 22 PRINT 902,22 GOTO 101 23 PRINT 902,23 24 PRINT 902,24 IF (I.EQ.5) PRINT *,' I ist 5 und logisches L =',L IF (I.EQ.6) THEN L=.TRUE. END IF IF (I.EQ.6) PRINT *,' L ist ',L IF (I<6) GOTO 101 IF (I<7) THEN PRINT *,' IF(I<7) THEN - Fall' ELSE PRINT *,' IF(I<7) ELSE - Fall' END IF PRINT *,' vor CONTINUE' 101 CONTINUE Nich t au f de r Geon u me ri k “s i d e . 4 computational geodynamics Goethe University of Frankfurt c23456 PRINT '(/X,A)','Demo Unterprogramme' DO 201 fall=1,15 CALL uprg(fall) 201 PRINT *,' Nach CALL uprg fall =',fall 1 PRINT *,' SAVE ist aktiv.' PRINT '(/X,A)','Demo Common' DO 301 fall=1,3 PRINT *,'-FALL',fall CALL ucom1(fall) a=ucomaus(1) CALL ucom2(fall,4) a=ucomaus(1) a=ucomaus(2) 301 PRINT *,' ----' PRINT '(/X,A)','Demo I/O' CALL rw STOP 'all77' END INTEGER FUNCTION fktr6(k) fktr6=6 PRINT *,' fktr6 always retruns 6' END FUNCTION trigfkt(fn,arg) trigfkt=fn(arg) END FUNCTION proztest(fn,v) proztest=fn(v) END FUNCTION doppel(v) doppel=2*v END FUNCTION halb(v) halb=v*0.5 END FORTRAN 77 c23456 SUBROUTINE uprg(flag) INTEGER flag INTEGER fktr6 INTRINSIC sin, cos EXTERNAL doppel, halb inkfkt(k)=k+1 PRINT *,' Aufruf UPRG Fall',flag IF (flag==2) flag=inkfkt(flag) IF (flag<2) RETURN IF (flag==4) flag=fktr6(flag) IF (flag<1) STOP 'uprg' c ab 7 keine Veränderung von flag PI=4.*ATAN(1.) a=30.*PI/180. IF (flag==7) r=trigfkt(sin,a) IF (flag==8) r=trigfkt(cos,a) IF (flag>6 .AND. flag<9) PRINT *,' trifkt(sin/cos,',a,') =',r IF (flag==9) r=proztest(doppel,flag) IF (flag==10) r=proztest(halb,flag) a=flag IF (flag==9) r=proztest(doppel,a) IF (flag==10) r=proztest(halb,a) IF (flag>8 .AND. flag<11) * PRINT *,' proztest(doppel/halb,a=',flag,') =',r IF (flag>10) THEN i=0 IF (flag>13) i=1 r=forget(a,i) PRINT *,' forget(',a,',',i,') =>',r END IF c STOP 'uprg' END c23456 FUNCTION forget(v,i) DATA alt/0./ if(i==1) alt=0. m01=MOD(int(i),2) IF(m01==0) alt=1. forget=v*alt END SUBROUTINE ucom1(flag) INTEGER flag CHARACTER SUBT1*16 COMMON KOMMUN,PIF(3),SUBT1 SUBT1='SUBROUTINE ucom1' PRINT *,'CALL of ',SUBT1 KOMMUN=flag IF (flag<2) RETURN DO I=1,3 PIF(I)=I*3.1415 END DO END SUBROUTINE ucom2(flag,n) INTEGER flag CHARACTER SUBT2*16 DIMENSION PIF(8) COMMON KOMMUN,PIF,SUBT2 SUBT2='SUBROUTINE ucom2' PRINT *,'CALL of ',SUBT2 KOMMUN=flag IF (flag<2) RETURN PIF(4)=n*3.1415 IF (flag<3) RETURN DO 10 I=5,8 10 PIF(I)=-I END 5 computational geodynamics Goethe University of Frankfurt FORTRAN 77 c23456 FUNCTION ucomaus(flag) INTEGER flag CHARACTER*16 SUBT1,SUBT2 REAL ALT(8),DUM(2) COMMON KOMMUN,PIF(3),SUBT1 EQUIVALENCE (PIF,ALT) EQUIVALENCE (ALT(8),DUM), (DUM(2),SUBT2) PRINT 1000,flag IF (flag==1) THEN PRINT 1001,SUBT1 PRINT 1002,KOMMUN,PIF RETURN END IF IF (flag==2) THEN PRINT 1003,SUBT2 PRINT 1002,KOMMUN,ALT RETURN END IF 1000 FORMAT(' Ausgabe flag',I3) 1001 FORMAT(' SUBT1:"',A,'"') 1002 FORMAT(' KOMMUN =',I2/(' PIF ',F12.5)) 1003 FORMAT(' SUBT2:"',A,'"') END c23456 SUBROUTINE rw IMPLICIT LOGICAL(L) INTEGER wlun, rlun CHARACTER*16 fn PRINT *,'... in rw :' fn='IOfile77.txt' INQUIRE(FILE=fn,EXIST=lex) IF(.NOT.lex) PRINT *,'File ',fn,' nicht gefunden.' c IF(lex) PRINT *,'File ',FN,' existiert: STOP.' c IF(lex) STOP 'rw' IF(lex) PRINT *,'File ',fn,' wird überschrieben.' nb=wlun(13,fn) IF (nb.NE.0) STOP 'Schreibfehler' PRINT *,'File geschreiben.' PRINT *,fn(1:LEN_TRIM(fn)),' lesen:' nb=rlun(21,fn) IF (nb.LT.0) STOP 'Lesefehler' PRINT *,nb,' Zeilen gelesen und gelöscht.' fn='IOfile77.bin' PRINT *,' Unformattiers File ',fn nb=wbin(14,fn) IF (nb.LT.0) STOP 'Schreibfehler' PRINT *,nb,' Rekords geschreiben.' PRINT *,fn(1:LEN_TRIM(fn)),' lesen:' nb=rbin(15,fn) IF (nb.LT.0) STOP 'Lesefehler' PRINT *,nb,' Zeilen gelesen und gelöscht.' END c23456 INTEGER FUNCTION wlun(lun,fn) CHARACTER*(*) fn OPEN(lun,FILE=fn) WRITE(lun,1001) fn,lun 1001 FORMAT('Ich bin File ',A,' und war Unit',I3,'.') WRITE(lun,1002) (i,i=11,15) 1002 FORMAT(16I5) CLOSE(lun) wlun=0 END INTEGER FUNCTION rlun(lun,fn) CHARACTER*(*) fn CHARACTER*256 line rlun=0 OPEN(lun,FILE=fn,ERR=3,STATUS='OLD') 1 READ(lun,1001,END=2) line 1001 FORMAT(A) WRITE(6,1001) line(1:LEN_TRIM(line)) rlun=rlun+1 GOTO 1 2 CLOSE(lun,STATUS='DELETE') RETURN 3 rlun=-1 END 6 computational geodynamics Goethe University of Frankfurt Abkühlung eines Dikes Basaltisches Magma eruptiert in einer langen Spalte und erstarrt nach einiger Zeit. Das Abkühlverhalten soll modelliert werden.

Upload: lyngoc

Post on 05-Jun-2018

216 views

Category:

Documents


0 download

TRANSCRIPT

1

computational geodynamics Goethe University of Frankfurt

Einführung in wissenschaftliche Programmiersprachen mit Geo-Anwendungen (GeoNumerik)

Do 9 ct – 11:45 in Geowiss-GW 2.106 = Linux-Pool IH. Wallner [email protected]: http://user.uni-frankfurt.de/~wallner/Geonumerik

7. Tag Plan

Aufgabe “alle Fortran 77 Befehle” testenDyke Abkühlung Analytische Lösung Finite Differenzen 1D (?)

computational geodynamics Goethe University of Frankfurt

Ffm, 13. Juni 2013

2

computational geodynamics Goethe University of Frankfurt

Aufgabe (letzte Woche)

Ein Fortran-Programm schreiben, in dem alle (nicht veralteten) Schlüsselwörter benutzt werden und die ihre Verwendung demonstrieren.

FORTRAN 77

3

computational geodynamics Goethe University of Frankfurt

c23456 PROGRAM all77 IMPLICIT LOGICAL(L) PARAMETER (MTDIM=20) INTEGER fall CHARACTER*72 text DIMENSION text(MTDIM) DATA text/ 1'Kopf: PROGRAM prgn, FUNCTION fktn(), SUBROUTINE sbrn()', 2'Aufruf: fktn(), CALL sbrn(), ??ENTRY esbrn()', 3'Ende: RETURN, STOP, END', 4'Deklaration: IMPLICIT, IMPLICIT NONE', 5' INTEGER, REAL, DOUBLE PRECISION, COMPLEX, LOGICAL, CHARACTER', 6' DIMENSION, ?COMMON, ??EQUIVALENCE', 7' PARAMETER, EXTERNAL, INTRINSIC, SAVE, DATA, ?BLOCK DATA', 8'Kontrolle: GOTO mn1', 9' ?GOTO (mn1,mn2,mn3), n123', f' ??GOTO mnvariable,(mn1,mn2,mn3)', 1' ??GOTO mnvariable', 2' ??ASSIGN mn TO mnvariable', 3' IF(logaus) statement', 4' IF(logaus) THEN ... ELSE ... ENDIF', 5' ?IF (numaus) mn1,mn2,mn3', 6' CONTINUE, ??PAUSE', 7' DO mndo i=ia,ie,ink ... mndo, DO i=ia,ie ... ENDDO', 8'I/O: OPEN, CLOSE, INQUIRE', 9' READ, WRITE, PRINT', f' REWIND BACKSPACE ENDFILE FORMAT'/ PRINT *,'Liste aller FORTRAN77 Keywords:' PRINT '(5X,A)',text

FORTRAN 77

c23456 L=.FALSE. PRINT '(/X,A)','Demo GOTO und IF in DO' DO 101 I=-1,7 PRINT 901,I 901 FORMAT(' DO mit',I3) 902 FORMAT(' GOTO-Marke ',I3,' angesprungen.') GOTO (11,12,13), I PRINT *,' I < 1 | I > 3 =>GOTO 14' GOTO 14 11 PRINT 902,11 GOTO 101 12 PRINT 902,12 GOTO 101 13 PRINT 902,13 GOTO 101 14 PRINT 902,14 IF (I) 21,22,23 PRINT *,' nach IF(I) 21,22,23' 21 PRINT 902,21 GOTO 101 22 PRINT 902,22 GOTO 101 23 PRINT 902,23 24 PRINT 902,24 IF (I.EQ.5) PRINT *,' I ist 5 und logisches L =',L IF (I.EQ.6) THEN L=.TRUE. END IF IF (I.EQ.6) PRINT *,' L ist ',L IF (I<6) GOTO 101 IF (I<7) THEN PRINT *,' IF(I<7) THEN - Fall' ELSE PRINT *,' IF(I<7) ELSE - Fall' END IF PRINT *,' vor CONTINUE' 101 CONTINUE

Nicht auf der

Geonumerik “side”.

4

computational geodynamics Goethe University of Frankfurt

c23456 PRINT '(/X,A)','Demo Unterprogramme' DO 201 fall=1,15 CALL uprg(fall) 201 PRINT *,' Nach CALL uprg fall =',fall 1 PRINT *,' SAVE ist aktiv.'

PRINT '(/X,A)','Demo Common' DO 301 fall=1,3 PRINT *,'-FALL',fall CALL ucom1(fall) a=ucomaus(1) CALL ucom2(fall,4) a=ucomaus(1) a=ucomaus(2) 301 PRINT *,' ----'

PRINT '(/X,A)','Demo I/O' CALL rw

STOP 'all77' END INTEGER FUNCTION fktr6(k) fktr6=6 PRINT *,' fktr6 always retruns 6' END FUNCTION trigfkt(fn,arg) trigfkt=fn(arg) END FUNCTION proztest(fn,v) proztest=fn(v) END FUNCTION doppel(v) doppel=2*v END FUNCTION halb(v) halb=v*0.5 END

FORTRAN 77

c23456 SUBROUTINE uprg(flag) INTEGER flag INTEGER fktr6 INTRINSIC sin, cos EXTERNAL doppel, halb inkfkt(k)=k+1 PRINT *,' Aufruf UPRG Fall',flag IF (flag==2) flag=inkfkt(flag) IF (flag<2) RETURN IF (flag==4) flag=fktr6(flag) IF (flag<1) STOP 'uprg'c ab 7 keine Veränderung von flag

PI=4.*ATAN(1.) a=30.*PI/180. IF (flag==7) r=trigfkt(sin,a) IF (flag==8) r=trigfkt(cos,a) IF (flag>6 .AND. flag<9) PRINT *,' trifkt(sin/cos,',a,') =',r

IF (flag==9) r=proztest(doppel,flag) IF (flag==10) r=proztest(halb,flag) a=flag IF (flag==9) r=proztest(doppel,a) IF (flag==10) r=proztest(halb,a) IF (flag>8 .AND. flag<11) * PRINT *,' proztest(doppel/halb,a=',flag,') =',r IF (flag>10) THEN i=0 IF (flag>13) i=1 r=forget(a,i) PRINT *,' forget(',a,',',i,') =>',r END IF

c STOP 'uprg' END

c23456 FUNCTION forget(v,i) DATA alt/0./ if(i==1) alt=0. m01=MOD(int(i),2) IF(m01==0) alt=1. forget=v*alt END

SUBROUTINE ucom1(flag) INTEGER flag CHARACTER SUBT1*16 COMMON KOMMUN,PIF(3),SUBT1 SUBT1='SUBROUTINE ucom1' PRINT *,'CALL of ',SUBT1 KOMMUN=flag IF (flag<2) RETURN DO I=1,3 PIF(I)=I*3.1415 END DO END

SUBROUTINE ucom2(flag,n) INTEGER flag CHARACTER SUBT2*16 DIMENSION PIF(8) COMMON KOMMUN,PIF,SUBT2 SUBT2='SUBROUTINE ucom2' PRINT *,'CALL of ',SUBT2 KOMMUN=flag IF (flag<2) RETURN PIF(4)=n*3.1415 IF (flag<3) RETURN DO 10 I=5,8 10 PIF(I)=-I END

5

computational geodynamics Goethe University of Frankfurt

FORTRAN 77

c23456 FUNCTION ucomaus(flag) INTEGER flag CHARACTER*16 SUBT1,SUBT2 REAL ALT(8),DUM(2) COMMON KOMMUN,PIF(3),SUBT1 EQUIVALENCE (PIF,ALT) EQUIVALENCE (ALT(8),DUM),(DUM(2),SUBT2) PRINT 1000,flag IF (flag==1) THEN PRINT 1001,SUBT1 PRINT 1002,KOMMUN,PIF RETURN END IF IF (flag==2) THEN PRINT 1003,SUBT2 PRINT 1002,KOMMUN,ALT RETURN END IF 1000 FORMAT(' Ausgabe flag',I3) 1001 FORMAT(' SUBT1:"',A,'"') 1002 FORMAT(' KOMMUN =',I2/(' PIF ',F12.5)) 1003 FORMAT(' SUBT2:"',A,'"') END

c23456 SUBROUTINE rw IMPLICIT LOGICAL(L) INTEGER wlun, rlun CHARACTER*16 fn PRINT *,'... in rw :' fn='IOfile77.txt' INQUIRE(FILE=fn,EXIST=lex) IF(.NOT.lex) PRINT *,'File ',fn,' nicht gefunden.'c IF(lex) PRINT *,'File ',FN,' existiert: STOP.'c IF(lex) STOP 'rw' IF(lex) PRINT *,'File ',fn,' wird überschrieben.'

nb=wlun(13,fn) IF (nb.NE.0) STOP 'Schreibfehler' PRINT *,'File geschreiben.'

PRINT *,fn(1:LEN_TRIM(fn)),' lesen:' nb=rlun(21,fn) IF (nb.LT.0) STOP 'Lesefehler' PRINT *,nb,' Zeilen gelesen und gelöscht.'

fn='IOfile77.bin' PRINT *,' Unformattiers File ',fn nb=wbin(14,fn) IF (nb.LT.0) STOP 'Schreibfehler' PRINT *,nb,' Rekords geschreiben.'

PRINT *,fn(1:LEN_TRIM(fn)),' lesen:' nb=rbin(15,fn) IF (nb.LT.0) STOP 'Lesefehler' PRINT *,nb,' Zeilen gelesen und gelöscht.'

END

c23456 INTEGER FUNCTION wlun(lun,fn) CHARACTER*(*) fn OPEN(lun,FILE=fn) WRITE(lun,1001) fn,lun 1001 FORMAT('Ich bin File ',A,' und war Unit',I3,'.') WRITE(lun,1002) (i,i=11,15) 1002 FORMAT(16I5) CLOSE(lun) wlun=0 END

INTEGER FUNCTION rlun(lun,fn) CHARACTER*(*) fn CHARACTER*256 line rlun=0 OPEN(lun,FILE=fn,ERR=3,STATUS='OLD') 1 READ(lun,1001,END=2) line 1001 FORMAT(A) WRITE(6,1001) line(1:LEN_TRIM(line)) rlun=rlun+1 GOTO 1 2 CLOSE(lun,STATUS='DELETE') RETURN 3 rlun=-1 END

6

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Basaltisches Magma eruptiert in einer langen Spalte und erstarrt nach einiger Zeit. Das Abkühlverhalten soll modelliert werden.

7

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Basaltisches Magma eruptiert in einer langen Spalte und erstarrt nach einiger Zeit. Das Abkühlverhalten soll modelliert werden.Unser erstes Modell sollte einigermaßen einfach sein, damit wir zuviel Physik lernen müssen und damit einhergehend mehr Mathematik und schließlich sollte der Programmieraufwand im Kurs machbar sein.

Ship Rock 8

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Basaltisches Magma eruptiert in einer langen Spalte und erstarrt nach einiger Zeit. Das Abkühlverhalten soll modelliert werden.Unser erstes Modell sollte einigermaßen einfach sein, damit wir zuviel Physik lernen müssen und damit einhergehend mehr Mathematik und schließlich sollte der Programmieraufwand im Kurs machbar sein. Vereinfachungen

Geometrie, Struktur:lang erstreckte und tief reichender Gang realtiv zu seiner konstanten Breite 1D - Problemx=0 in Gangmitte symmetrische, nur x ≥ 0

9

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Basaltisches Magma eruptiert in einer langen Spalte und erstarrt nach einiger Zeit. Das Abkühlverhalten soll modelliert werden.Unser erstes Modell sollte einigermaßen einfach sein, damit wir zuviel Physik lernen müssen und damit einhergehend mehr Mathematik und schließlich sollte der Programmieraufwand im Kurs machbar sein. Vereinfachungen

Geometrie, Struktur:lang erstreckte und tief reichender Gang realtiv zu seiner konstanten Breite 1D - Problemx=0 in Gangmitte symmetrische, nur x ≥ 0

10

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Basaltisches Magma eruptiert in einer langen Spalte und erstarrt nach einiger Zeit. Das Abkühlverhalten soll modelliert werden.Unser erstes Modell sollte einigermaßen einfach sein, damit wir zuviel Physik lernen müssen und damit einhergehend mehr Mathematik und schließlich sollte der Programmieraufwand im Kurs machbar sein. Vereinfachungen

Geometrie, Struktur:lang erstreckte und tief reichender Gang realtiv zu seiner konstanten Breite 1D - Problemx=0 in Gangmitte symmetrische, nur x ≥ 0

Material: Parameter unterscheiden sich wenig relativ anderen Größen,z.B. Diche maximal 30%, Wärmeleitfähigkeit höchstens Faktor 2homogen und isotrop (nur 1D)

Phasen: Gerade erstarrt: fest, keine Schmelze mehr, nur eine Phase

11

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Wärmetransport in der ErdeStrahlungKonduktion, WärmeleitungKonvektion

12

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Wärmetransport in der ErdeStrahlungKonduktion, WärmeleitungKonvektion

Wärmeleitunggewöhnliche Differentialgleichung 1. OrdnungDiffusion : Fourier's 1. Gesetz

q = - k grad T oder q = -k T

q – Wärmeflussdichte [ W/m2 ], T – Temperatur [ K, °C ]k – Wärmeleitfähigkeit [ W/m/K ] (temperature conductivity)κ – Temperaturleitfähigkeit [ m2/s ] (temperature diffusivity) κ = k / ρ /cP

ρ – Dichte [ kg/m3 ]cP – Wärmekapazität [ J/m3/K ]

13

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Analytische Lösung der Wärmeleitung für einen Dike

T(x,t) = T0 + (TD – T0) ( erf( (D+x)/(4 κ t)1/2 ) + erf( (D-x)/(4 κ t)1/2 ) )mitTD – Temperatur des Dikes

T0 – Temperatur der Umgebung

D – halbe Breite des Dikes [m]x – Ort [m]t – Zeit [s]κ – Temperaturleitfähigkeit [ m2/s ]erf(x) – Errorfunction, Gauß'sche Fehlerfunktion

typische Materialwerte für Basalt:k – 1.3 – 2.9 W/m/K Schmelztemperatur ca. 1000°Cρ – 2950 kg/m3 an der ErdoberflächecP – 2.3 – 3.6 MJ/m3/K Breite im Meterbereich

14

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Analytische Lösung der Wärmeleitung für einen Dike

T(x,t) = T0 + (TD – T0) ( erf( (D+x)/(4 κ t)1/2 ) + erf( (D-x)/(4 κ t)1/2 ) )

mitTD – Temperatur des Dikes

T0 – Temperatur der Umgebung

D – halbe Breite des Dikes [m]t - Zeit [s]κ – Temperaturleitfähigkeit [ m2/s ]erf(x) – Errorfunction, Gauß'sche Fehlerfunktion

typische Materialwerte für Basalt:k – 1.3 – 2.9 W/m/K Schmelztemperatur ca. 1000°Cρ – 2950 kg/m3 an der ErdoberflächecP – 2.3 – 3.6 MJ/m3/K Breite im MeterbereichDo

it

15

computational geodynamics Goethe University of Frankfurt

Abkühlung eines Dikes

Analytische Lösung der Wärmeleitung für einen Dike

T(x,t) = T0 + (TD – T0) ( erf( (D+x)/(4 κ t)1/2 ) + erf( (D-x)/(4 κ t)1/2 ) )

Plot mitMatlab :

16

computational geodynamics Goethe University of Frankfurt

Begonnenes Dikeprogramm fertigschreibe und erweitern (Fortran zum Berechnen und Matlab zum Plotten).

(Zur Hilfe wird meine Aufgabenlösung bald downloadbar sein. )Dikeprogramm dann erweitern:Zeitlicher Verlauf interessanter Punkte, Gangmitte, Kontakt, im Abstand von 3 Dikebreiten, berechnen und plotten.

( Geplant: Lava fließt an der Oberfläche aus und bildet eine Flutbasaltdecke. Wie verhält sich die Temperatur auf einem Tiefenprofil ?Lösung suchen, programmieren, plotten. )

Aufgabe