Numerische Modellierung in der Geophysik Script zur
Transcrição
Numerische Modellierung in der Geophysik Script zur
Numerische Modellierung in der Geophysik Script zur vorlesungsbegeleitenden Übung Thomas Günther (TU Bergakademie Freiberg) 23.09.2003 Zur Motivation Numerische Simulation physikalischer Felder ist • wichtig für Verständnis der Physik • nützlich für die Abschätzung von Messeffekten • Grundlage für Interpretation von Messwerten • wichtigster Baustein für Inversion (Sommersemester) • übergreifend anwendbar in vielen technischen Bereichen ⇒ Erlernung der Techniken numerischer Modellierung Gliederung der Übung: 1. Kurze Einführung in Matlab(1) 2. 1D-Wärmeleitung zum warm werden(1) 3. Geoelektrische 3D-Vorwärtsmodellierung(4) • • • • • • Aufstellung der Koeffizientenmatrix Randbedingungen Programmierung verschiedener Gleichungslöser Konjugierte Gradienten, Vorkonditionierer Beseitigung der Quellensingularitäten Rechnung verschiedener Modelle, Genauigkeitstests 4. Finite Elemente, PDE-Toolbox(1) 5. Zeitabhängige elektromagnetische Felder (2+1) • TE-Polarisation in 2D-Medien • Explizite/implizite Zeitschritt-Verfahren MATLAB • MatLab = Matrix Laboratory • Metasprache zum (numerischen) wissenschaftlichen Rechnen • Reduzierung auf mathematisch notwendiges Level • System von Toolboxen (frei, käuflich) • Fülle von Visualisierungs-Funktionen(2D,3D) • (Einfaches) System zum Erstellen von GUIs • Compiler zur Erstellung von lauffähigen Programmen • Anwender: Mathematiker(seltener), Ingenieure, Mediziner, ... Geophysiker Grundphilosophie von MATLAB • Vektorisierung (Vermeidung von Indizierungsarbeit) Schleifen Vektorisiert for i = 1:10, for j = 2:8, A(i,j) = B(i,j+1); A(1:10,2:8) = B(1:10,3:9); end end • Modularisierung(Vermeidung von Mehrfacharbeiten) • Reduzierung auf mathematisch notwendiges Level • Abgeschlossene Funktionen und Toolboxen Matlab: Grundstrukturen Hilfe: >> help \% Hilfethemen >> help topic \% Themenhilfe, z.B. help strfun >> help function \% Hilfe zu Funktionen Zeilenweise: >> a=4*3 >> b=sqrt(12); \% Ausgabe des Ergebnisses \% keine Ausgabe Arbeitsspeicher >> whos a b Name Size Bytes Class a 1x1 8 double array b 1x1 8 double array >> clear a >> whos a b Name Size Bytes Class b 1x1 8 double array Matlab: Matrizen und Vektoren >> a = a = 1 2 >> b = 0 b = 2 1 >> b’ b = 0 2 >> a ans = 1 >> c = [ 1 2 3 ] 3 [ 0;2;1 ] 1 b’ 0 2 a * b; \% = Skalarprodukt c = 7 >> d = b * a; d = 0 0 0 2 4 6 1 2 3 >> A= [ 1 2 3; 4 5 6; 0 2 0 ]; A = 1 2 3 4 5 6 0 2 0 >> x = A*b 7 x = 16 4 >> A\x 0 ans = 2 1 >> x+b 7 ans = 15 5 >> x.*b 0 ans = 32 4 \% Gleichungslöser \% Addition \% Punktweise Multiplikation Matlab: Indizierung >> a = 1:10 a = 1 2 3 4 5 6 7 8 9 10 >> b=0:2:20 b = 0 2 4 6 8 10 12 14 16 18 20 >> b(3) ans = 4 >> b(4:8) ans = 6 8 10 12 14 >> b(a) ans = 0 2 4 6 8 10 12 14 16 18 >> b(8:end) ans = 14 16 18 20 >> b(6:2:end-1) ans = 10 14 18 >> B=A+1 B = 2 3 4 5 6 7 1 3 1 >> B(2,3) ans = 7 >> B(2:3,1:2) ans = 5 6 1 3 >> B(3,:) ans = 1 3 1 >> B(:,2) ans = 3 6 3 >> B(:) ans = 2 5 1 3 6 3 4 7 2 Dateioperationen >>pwd >>cd DIR >>ls >>save FILENAME >>save -ASCII FILE >>load FILENAME >>load -ASCII a.dat \% \% \% \% aktuelles Verzeichnis wechselt Verzeichnis listet Verzeichnis speichert Workspace \% lädt Workspace \% lädt a aus a.dat >>fid = fopen(’test.dat’,’r’) >>a = fscanf(fid,’%d’,[2 8]); \% liest 2x8 Integer >>fclose(fid); >>fprintf(’Time=%.2f n=%d\n’,t,n); Zeitmessung >>tic; \% hole Zeit % irgendwelche Befehle, z.B. >>pause(1.0); \% 1s Pause >>toc elapsedtime = 1.061 Steuerstrukturen in Matlab >>if a == 5 ... else ... end >>for i = 1:10 ... end >>while(k < kmax) ... end >>switch msg case ’ok’ ... case ’cancel’ ... otherwise ... end Matlab-Befehle für Vektoren size(a) \% Größe einer Matrix als Vektor length(a) \% Länge eines Vektors max(a), min(a) \% Maximum/Minimum find(a), find(a==1) \% Finden von Elementen A(find(A==1))=-1; \% Ersetzen aller 1 durch -1 sort(a) \% Sortieren diff(a) \% Differenz [ a b c ] \% nebeneinander [ a;b;c ] \% untereinander zeros(m,n) \% erzeugt m.n Vektor aus Nullen ones(m,n) \% erzeugt m.n Vektor aus Einsen Matlab-Graphikbefehle Plotten von Kurven plot(x,y); \% 2D-Kurve plot(x,y,’r+:’); \% rot gestrichelt mit + plot(x,y1,x,y2); \% Mehrere Kurven xlabel, ylabel, title \% Beschriftung semilogx,semilogy,loglog \% logarithmisch Plotten von Flächen (als Matrix) imagesc(x,y,Z); \% x,y..Vektoren, Z..Matrix contour \% surf, colorbar, ... Beispiel Vektorisierung Aufgabe: Berechnen Sie das Potential einer Punktquelle bei (0,5,0) über einem homogenen Halbraum von 100 Ohmm im Gebiet x=10..10, y=-10..10, z=0..10 und stellen Sie es dar! x=-10:10; y=-10:10; \%Erzeugung von x,y,z z=0:10; [X,Y,Z]=ndgrid(x,y,z); \% Vektorisierung whos X Y Z \% Alle gleich groß (wie Gebiet) R=sqrt(X.\^{}2+Y.\^{}2+Z.\^{}2); \% Ortsvektor RA=sqrt(... PHI=I/(2*pi*sigma*RA); imagesc(x,y,PHI(:,:,1)); Typen von Differentialgleichungen Physik wird in der Regel beschrieben durch DGL’s(2. Ord.) Man unterscheidet verschiedene Typen: • Elliptische DGL: Potentialverfahren, Frequenzbereichs-EM ∇ · (σ∇ϕ) = f , ∇2 u = f • Parabolische DGL: Wärmeleitung/Diffusion, Zeitbereichs-EM ∂2 T ∂z 2 − κ ∂T ∂t = 0 • Hyperbolische DGL: Wellenverfahren (Georadar, Seismik) ∂2 u ∂x2 − 2 ∂ 2u c ∂t2 =0 Die heutige Übung • Einstieg in Finite Differenzen • Vorbereitung auf 3D-Gleichungen • Wärmeleitungsgleichung in 1D • Vereinfachtes Problem • Explizite vs. implizite Verfahren • Aufstellung und Lösung des Gleichungssystemes • Genauigkeit und Stabilität Die Wärmeleitungsgleichung(1D) ∂2 T ∂z 2 − κ ∂T ∂t = 0 Randbedingungen: T (z = 0, t) = f (t) = T0 + ∆T sin ωt T (z = zmax, t) = g(t) = T0 Anfangsbedingungen: T (z, t = 0) = h(z) = 0 Vereinfachung der Aufgabe Txx − Tt = 0 in Ω = (0, 1) · (0, 1) unter den Rand-/Anfangsbedingungen T (x, 0) = sin πx T (0, t) = T (1, t) = 0 Analytische Lösung: −π 2t T (x, t) = e sin πx Die ersten Schritte • Anlegen eines matlab-files auf1.m • Festlegung von Raum- und Zeitschritt dx=0.1; dt=0.04; • Erzeugung der Vektoren für Ort und Temperatur x=0:dx:1 T=sin(pi*x) % T damit Vektor mit AB(t=0) • Erzeugung und Darstellung der analytischen Lösung t=0.2; % zum Beispiel Tana=exp(-piˆ2*t)*sin(pi*x); plot(x,Tana); Diskretisierung der DGL Einführung eines diskreten Modells x ⇒ xi t ⇒ tn T (x, t) ⇒ Tin Umwandlung der Differentialquotienten in Differenzenquotienten ∆T ∆t = Tin+1−Tin ∆t = ∆(∆T ) ∆x2 = Ti+1+Ti−1−2Ti ∆x2 Nur für welches n? n, n+1 oder n+1/2? (Differenzenstern) Explizites Verfahren: n ⇒ Berechnung des neuen T aus Ortsableitungen des alten T Aufgabe: Explizites Verfahren 1. Formen Sie die Differenzengleichung nach T(n+1,i) um 2. Schreiben Sie eine Schleife, beginnend mit t=0, endend mit t=1 t=0; while t ¡ 1, t=t+dt; ... end 3. Führen Sie in jedem Zeit-Schritt ein Update von T durch T(2:end-1)=T(2:end-1)+dt*... % nur innere Punkte! 4. Beachten Sie dabei die Randbedingungen! (äußere Punkte) 5. Stellen Sie in jedem Zeit-Schritt T(x) zusammen mit der analytischen Lösung dar 6. Bewerten Sie die Güte des Ergebnisses unter der Variation der finiten Differenzen dx und dt Stand der Dinge • 1D-Wärmeleitungsgleichung ⇒ vereinfachtes Problem • Diskretisierung des Problems • Lösung mit Zeitschrittverfahren Zeitableitung = f(Ortsableitung) • Explizites Verfahren (Differenzenstern vorwärts) ⇒ einfach, aber ungenau und instabil! • Implizites Verfahren ⇒ Gleichungssystem • Aufstellung und Lösung des Gleichungssystems Ein implizites Verfahren Durch Betrachtung der räumlichen Ableitung aus den Feldern für n+1 erhalten wir folgende Gleichung: Tin+1−Tin ∆t = n+1 n+1 +Ti−1 −2Tin+1 Ti+1 ∆x2 Indem wir die gesuchten Anteile mit n+1 trennen, ergibt sich mit p = dt/(dx)2: n+1 n+1 −p · Ti−1 + (1 + 2p) · Tin+1 − p · Ti+1 = Tin Aufgeschrieben für alle (inneren) i ergibt das ein Gleichungssystem mit einer Matrix, auf deren Hauptdiagonalen (1+2p) und den benachbarten Diagonalen -p steht. Das Gleichungssystem Aufgeschrieben für alle inneren i ergibt das ein Gleichungssystem mit einer Matrix, auf deren Hauptdiagonalen (1+2p) und den 2 benachbarten Nebendiagonalen -p steht. n+1 1 + 2p −p 0 ... 0 T2 T2n n+1 1 + 2p −p . . . 0 −p T3 T3n · . = . . . . . . . . . . . . . . n+1 n 0 0 0 . . . 1 + 2p TI−1 TI−1 Und was ist mit den Rändern? Typen von Randbedingungen: • Dichichlet’sche RB: V (0) = V0 • Neumannsche RB: ∂V (0) ∂x = −Ex • Gemischte RB: V + a ∂V ∂x = 0 Ein einfaches elliptisches Problem Die Laplace-Gleichung uxx = 0 führt für konstantes dx zu un−1 − 2un + un+1 = 0 T1 sei bekannt, dann ergibt sich für n=2 −2u2 + u3 = −u1 Legen Sie (in einem neuen File) zwei Vektoren u und x an, stellen Sie die Matrix (spdiags) auf und lösen Sie für beliebig festgelegte u an den Rändern! Stellen Sie das Ergebnis dar! Neumann’sche RB Die Ableitung am linken Rand sei bekannt: ux = a Dann ergibt sich für n=2 u2−u1 ∆x =a ⇒ u1 = u2 − a∆x ⇒ −u2 + u3 = a∆x Geben Sie auf der linken Seite Neumann-Bedingungen, z.B. für a=0, vor und berechnen Sie das Ergebnis. Was passiert bei Neumann-RB auf beiden Seiten? Zurück zum Impliziten Verfahren 1. Erweitern Sie auf1.m um eine implizite Berechnung, indem Sie eine neue Variable Timp mit den gleichen Anfangsbedingungen erstellen! 2. Führen Sie p=dt/(dx)ˆ2 ein! 3. Stellen Sie die Matrix A des impliziten Gleichungssystems mit der Funktion spdiags auf! nT=length(T)-2; \% nur für die inneren Punkte P=ones(nT,1)*p; \% Spaltenvektor mit p A=spdiags([-P 1+2*P -P],[-1 0 1],nT,nT); \% 3 Spaltenvektoren auf Haupt-/Nebendiag. 4. Lösen Sie in jedem Zeitschritt das Gleichungssystem A∗Tneu = Talt für Timp 5. Geben Sie die Ergebnisse beider Näherungen zusammen mit der analytischen Lösung aus! Beleg 1: Das Crank-Nicholson-Verfahren Bei Betrachtung der beiden Approximationen drängt sich förmlich eine Mischung der impliziten und expliziten Anteile auf. Tin+1−Tin ∆t = n+1 n+1 n+1 1 Ti+1 +Ti−1 −2Ti 2 ∆x2 n + n n 1 Ti+1+Ti−1−2Ti 2 ∆x2 • Formen Sie die Gleichung in ein Gleichungssystem für alle T(n+1) um • Stellen Sie die Matrix B für das Gleichungssystem auf • Implementieren Sie einen Vektor Tmix und lösen Sie in jedem Schritt das Gleichungssystem • Stellen Sie alle drei Approximationen dar und vergleichen Sie ihre Güte. Zusammenfassung • Wärmeleitungsgleichung = parabolisches Problem • Diskretisierung mit Finite Differenzen • Lösung der Laplace-Gleichung in 1D für alle t(n) • Randbedingungen (Dirichlet, Neumann) • i.A. für nicht äquidistante Stützstellen • Stabilität, Genauigkeit (vgl. analytische Lösung!) • FD-Operator in drei Dimensionen? • Verteilung von Stoffparametern 3D-DC-Geoelektrik: Gliederung ∇ · (σ∇ϕ) = −Iδ(~r − ~rs) • Erstellung eines 3D-Leitfähigkeitsmodells • Diskretisierungsschemata (Dey&Morrison) • spezifische Randbedingungen(Oberfläche) • Aufstellung und Lösung des Gleichungssystems • Programmierung verschiedener Gleichungslöser • Verbesserung durch Singularity Removal • Rechnung verschiedener Modelle, Genauigkeitstests Wir bauen ein Modell Zunächst erzeugen wir uns die Vektoren der Gitterpunkte x=...;y=...;z=...; I=length(x);J=length(y);Z=length(z); Das Leitfähigkeitsmodell liegt innerhalb der Knotenpunkte si=0.01; \% 100 Ohm meter SI=ones(I-1,J-1,K-1)*sigma; Für die Berechnungen brauchen wir alle Größen vektorisiert [X,Y,Z]=ndgrid(x,y,z); % alle die gleiche Größe I*J*K Umsetzung der Differentialgleichung Laplace-Gleichung für Potential Diskrete Größen x, y, z ⇒ xi, yj , zk , ϕ(xi, yj , zk ) ⇒ ϕi,j,k Umformung in Finite Differenzen ergibt: Ctopϕi,j,k−1 + Cbottomϕi,j,k+1 + Clef tϕi−1,j,k + Crightϕi+1,j,k + Cf rontϕi,j−1,k + Cback ϕi,j+1,k + Cself ϕi,j,k = −Iδi,j,k ⇒ Kopplung jedes Knotenpunktes mit 6 benachbarten Zellen Verschiedene Schemata durch Zuordnung der Leitfähigkeiten Diskretisierung nach Dey/Morrison(1979) Leitfähigkeit entspricht gewichtetem Mittel der benachbarten Zellen Beispiel Kopplung zum überliegenden Widerstand ∆xi−1∆yj ∆xi∆yj 1 Ctop = − ∆z σi−1,j,k−1 + σi,j,k−1 4 + 4 k−1 ∆xi−1∆yj−1 ∆xi∆yj−1 +σi−1,j−1,k−1 + σi,j−1,k−1 4 4 Die anderen Koeffizienten berechnen sich analog Der erste Kopplungskoeffizient Jeder Knotenpunkt hat 7 Kopplungskoeffizienten Ctop=zeros(I,J,K); Cbottom=Ctop; \% nach oben/unten (z) Cfront=Ctop;Cback=Ctop; \% nach vorn/hinten (y) Cleft=Ctop;Cright=Ctop; \% nach links/rechts (x) Cself=Ctop; Wir benötigen noch die Gitterabstände DX=diff(X,1,1);DY=... Alle Knoten haben zunächst ein Ctop Ctop=-(SI(1:end-1,2:end,1:end-1)*DX(... % ??? Programmieren Sie den Koeffizienten Ctop sowie alle anderen nach den Vorlesungs-Aufzeichnungen Randbedingungen(vorerst!) • Oberer Rand ⇒ Neumannsche RB: ∂ϕ ∂z = − jσz = 0 Implizit erreicht durch Setzen von σ = 0 der nullten Schicht • Übrige Ränder vorerst Dirichlet-RB: ϕ=0 ⇒ Cleft(1,j,k) = 0, Cright(imax,j,k) = 0 (für alle j,k) ⇒ Cfront(i,1,k) = 0, Cright(i,jmax,k) = 0 (für alle i,k) ⇒ Cbottom(i,j,kmax) = 0 (für alle i,j) Aufstellung der Koeffizientenmatrix 1. Erzeugung der Kopplungskoeffizienten als Matritzen Clef t etc. 2. Summe der einzelnen Kopplungen = Selbstkopplung Cself = −(Clef t + Cright + Cf ront + Cback + Ctop + Cbottom); 3. Anbringen der Randbedingungen(Dirichlet) 4. Belegung der Diagonalen von C mit Koeffizienten, dabei werden alle Matritzen als Spaltenvektoren geschrieben Cleft(:) I=length(X); J=length(Y); K=length(Z); C=spdiags([Cbottom(:) Cback(:) Cleft(:) Cself(:)... Cright(:) Cfront(:) Ctop(:)],... [-I*J -I -1 0 1 I I*J],I*J*K,I*J*K); 5. Wandlung des Scripts in eine Funktion (mit Kommentar) function C = diskr\_dm(x,y,z,sigma) \% DISKR\_DM - Diskretization after Dey/Morrison \% C = diskr\_dm(x,y,z,sigma) Erste Tests 1. Erzeugen Sie die Matrix C mit diskr dm 2. Schauen Sie sich die Koeffizienten-Matrix an whos C, spy(C) 3. Erzeugen Sie sich einen Quellvektor b mit einer Einspeisung an der Erdoberfläche b=zeros(nx,ny,nz);b(5,5,1)=-1; 4. Lösung des Gleichungssystems für diese rechte pot=zeros(nx,ny,nz); pot(:)=C\b(:); % Matrix b as Vector! Seite 5. Darstellung der ersten Schicht des errechneten Potentials imagesc(pot(:,:,1)), % 2,3... Prinzipiell ok? 6. Erstellung eines realistischen (großen) Modells und Test Löser von Gleichungssystemen 1. Direkte Methoden ⇒ Gauss-Algorithmus 2. Iterative Methoden (a) Stationäre Verfahren • Jacobi, Gauss-Seidel, SOR (b) Instationäre Verfahren • Steilster Abstieg, Konjugierte Gradienten Stationäre Verfahren Transformation in eine Fixpunktgleichung durch Zerlegung von A Ax = A1x + A2x = b ⇒ xk+1 = Bxk + c Allgemein: A = L + D + U lower, diagonal, upper Jacobi: k+1 A1 = D ⇒ x = b−(L+U )xk D Gauss-Seidel: xk+1 = i k bi−Lij xk+1 −U x ij j j Aii SOR: k+1 k + (1 − ω)x xk+1 = ωx i i i (x = xGS ) Instationäre Gleichungslöser ~xk+1 = ~xk + α~rk ~rk = ~b − A~xk Steepest Descent Bestimmung von α, dass aufeinanderfolgende Residuen orthogonal sind: ~rk = ~b − A~xk αk = ~ rkT ~ rk ~ rkT A~ rk ~xk+1 = ~xk + αk~rk Konjugierte Gradienten Set von A-orthogonalen Richtungen durch Konjugierung der Residuen d~0 = ~r0 = ~b − A~x0 Schleife (außer r kann alles überschrieben werden) αk = ~ rkT ~ rk ~ d~T k Adk ~xk+1 = ~xk + αk d~k ~rk+1 = ~rk − αk Ad~k βk+1 = T ~ rk+1 ~ rk+1 ~ rkT ~ rk d~k+1 = ~rk+1 + βk+1d~k Zu lösende Aufgaben 1. Öffnen Sie die Rumpf-Datei iter.m, die das nötige Gerüst eines iterativen Lösers enthält: • Anlegen des Startvektors x • Ausgabe der geforderte Genauigkeit(relativ) • Schleife mit Abbruchkriterium 2. Speichern Sie iter.m unter jacobi.m ab und programmieren Sie dort eine Funktion für das stationäre Jacobi-Verfahren help diag % punktweise Division nutzen 3. Programmierung eines Steepest Descent Lösers(abschreiben) • Transponieren mit ’, Alle Var. überschreiben 4. Programmierung eines Lösers für Konjugierte Gradienten • Bis auf den Skalar r können alle Variablen in der Schleife mit der neueren Version überschrieben werden, nur r old ist zur Berechnung von β zu sichern Vorkonditionierer • Maß für Konvergenzgeschwindigkeit wird beschrieben durch die Konditionszahl cond(A) = λmax λmin • Problem in der Regel schlecht konditioniert (condest(C)) • man sucht nach einer (leicht invertierbaren) Matrix M mit cond(M −1A) cond(A) zur leichteren Lösung des transformierten Systems M −1Ax = M −1b Konditionszahl - Geometrische Vorstellung • Maß für Elliptizität des zu minimierenden Zielfunktionals • Beispiel für Steepest Descent mit großer Konditionszahl • Elliptizität in Vorkonditionierer hineinstecken • Zielfunktional von M −1A erhält wesentlich rundere Form ⇒ schnellere Konvergenz Mögliche Vorkonditionierungen • M ist symmetrisch ⇒ vor jedes r kommt ein M −1 M nicht unbedingt invertierbar, Lösung von M r = q z.B.: Jacobi M ist Diagonalmatrix von A • M ist nicht symmetrisch ⇒ Zerlegung in Teil von rechts und Teil von links (Anwendung: help pcg) • SSOR - Symmetrisch sukzessive Überrelaxation • Unvollständige Cholesky-Zerlegung (help cholinc) • Unvollständige L-U-Zerlegung (help luinc) Vergleich verschiedener CG-Löser Anwendung der Vorkonditionierung 1. Erzeugen Sie einen Jacobi-Vorkonditionierer(sparse) help spdiags 2. Untersuchen Sie die Konditionszahlen mit bzw. ohne VK condest(C), condest(M*C), 3. Testen Sie die Iterationen/Laufzeiten mit/ohne VK tic;pcg(C,b(:),tol,maxit);t tic;pcg(C,b(:),acc,maxit,M);toc 4. Wiederholen Sie den letzten Schritt für die unvollständige CholeskyZerlegung (Messen Sie auch die Laufzeiten der Zerlegung) R=cholinc(C,tol); % 1e-3 o. 1e-4 tic;pcg(C,b(:),tol,maxit,R’,R);toc 5. Welche Schlußfolgerungen lassen sich daraus ableiten? Ein erster Test Endlich wollen wir uns das Ergebnis etwas genauer unter die Lupe nehmen. • Erzeugen Sie einen homogenen Halbraum. • Erzeugen Sie sich eine Quelle auf der Erdoberfläche. • Berechnen Sie das analytische Potential für die erste Schicht. • Vergleichen Sie mit dem modellierten Potential. • Experimentieren Sie, wenn nötig, mit Gitterabständen und Modellrändern. Beseitigung der Quellen-Singularitäten Idee: Potential ϕ hat singulären (1/r), aber bekannten Anteil Zerlegung in primären/singulären und sekundären/residualen Anteil ϕ = ϕ p + ϕs ϕp = I 2πσ0r ∇ · (σ∇ϕs) + ∇ · (σ∇ϕp) = −Iδ(~r − ~rs) ϕp erfüllt DGl. für σ = σ0 ∇ · (σ0∇ϕp) = −Iδ(~r − ~rs) ⇒ Einsetzen in Differentialgleichung ∇ · (σ∇ϕs) = ∇ · ((σ0 − σ)∇ϕp) Singularitätenbeseitigung(2) • Erzeugung von Matrix C für σ und CQ für σ0 − σ • Erzeugung eines Potentialvektors ϕp • Rechte Seite/Quellen des Sekundärfeldes = Abweichung von der Hintergrundleitfähigkeit • je stärker, je größer ϕp dort ist • Wesentliche Vorteile: • • • • Sekundärfeld ist wesentlich glatter und besser zu lösen Geringere Interpolationsfehler bei ϕs Verbesserung der Genauigkeit des Vorwärtsoperators Absolute unabhängige Wahl der Elektrodenpositionen Praktische Umsetzung ∇ · (σ∇ϕs) = ∇ · ((σ0 − σ)∇ϕp) Der Operator∇ · (σ∇ . . . ) wird durch die Matrix C repräsentiert Als Gleichungssystem: Cσ · ϕs = Cσ0−σ · ϕp ⇒Erzeugung des Primärpotentials (phip.m) ⇒Erzeugung von C für σ und σ0 − σ dsigma=sq-sigma; dsigma(:,:,1)=0; CQ=diskr\_dm(x,y,z,dsigma); Phip=phip(x,y,z,b,sq); Phis=pcg(C,CQ*Phip(:),... Phi=Phip; Phi(:)=Phip(:)+Phis(:); \% Matrix CQ \% primary field \% anomal part \% same size \% sum of both Aufgaben für den Beleg, Teil 2 Genauigkeit und Geschwindigkeit 1. Erzeugen Sie sich ein Modell von 100 Ohmmetern, sowie einem Dike von 10 Ohmmeter zwischen x=20 und x=25m. 2. Führen Sie folgende Berechnung zum einen ohne und zum anderen mit Hilfe der Singularitätenbeseitigung durch und vergleichen Sie die Ergebnisse. 3. Eine Quelle befinde sich bei (0,0,0). Stellen Sie Kopplungsmatrix und rechte Seite auf. 4. Vergleichen Sie Iterationszahl sowie Rechenzeit für die Rechnung mit CG und verschiedenen Vorkonditionierern(Jacobi,SSOR,IncChol). (help pcg) 5. Rechnen Sie das Potential auf y=0, z=0 in einen scheinbaren spezifischen Widerstand um und vergleichen Sie es mit der analytischen Lösung Ein 3-Schicht-Fall • Laden Sie das Modell aus der Arbeitsspeicherdatei layer.mat load(’layer.mat’); • 3 Schichten: • Bedeckungsschicht, 1.8m mächtig, 100 Ω · m • Verwitterter, klüftiger Gneiss, 3.8m mächtig, 1000 Ω · m • Grundwasser im klüftigen Gneiss, 10 Ω · m • Realisieren Sie eine Sondierung, Einspeisung erfolgt bei abhalbe(k), Messung bei +/- 0.5 • Da das Modell das gleiche bleibt, muss die Vorkonditionierung nur einmal durchgeführt werden • Darstellung der Kurve im Log-Log-Plot und Vergleich mit der analytischen Kurve lay=load(’lay.ana’); loglog(abhalbe,rhoa,’x-’,lay(:,1),lay(:,2),’o-’); Modellierung zeitabhängiger EM-Felder Gliederung 1. Motivation und Zielstellung 2. Die Maxwell-Gleichungen, Lösungen 3. Einführung in Staggered Grids 4. Lösung für zweidimensionale Gebiete Motivation • Vorstellung von der Ausbreitung der Felder • Anwendungsgebiete: 1. Diffusion transienter elektromagnetischer Felder (TEM) 2. Ausbreitung hochfrequenter elektromagnetischer Wellen (Georadar) • Simulation beliebiger Strukturen möglich • Alles wird durch sehr einfache Grundgleichungen beschrieben: Die Maxwell-Gleichungen ~ ∂ D ~ = ∇×H + ~j ∂t ~ ∂ B ~ =− ∇×E ∂t ~ =% ∇·D ~ =0 ∇·B + Materialgleichungen ~ = ε̃E ~ D ~ = µ̃H ~ ~j = σ̃ E ~ B Einschränkungen • Materialeigenschaften sind Skalare und frequenzunabhängig • keine magnetische Permittivität (µ̃ = µ0) • Es existieren keine freien Ladungen (% = 0) µ̃ = µ0 Zwei Grund-Gleichungen: ~ ∂ E ~ =ε ~ ∇×H + σE ∂t ~ ∂ H ~ = −µ0 ∇×E ∂t Die Telegraphengleichung Durch Rotationsbildung der zweiten und Einsetzen in die erste Gleichung gelangen wir zur Telegraphengleichung: 2~ ~ ∂ E ∂ E ~ = µε ∆E + σµ 2 ∂t ∂t ~ r, t) = E ~ 0(~r) · e−ı(ωt+~k~r) erhalten wir Durch den Lösungsansatz E(~ k 2 = µεω 2 + ıωσµ Feldausbreitung = Wellenausbreitung + Diffusion Modenzerlegung im 2D-Fall Die Erde sei zweidimensional aufgebaut, d.h. es existieren keine Ableitungen in y-Richtung. Ein Ey erzeugt demnach ein Hx und Hz (TE-Mode), ein Hy erzeugt ein Ex und Ez (TM-Mode). Beide Moden existieren unabhängig voneinander, je nach Anregungsmechanismus. Im folgenden TE-Mode Problem: Damit sind auch Quellen zweidimensional! Das Staggered Grid Magnetisches und elektrisches Feld sind räumlich und zeitlich ineinander verschachtelt (Zuordnung der Ableitungen). Numerische Umsetzung • Wir erzeugen uns ein diskreten Modell • • • • sigma,eps,my konstant dx und dz seien im gesamten Gebiet konstant und gleich x und z als Vektoren Wie groß müssen die Matritzen für Ey, Hx und Hz sein? • Diskretisierung der Rotationsterme durch zentrale Finite Differenzen • Randbedingungen: • Seitenränder: Dirichletsche oder besser absorbierende RB • Oberer Rand: Feldfortsetzung der Felder an der Oberfläche nach oben Eine Quellfunktion für GPR Küpper-Signal (Ableitung am Anfang/Ende Null) 1 4πt E = E(sin 2πt − sin T 2 T ) Absorbierende Randbedingungen Aus der Bedingung für die Absorption der Tangentialfelder ∂ 1∂ ∂x − c ∂t Htan = 0 folgt unter Anwendung zentraler finiter Differenzen für den linken Rand (i=0) in Abhängigkeit des Nachbarn (i=1) n+1 c∆t−∆x n H0n+1 = H1n + c∆t (H − H 0) 1 +∆x Staggered Grid für 3D-Modell Ausblick • Formulierung für TEM und Georadar geeignet • Zuordnung von Parametern (σ, ε, µ) • TEM: Anfangsbedingungen und Stabilität (parabolisch!) • GPR: Geeigneteres Signal, Randbedingungen verbessern • Untersuchung der Genauigkeit (synth. Modelle) • Speedup für praktische Benutzung