Sie sind auf Seite 1von 26

Programmierung der numerischen Lsung einer 2D akkustischen Wellengleichung

Martin Vgele Sebastian Beyer

25. Februar 2011

Inhaltsverzeichnis
1 Einleitung 1.1 Die 2D Gleichung der akkustischen Welle . . . 1.2 Diskretisierung der Wellengleichung . . . . . . . 1.3 Approximation der Ableitung zweiter Ordnung 1.4 Approximierte Version der Wellengleichung . . 2 Programm 2.1 Liste der Variablen und ihrer Bedeutung 2.2 Programmstruktur . . . . . . . . . . . . 2.3 Fortran Code . . . . . . . . . . . . . . . 2.4 Kompilieren und Linken . . . . . . . . . 3 Experimente und Auswertung 3.1 Variation der Wellenfrequenz f . . . 3.2 Simulieren einer Grenzschicht . . . . 3.3 Stabilitt des Euler Verfahrens (CFL 3.4 Dnne Schichten . . . . . . . . . . . 4 Vorschlge zur Verbesserung des Kurses . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . . 3 3 5 5 6

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

7 . 7 . 8 . 9 . 13 14 15 17 21 23 25

. . . . . . . . . . . . . . Kriterium) . . . . . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

. . . .

1 Einleitung
Die Aufgabe der Semesterarbeit besteht darin, die zweidimensionalen Wellengleichung mittels Fortran 95 numerisch zu lsen und anschlieend unterschiedliche Experimente durch Variation der Variablen mit MATLAB grasch darzustellen und zu analysieren.

1.1 Die 2D Gleichung der akkustischen Welle


Bei der verwendeten Dierentialgleichung der akkustischen Welle handelt es sich zu Begin um ein wohldeniertes Anfangswertproblem (auch Cauchy-Problem), bei dem aus bekannten Anfangswerten p1 und p2 zu einem diskreten Zeitpunkt t0 die Lsung der i,k i,k Gleichung eindeutig bestimmt werden kann und somit durch Approximation der Wellengleichung eine Lsung fr pn bestimmt wird. Die verwendete 2D Gleichung fr akkusi,k tische Wellen leitet sich hierbei aus geforderten Gleichgewichtsbedingungen in einem Volumen V ab, sodass die resultierende Kraft, sowie das resultierende Drehmoment verschwinden: F dV +
V S

P df = 0 (resultierendeKraf t) (x P )df = 0 (resultierendesM oment)


S

(1.1) (1.2)

(x F )dV +
V

Hierbei steht F fr alle auftretenden Volumenkrfte und P fr den Spannungsvektor der senkrecht auf der Oberche des Volumenelements steht. Aus Pi = pij nj fr alle Raumrichtungen des Spannungsvektors in Schreibweise der Summenkonvention und durch Anwendung des Gauschen Satzes knnen beide Integrale aus (1.1) zusammengefasst werden und es folgt: (Fi + div Pi )dV = 0
V

(1.3)

und da diese Annahme fr alle Volumen gelten soll Fi + ( pij pij + ) = 0. xj zj (1.4)

