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