Relaksacja wielosiatkowa dla równania Laplace`a

Transkrypt

Relaksacja wielosiatkowa dla równania Laplace`a
Relaksacja wielosiatkowa dla równania
Laplace'a ∗
Rozwi¡zywa¢ b¦dziemy dwuwymiarowe równanie Laplace'a. Ukªad równa« liniowych produkowany przez dyskretyzacje pochodnych najwygodniej
jest rozwi¡za¢ metod¡ iteracyjn¡. Niestety, zbie»no±¢ procesu iteracyjnego
jest tym wolniejsza im g¦stsza jest siatka. Szybkie rozwi¡zanie na g¦stej
siatce uzyska¢ mo»na stosuj¡c strategi¦ relaksacji wielosiatkowej. Najpierw
rozwi¡zujemy równanie na rzadszej siatce, a nast¦pnie rozwi¡zanie przepisujemy na siatk¦ g¦stsz¡ jako punkt startowy do nowej iteracji. Procedur¦
powtarzamy, a» uzyskamy rozwi¡zanie na siatce docelowej.
Relaksacj¦ wielosiatkow¡ prze¢wiczymy dla równania Laplace'a w dwóch
wymiarach (∇2 Φ = 0). Przyjmiemy warunki brzegowe dla potencjaªu Φ =
x2 − y 2 . Chcemy uzyska¢ rozwi¡zanie dla (x, y) ∈ [−3.2, 3.2] z krokiem
przestrzennym ∆x = ∆y = 0.05, na siatce 129 × 129 punktów.
Zadanie 1. Prosz¦ rozwi¡za¢ równanie Laplace'a od razu na siatce docelowej. U»ywamy relaksacji punktowej (Seidla) [metoda Jakobiego to relaksacja globalna]. W ka»dej iteracji przemiatamy tablic¦ Φ(i, j) po i oraz j
zmieniaj¡c potencjaª wg. wzoru
Φ(i, j) := [Φ(i − 1, j) + Φ(i, j − 1) + Φ(i + 1, j) + Φ(i, j + 1)] /4.
(1)
Gdy uzyskamy zbie»no±¢ energia pola elektrycznego zwi¡zanego z potencjaªem Φ
Ã
!2 Ã
!2 
Z 3.2
Z 3.2
∂Φ
∂Φ 
1
dy 
dx
+
(2)
a=
2 −3.2
∂x
∂y
−3.2
jest minimalna. Przepis siatkowy na t¡ energi¦ jest nast¦puj¡cy:
∗
Laboratorium z in»ynierskich metod numerycznych, Wydziaª Fizyki i Informatyki
Stosowanej AGH 2009/2010. [email protected]
1
2
ak =
1
8
P129−k
i=1,j=1
h
(Φ(i + k, j) + Φ(i + k, j + k) − Φ(i, j) − Φ(i, j + k))2
+ (Φ(i, j + k) + Φ(i + k, j + k) − Φ(i, j) − Φ(i + k, j))2
i
z k = 1. Potencjaª na starcie wstawiamy Φ = 0. Narysowa¢ a w funkcji numeru iteracji (25 pkt) (dokªadna warto±¢ a wynosi okoªo 559.24). Narysowa¢
rozkªad potencjaªu po osi¡gni¦ciu zbie»no±ci.(25 pkt)
a
a
b
a
a
a
b
a
a
Fig. 1: Zag¦szczanie siatki. Czarne kwadraty - punkty rzadkiej siatki, w
których ju» wyliczono potencjaª. Puste kwadraty - nowe punkty,
w których nale»y wyznaczy¢ warto±¢ potencjaªu dla wystartowania
nowej iteracji. W punktach typu 'a' poªo»onych mi¦dzy par¡ punktów
siatki rzadkiej bierzemy ±redni¡ arytmetyczn¡ z potencjaªu w dwóch
s¡siednich czarnych punktach. W pozostaªych nowych punktach (oznaczonych przez 'b') bierzemy ±redni¡ arytmetyczn¡ z czterech najbli»szych czarnych s¡siadów.
Zadanie 2 Relaksacja punktowa szybko wygªadza szybkozmienne bª¦dy,
natomiast z bª¦dami o wolnej modulacji przestrzennej radzi sobie najgorzej
(jest najwolniej zbie»na). Wolnozmienny bª¡d wykluczymy rozwi¡zuj¡c równania najpierw na siatce rzadkiej. Wygodnie jest pracowa¢ od razu na
macierzy Φ[129][129]. Zaczniemy od rozwi¡zania przybli»onego na siatce
9 × 9. Relaksacj¦ poprowadzimy wg. wzoru
Φ(i, j) := (Φ(i − k, j) + Φ(i, j − k) + Φ(i + k, j) + Φ(i, j + k))/4,
(3)
gdzie przyjmiemy skok k = 16. Dla skoku siatki k wzór na energi¦ pola dany
jest przez wyra»enie na ak dane powy»ej (uwaga: gdy k jest wi¦ksze od 1, w
3
sumowaniu po i oraz j wykonujemy kroki co k ). Po osi¡gni¦ciu zbie»no±ci
zmniejszamy skok siatki dwukrotnie k = k/2. Zanim zaczniemy iteracj¦
z mniejszym skokiem musimy wyliczy¢ warto±ci pocz¡tkowe Φ w nowych
punktach siatki. W nowych punktach, które le»¡ mi¦dzy par¡ starych (patrz
rysunek 1 - puste kwadraty mi¦dzy peªnymi) przyjmiemy ±redni¡ arytmetyczn¡ z potencjaªu wyliczonego w tych punktach. Pozostaªe nowe punkty le»¡
na ±rodku kwadratów, w których naro»nikach s¡ punkty siatki rzadkiej. Dla
tych nowych punktów na starcie bierzemy ±redni¡ arytmetyczn¡ z naro»ników
kwadratu (z czterech starych punktów s¡siednich).
Procedur¦ powtarzamy a» do wyliczenia potencjaªu ze skokiem k = 1. Dla
ka»dego k : narysowa¢ potencjaª dla którego uzyskano zbie»no±¢ (25 pkt).
Narysowa¢ energie pola w w funkcji numeru iteracji dla wszystkich k (25
pkt).