Durch das Zerlegen der Volumenkrfte Fi in Fi = ddtui +fi , (fi : brige Volumenkrfte) 2 d und durch das Ersetzen der substantiellen Dierentation dt durch die partielle t , da wir nur innitesimale Deformationen betrachten, erhalten wir so die zweidimensionale Bewegungsgleichung mit: pij pij 2 ui + ) + fi . (1.5) 2 =( t xj zj Wird nun weiter von idealer Elastizitt (ohne Deformation tritt keine Spannung im Impulstrger auf) und einem isotropen Medium ausgegangen, so lsst sich durch die lineare SpannungsDehnungsBeziehungen aus der Bewegungsgleichung (1.5) die allgemeine zweidimensionale Wellengleichung im homogenen und isotropen Medium ableiten: 2u 1 2u = 2 2 (+S) (1.6) x2 c t wobei hierbei das Verschiebungsfeld u Gegenstand der Untersuchung ist. In unserer vorliegenden Problemstellung, wird allerdings die Ausbreitung einer Kompressionswelle untersucht, sodass anstelle des Verschiebungsfeldes das Druckfeld p betrachtet wird. Das Lsen der Wellengleichung bedeutet also nichts anderes, als das sich ausbreitende Druckfeld zu einer bestimmten Zeit in einem zweidimensionalen Feld zu berechnen. Hierfr gehen wir weiter von einem homogenen Impulstrger aus, wodurch die Wellengleichung als eine Dierentialgleichung zweiter Ordnung dargestellt wird: 2p 2p 2p = c2 ( 2 + 2 ) + S t2 x z (1.7)

Das Druckfeld wird hierbei durch p=p(x,z,t), die Ausbreitungsgeschwindigkeit der akkustischen Wellen durch c=c(x,z) gegeben. S=(x,z,t) ist der Quellterm der Welle und simuliert eine zweidimensionale und radiale Punktquelle. Hierbei wird das Achsensystem horizontal bzw. vertikal durch x und z aufgespannt, wobei Quellterm und Druckfeld von der Zeit t abhngen.

1.2 Diskretisierung der Wellengleichung


Zum Lsen der Wellengleichung wird im Folgenden die Ableitungen zweiter Ordnung in der DGL approximiert. In diesem Fall bleibt der Lsungsansatz bersichtlich genug, wohingegen die Unterschiede des Druckfeldes bei diskretem Zeitpunkt t ausreichend genau sind. Hierfr wird das Druckfeld rumlich als auch zeitlich in Intervalle von x und z bzw. t unterteilt. pn = p(ix, kz, nt). (1.8) i,k Jetzt ist jeder Raumpunkt durch x = ix (i = 1, ..., Nx ) und z = kz (k = 1, ..., Nz ), jeder Zeitpunkt durch t = nt (n = 1, ..., Nt ) eindeutig festgelegt.

1.3 Approximation der Ableitung zweiter Ordnung


Da jeder Raum- und Zeitpunkt eindeutig bestimmt wurde (1.8), ist es jetzt mglich die Ableitungen zweiter Ordnung aus (1.7) mithilfe der Finiten-Dierenzen-Methode zu approximieren. Hierbei werden die Ableitungen an den Kreuzungspunkten der aufeinander senkrecht stehenden Kordinatenachsen durch Dierenzen approximiert und es gilt (ohne Beweis): pn+1 2pn + pn1 2p i,k i,k i,k 2 2 t (t) (1.9)

und analog dazu die Entwicklung der rumlichen Ableitungen


n n pn 2p i+1,k 2pi,k + pi1,k x2 (x)2

(1.10)

und
n n pn 2p i,k+1 2pi,k + pi,k1 . z 2 (z)2

(1.11)

1.4 Approximierte Version der Wellengleichung


Setzen wir nun die approximierten Ableitungen Gl.(1.9-1.11) in unsere Ausgangsgleichung Gl.(1.7) ein: pn+1 2pn + pn1 i,k i,k i,k (t)2 = c2 i,k
n n pn i+1,k 2pi,k + pi1,k

(x)2

n n pn i,k+1 2pi,k + pi,k1

(z)2

n + Si,k .

(1.12)
n Hierbei ist ci,k die Ausbreitungsgeschwindigkeit der Welle und Si,k unser zeitabhngiger Quellterm. Wie man auf der linken Seite der Gleichung (1.12) sehen kann, beinhaltet die Gleichung Druckfelder zu drei aufeinanderfolgenden Zeitschritten (n + 1,n und n 1). Um nun das Druckfeld pn+1 zu erhalten, muss (1.12) nur noch umgestellt werden. i,k n n pn i+1,k 2pi,k + pi1,k n n pn i,k+1 2pi,k + pi,k1

pn+1 i,k

2pn pn1 +(t)2 i,k i,k

c2 i,k

(x)2

(z)2

n + Si,k

(1.13) Zwar wurde mit Hilfe der Approximation aus dem Anfangswertproblem zweiter Ordnung eine ausreichend genaue Lsung gefunden, allerdings ist es jetzt notwendig, dass zu Anfang p1 und p2 festgelegt werden, was in unserem Fall bedeutet, dass diese Null gesetzt i,k i,k n1 werden und der Impuls allein durch den Quellterm gegeben wird. Da so pn und pi,k i,k bereits fr jeden Raumpunkt (i, k) bekannt sind, kann pn+1 einfach bestimmt werden. i,k Die folgenden Zeitschritte werden also auf diese Weise rekursiv aus den vorhergehenden Werten berechnet.

2 Programm
2.1 Liste der Variablen und ihrer Bedeutung
In unserem Programm zur Bestimmung der numerischen Lsung der zweidimensionalen Wellengleichung verwenden wir die folgenden Variablen: Type integer,parameter integer,parameter integer integer integer integer integer integer real real real real real real real real,array(nx,nz) real,array(nx,nz) real,array(nx,nz) real,array(nx,nz) real,array(nx,nz) real,array(nx,nz) Name nx nz nt isx isz i k n dx dz dt c fmax t amx p pp c2 aux1 aux2 tmp Startwert 400 400 500 150 160 Bedeutung Anzahl von Gitterpunkten in X-Richtung Anzahl von Gitterpunkten in Z-Richtung Absolute Zahl der Zeitschritte X-Position der Quelle Z-Position der Quelle Zhlervariable X-Richtung Zhlervariable Z-Richtung Zhlervariable Durchlufe rumliche Diskretisierung in Metern in X-Richtung rumliche Diskretisierung in Metern in Z-Richtung Gre der Zeitschritte in Sekunden Wellenausbreitungsgeschwindigkeit in m/s Maximale Wellenfrequenz in Hz aktuelle Zeit Absolutbetrag des grten Drucks aktuelles Druckfeld vorheriges Druckfeld Wellenausbreitungsgeschwindigkeit Hilfsarray 1 Hilfsarray 2 Hilfsarray 3

2.5 2.5 0.0005* 1500* 100* 2.5 2.5 0 0 c2 * 0 0 0

*variiert in den Experimenten

2.2 Programmstruktur
Der Hauptprogrammteil ac2d ist folgendermaen aufgebaut: Programmanfang Deklaration der Variablen und Arrays nen der snapshots Datei Loop ber die Zeitschritte: Berechnung des nchsten Schrittes im Druckfeld(*) Fr alle 50 Zeitschritte: Maximum des Absolutwerts des Drucks berechnen und ausgeben Fr alle 25 Zeitschritte: Das gesamte Wellenfeld in die snapshots Datei schreiben Schlieen der snapshots Datei

(*) Das Druckfeld pn+1 wird durch Aufrufen der Unterprogramme dif x2d und dif z2d i,k wie folgt berechnet: Berechnung der Ableitung des Druckfelds p nach x (in allen Gitterpunkten) call difx2d(p,aux1,dx,nx,nz)

Berechnung der Ableitung des Druckfelds p nach z (in allen Gitterpunkten) call difz2d(p,aux2,dz,nx,nz)

Die resultierenden Arrays aux1 und aux2 addieren und in aux1 abspeichern Das Ergebnis mit c2 multiplizieren und wiederum in aux1 abspeichern Den Quellterm fwave(t,fmax) an Position (isx, isz) zu aux1 hinzufgen Mit der quadrierten Zeitschrittgre dt multiplizieren Zwei Mal das aktuelle Druckfeld p addieren und dann das vorherige Druckfeld pp subtrahieren Das Ergebnis nach pp schreiben Den Inhalt von p und pp vertauschen

2.3 Fortran Code


1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29

program ac2d implicit none ! -- - - - - - - - - - - - - - - - - - - INTERFACE - - - - - - - - - - - - - - - - - - - - - interface subroutine difx2d (p , aux1 , dx , nx , nz ) integer :: nx , nz real :: dx real , dimension (: ,:) :: p , aux1 end subroutine difx2d subroutine difz2d (p , aux2 , dx , nx , nz ) integer :: nx , nz real :: dx real , dimension (: ,:) :: p , aux2 end subroutine difz2d function fwave (t , fmax ) real :: t , fmax end function fwave end interface ! -------------------------------------------------! - - - -- - - - - - - - - - - - - - - VARIABLEN - - - - - - - - - - - - - - - - - - - - - integer , parameter :: nx =400 , nz =400 ! total number of grid points in x /y - direction integer :: nt , isx , isz , i ,k , n real :: dx , dz , dt , c , fmax , t , amx real , dimension ( nx , nz ) :: p , pp , c2 , aux1 , aux2 , tmp

30 31 32 33 34 35 36 37 38 39 40

nt = 500 isx = 150 isz = 160

! total number of timesteps ! source position index in x - direction ! source postiion index in y - direction

41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84

dx = 2.5 dz = 2.5

! spatial discretization in meters in x - direction ! spatial discretization in meters in y - direction

dt = 0.0005 ! timestep size in seconds c = 1500 fmax = 100 ! ARRAYS do i =1 , nx do k =1 , nz p (i , k ) =0.0 ! pressure field pp (i , k ) =0.0 ! pressure field of previous timestep c2 (i , k ) = c * c ! acoustic velocities squared end do end do ! acoustic velocities in m / s ! maximum frequency of wavelet in Hz

! -------------------------------------------------! ------ -- -- - -- open snapshot file - - - - - - - - - - - - - - - - - - open (25 , file = snapshots , form = unformatted )

! -- - - - - - - - - - - - - - - - - - - MAIN LOOP - - - - - - - - - - - - - - - - - - - - do n =1 , nt t = dt * n ! ------ ---- -- SOLVE EQUATION - - - - - - - - - - - - - - - - - - - - - call difx2d (p , aux1 , dx , nx , nz ) ! derivative of p in x call difz2d (p , aux2 , dx , nx , nz ) ! derivative of p in z ! add aux1 and aux2 in aux1 aux1 = aux1 + aux2 ! multiply with c2 aux1 = aux1 * c2 ! add source term fwave to aux1 at ( isx , isz ) aux1 ( isx , isz ) = aux1 ( isx , isz ) + fwave (t , fmax ) ! multiply squared timestep size dt

10

85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115

aux1 = aux1 * dt * dt ! add 2* p substract pp aux1 = aux1 + p +p - pp ! assign result to pp pp = aux1 ! swap p and pp tmp = pp pp = p p = tmp ! -------------------------------------------------! --------- PRINT AMX EVERY 50 STEPS - - - - - - - - - - - - - - - - if ( mod (n ,50) ==0) then amx = maxval ( p ) print * , amx end if ! --------- WRITE SNAPSHOT EVERY 25 STEPS - - - - - - - - - - - if ( mod (n ,25) ==0) then do i =1 , nx write (25) ( p (i , k ) , k =1 , nz ) end do end if

end do close (25) end program ac2d Listing 2.1: ac2d.f90

11

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

subroutine difx2d ( vin , vout , dx , nx , nz ) implicit none real , dimension (: ,:) , intent ( in ) :: vin real , dimension (: ,:) , intent ( out ) :: vout real :: dx integer :: i ,k , nx , nz do i =2 , nx -1 do k =1 , nz vout (i , k ) =( vin ( i +1 , k ) -2* vin (i , k ) + vin (i -1 , k ) ) /( dx **2) end do end do end subroutine difx2d Listing 2.2: difx2d.f90

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15

subroutine difz2d ( vin , vout , dz , nx , nz ) implicit none real , dimension (: ,:) , intent ( in ) :: vin real , dimension (: ,:) , intent ( out ) :: vout real :: dz integer :: i ,k , nx , nz do i =1 , nx do k =2 , nz -1 vout (i , k ) =( vin (i , k +1) -2* vin (i , k ) + vin (i ,k -1) ) /( dz **2) end do end do end subroutine difz2d Listing 2.3: difz2d.f90

12

1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19

function fwave (t , fmax ) result ( res ) implicit none real , intent ( in ) :: t , fmax real :: agauss , tcut ,s , res , pi pi =4* atan (1.) agauss = fmax /2 tcut =3/(2* agauss ) s =( t - tcut ) * agauss

if ( abs ( s ) < 4.) then res = exp (( -2) * s **2) * cos (2* pi * s ) else res =0 end if end function fwave Listing 2.4: fwave.f90

2.4 Kompilieren und Linken


Wir kompilieren die Dateien zunchst einzeln in Unix mittels: f95 f95 f95 f95 -c -c -c -c ac2d.f90 difx2d.f90 difz2d.f90 fwave.f90

und linken sie dann zu einer ausfhrbaren Datei ac2d.x: f95 -fast ac2d.o difx2d.o difz2d.o fwave.o -o ac2d.x Die -fast Option optimiert den Code und sorgt damit fr eine bessere Performance bei der Ausfhrung des Programms. Ausgefhrt wird das Programm mittels: ./ac2d.x

13

3 Experimente und Auswertung


Um die Ausbreitung einer zweidimensionalen Welle im homogenen Halbraum unter verschiedenen Ausgangsbedingungen simulieren zu knnen, variieren wir Parameter im Hauptprogramm und vergleichen anschlieend das Resultat im Modell mit der Realitt. Da es sich bei unserem Modell um eine approximierte Lsung der zweidimensionalen Wellengleichung handelt, ist es interessant die Genauigkeit der Approximation zu erproben. Die Ausbreitungsgeschwindigkeit einer Welle variiert mit einer Dichte des Trgermediums. So knnen wir eine Grenzschicht zwischen zwei Rumen unterschiedlicher Dichten durch Variation der Ausbreitungsgeschwindigkeiten cA und cB simulieren. Auerdem lsst sich die Frequenz der Welle verndern, sodass bei konstanter Wellengeschwindigkeit c die Wellenlnge grer oder kleiner wird und wir den Einuss auf die Verteilung von Maxima und Minima untersuchen knnen. Zuletzt betrachten wir die Grenzen unseres Modells, indem wir die Gre der Zeitschritte soweit erhhen, dass das CFL-Kriterium1 nicht mehr eingehalten wird.

Die Experimente werden in folgender Reihenfolge dargestellt und diskutiert: 1. Variation der Wellenfrequenz 2. Simulierung einer Grenzschicht durch Variation der Wellenausbreitungsgeschwindigkeit c 3. Stabilitt des Algorithmus 4. Dnne Schichten

1928, Couran, Friedrichs und Levy

14

3.1 Variation der Wellenfrequenz f


Ausbreitungsgeschwindigkeit c und Wellenlnge von Kompressionswellen hngen linear mit ihrer Frequenz f zusammen: c f= . (3.1) Hieraus resultiert bei einer Erhhung der Frequenz f bei c = const., eine Abnahme von . Zu Erkennen ist dies dadurch, dass die Druckmaxima, im Laufe der Versuchsdauer, verschmieren bzw. eine geringere Amplitude aufweisen, und sich diese nher beieinander benden. Bei diesem Versuch erhhen wir die Frequenz von f = 100Hz auf f = 200Hz wobei die Kompressionswellengeschwindigkeit konstant bei c = 1500 m gehalten wird. s

Abbildung 3.1: Gegenberstellung des Versuches mit Frequenzen von 100 Hz (l.) und 200 Hz (r.)

15

Hier noch einmal eine Detailansicht, in der die Abnahme von bei f = 200Hz im Vergleich zu f = 100Hz sehr gut zu erkennen ist:

Abbildung 3.2: Snapshot Nr.15, 1500 m , f = 100Hz s

Abbildung 3.3: Snapshot Nr.15, 1500 m , f = 200Hz s

16

3.2 Simulieren einer Grenzschicht


Die Ausbreitungsgeschwindigkeit einer Welle variiert mit einer Dichte des Trgermediums. So wird eine Grenzschicht zwischen zwei unterschiedlichen Dichten durch Variation der Ausbreitungsgeschwindigkeiten cA und cB simuliert. Hierbei ist zu erwarten, dass fr einfallende, reektierte und gebrochene Welle an der Grenzschicht das bekannte Snelliusschen Gesetz sin 2 cB = sin 1 cA (3.2)

gilt. Einfalls- und Reektionswinkel sind hierbei durch 1 gegeben, 2 entspricht dem Brechungswinkel. cA und cB entsprechen den Kompressionswellengeschwindigkeiten im Medium A und B. Folglich gilt fr eine einfallende Welle aus einem Medium geringer Dichte in ein Medium grerer Dichte, dass die gebrochene Welle vom Lot weggebrochen wird, wohingegen eine Welle, welche von einem dichteren Medium auf eines geringerer Dichte fllt, zum Lot hingebrochen wird. Im Versuch simulieren wir eine Schichtgrenze in einer Tiefe von Z = 450 Metern, indem wir unseren Programmcode in Fortran erweitern: do i=1,nx do k=180,nz c2(i,k)=3000*3000 end do end do Somit haben wir im oberen Bereich des Modellraumes eine Kompressionswellengeschwindigkeit von 1500 m und darunter 3000 m . Folglich ist die Dichte ab einer Tiefe s s von 450m geringer und die eintreenden Wellenfronten brechen vom Lot weg. Zu beachten ist, dass in den Abbildungen die waagerechte Achse die Z-Achse darstellt. Die Schichtgrenze verluft also vertikal. Wir knnen nun kontrollieren, ob unser Modell das Phnomen der Brechung und Reexion korrekt bercksichtigt. Ebenso knnen wir die Energieerhaltung berprfen, indem wir schaun, ob die Druckextrema mit der Zeit abnehmen.

17

Abbildung 3.4: Grenzschicht in 450 Metern Tiefe In den Snapshots des Versuchdurchlaufs ist zu erkennen, dass sich die Grenzschicht in einer Tiefe von Z = 450m bendet und hier sowohl Wellenreexion als auch -brechung stattnden. Der Satz der Energieerhaltung ist hierbei in unserem Modell erfllt. Dies ist duch eine Abnahme der Amplitudenintensitt zu erkennen.

18

Abbildung 3.5: Die Amplitude der Wellen nimmt mit der Entfernung von der Quelle ab. Die Energieerhaltung ist gegeben. Erreicht die Wellenfront mit fortschreitender Zeit den Rand des Versuchsfeldes, so wird diese dort reektiert, sodass Interferenzmuster entstehen. Somit ist auch dieses Wellenphnomen in unserem Modell bercksichtigt:

Abbildung 3.6: Interferenz durch Reexion an den Rndern.

19

3.3 Stabilitt des Euler Verfahrens (CFL Kriterium)


Unser Algorithmus zur Berechnung der numerischen Lsung der 2D Wellengleichung ist nur dann stabil, wenn folgende Ungleichung gilt: cmax t 1 n
2

(3.3)

Hierbei ist cmax die maximale Kompressionswellengeschwindigkeit im gesamten System und = x = z. n entspricht der Dimension des Problems; in unserem Fall gilt also n = 2. Um den Grenzfall des Modells zu demonstrieren, erhhen wir die Zeitschrittgre t auf 0.00118 Sekunden. Die Ausbreitungsgeschwindigkeit ist C = 1500 m , die Frequenz bleibt s bei f = 100Hz. Fr ausgewhlte Zeitschritte t erhalten wir:

Abbildung 3.7: Unstabilitt im Model bei t = 0.00118s

1928, Couran, Friedrichs und Levy

20

Wie an den Snapshots der Welle zu sehen ist, verlieren wir durch dies Grenzwertbetrachtung den Bezug zur Realitt. Die sich normalerweise radial ausbreitenden Wellenfronten werden rechteckig und verschwinden mit zunehmender Zeit sogar komplett.

21

3.4 Dnne Schichten


Im homogenen Medium laufen die Kompressionswellen, auch P-Wellen und Scherwellen (S-Wellen) entkoppelt. Da wir unsere seismische Welle duch eine zweidimensionale Punktquelle erzeugen, verschwindet das Scherpotential komplett und der rasialsymmetrische Druckfeldvektor pn lsst sich allein durch das Kompressionspotential darstellen. i,k Trotzdem werd an der Trennche einer homogenen Partie reektierte und gebrochene S-Wellen erzeugt. Handelt es sich um ein inhomogenes Medium, in dem sich die Welle ausbreitet, so ndet diese Umwandlung kontinuierlich statt. Sie ist umso ausgeprgter, je grer der Geschwindigkeitsgradient ist. Hierbei ist zu beachten, dass geologische Strukturen im Untergrund nicht mehr aufzulsen sind, falls >> d, wobei d hier Mchtigkeit einer Grenzschicht entspricht. Um unser Modell mit dieser Theorie zu berprfen, setzen wir eine Schichtgrenze in einer Tiefe von Z = 500m mit genau d = 2, 5m Dicke ein, und verringern die Frequenz auf 10 Hz, damit unsere Forderung erflt ist. In der dnnen Schicht setzen wir die Geschwindigkeit in unserem Fortranprogramm im ersten Teil des Versuchs auf c = 1000 m herunter: s do i=1,nx c2(i,200)=1000*1000 end do Im zweiten Versuch erhhen wir die Geschwindigkeit auf c = 2500 m . s do i=1,nx c2(i,200)=2500*2500 end do Wie leicht nachzuprfen ist, ist die Forderung fr Versuch zwei nicht gegeben. Demnach ndet hier auch keine Brechung bzw. Reexion an der Grenzschicht statt:

22

Abbildung 3.8: cA=1500 m ,cB=1000 m ,f=10Hz,=100m, Abbildung 3.9: cA=1500 m ,cB=2500 m ,f=10Hz,=250m, s s s s d=2,5m d=2,5m

23

4 Vorschlge zur Verbesserung des Kurses


Passend zu den derzeitigen Diskussionen zur Optimierung der Semesterstruktur im Bereich der Geophysik und Ozeanographie, halten wir es fr sinnvoll das Modul Datenverarbeitung zu erweitern, und den Schwerpunkt nicht wie derzeit auf Fortran 95, sondern vielmehr auf Matlab zu legen. Dies ist in sofern sinnvoll, da in unserer zuknftigen Karriere als angehende Wissenschaftler weniger das plotten von Kurven, sondern vielmehr das Einlesen und Verarbeiten von Datenstzen erforderlich ist. Hierraus lassen sich viele unterschiedliche Projekte ableiten: So knnen in Zukunft beispielsweise eher Programme in Matlab als in Fortran 95 geschrieben und verwendet werden, die dazu dienen sollen Messdaten zu verarbeiten, auszuwerten und grasch darzustellen. Da dies sicherlich nicht zustzlich, zu dem schon straen Programm, zu realisieren ist, wrden wir einen obligatorischen Matlabkurs in den Semesterferien sehr gut nden. Nichtsdestotrotz war der Kurs insgesamt abwechslungsreich und die vielen kleinen Projekte kurzweilig und unterschiedlich anspruchsvoll. Wnschenswert wre jedoch, vorallem am Anfang des Kurses, auch Aufgaben fr Studierende, die bereits ber Grundlagen in Unix und Programmierung verfgen, bereit zu halten. Diese knnten dann selbststndig erarbeitet und abgegeben werden. Die ausreichende Anzahl der Arbeitspltze und die gute Ausstattung des Poolraumes lieen zu, dass jeder Student eigenstndig seine Aufgaben erledigen konnte, was nicht selbstverstndlich ist. Verbesserungswrdig in allen Teilabschnitten des Kurses sind zum Besipiel die gemeinsame Bearbeitung der Aufgaben, die sich zu sehr in die Lnge zogen. Auerdem sollte an der Vortragsweise gearbeitet werden. Das gemeinsamme Durcharbeiten des Skriptes ist sehr anstrengend und motiviert nur geringfgig. Vielleicht lassen sich die einzelnen Vortragseinheiten krzer und eektiver gestalten und das eigenstndige arbeiten erweitern. Im Folgenden geben wir eine kurze Zusammenfassung unserer Eindrcke, welche die vier Teilabschnitte der Vorlesung hinterlassen haben:

Unix
Der erste Vorlesungsblock beinhaltete eine kurze und prgnante Einfhrung in das Betriebssystem Unix, was fr viele neu und teilweise eine groe Umstellung war, gerade weil die grasche Oberche bei vielen Programmen komplett fehlt. Nichtsdestotrotz halten wir die Einfhrung als sehr gelungen, da bungsaufgaben selbststndig bearbeitet werden konnten und wir dadurch selbststndiger arbeiten konnten.

24

Fortran 95
Da es sich fr die meisten von uns beim Programmieren um Neuland handelte, war die Einfhrung in Fortran der erste Kontakt in die Welt der Do-und If-Schleifen. Dadurch war es ntig das Ganze etwas ausfhrlicher als die Unix Vorlesung zu behandeln, nicht zuletzt deswegen, da sich Programmiersprachen sehr hneln und durch eine solide Basis neue Sprachen leichter gelernt werden knnen. Desweiteren wurde hierbei der Grundstein fr die Semesterarbeit gelegt. Nichtsdestotrotz erschien die Vorlesung oft als langwierig und teilweise schleppend, da das Skript schritt fr Schritt durchgearbeitet wurde und viele kleine Teilaufgaben das ganze in die Lnge zogen. Oftmals rutschte das eigenstndige Ausprobieren zu sehr in den Hintergrund und viele bungsaufgaben unterschieden sich lediglich geringfgig. Grere Aufgaben, bei denen mehr Zeit zum selbstausprobieren bleibt, htten das ganze, vor allem gegen Ende der Einheit kurzweiliger gemacht. Diese sollten dann auch etwas freier gestaltet sein. In der bisherigen Form lernt man zwar formal in Fortran zu programmieren, da aber der Groteil des essentiellen Programmcodes bereits vorgegeben war, wurde wenig gelernt, wie an ein programmiertechnisches Problem herangegangen werden muss. Die Leistung zur Programmierung der Semesterarbeit beschrnkte sich lediglich auf Abschreiben und Ergnzen von Formalien wie Interfaces und Variableninitialisierung.
A LTEX

Die Einfhrung in Latex halten wir fr sehr gelungen, da es deutlich bersichtlicher als Fortran ist. Dies liegt allerdings weniger an der Vorlesung, sondern eher an der Tatsache, dass wir schon langsam einen berblick ber das Ganze erhalten hatten und der Knstlerischen Freiheit beim Erstellen von Formeln und Tabellen weniger Grenzen gesetzt sind. Gerade fr uns Naturwissenschaftler ist die Einfhrung in dieses Programm sehr willkommen und entwickelte sich in letzter Zeit immer mehr als Programm erster Wahl wenn es um das Schreiben von Arbeiten oder Texten ging. Durch die groe Popularitt des Programmes, ist es fr Anfnger wie uns, einfach Texte von simpel bis kompliziert zu erstellen. Gerade durch die Alltagspraktikabilitt ist es deutlich attraktiver sich in das Programm eigenstndig einzuarbeiten, sodass wir die Stundenanzahl und Vorlesung als ausreichend und gut halten.

Matlab
Matlab ist unserer Meinung nach die komplexeste Blockveranstaltung in der Vorlesung Datenverarbeitung gewesen, weswegen drei Wochen schlicht und einfach zu wenig fr dieses Programm sind. Da sich die Einfhrung mehr oder weniger auf das plotten von Graphen beschrnkt hat, ist es nicht mglich gewesen in der kurzen Zeit einen Gesamteindruck ber das Programm zu bekommen.

25

Wie oben erwhnt, halten wir es fr wichtiger das Spektrum von Matlab kennenzulernen als Befehle und vorgefertigte Programme auszufhren um darin Zahlenwerte zu ndern. Zwar wurde uns dadurch das notwndige Know-How fr die Semestrarbeit serviert, allerdings ist es uns so nicht mglich dies auf andere Problemstellungen zu transferieren. So bleibt fr uns das Gefhl, gerade einmal an der Oberche des Programms herumgekratzt zu haben.

26