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).