Sposoby tworzenia uwarunkowania wstępnego dla metody gradientów sprzężonych Ten fakt, że matematyka obliczeniowa nie daje żadnych przepisów dla tworzenia operatora uwarunkowania wstępnego B, doprowadzi do tego, że na dzień dzisiejszy istnieje wielu różnych sposobów tworżenia tego operatora. Rozważymy kilka z nich. Incomplete Cholesky factorization (Niepełna faktoryzacja Choleckiego) Główna idea tego podejścia polega na tym, że jeśli A = B, zbieżność do dokładnego rozwiązania odbywa się za jedną iteracje. Więc jeśli B -1 przyjąć jako część sfaktoryzowanej macierzy A, to B -1 jest przybliżeniem najlepszego z punktu widzenia ilości iteracji preconditioningu A -1. 1
Usunięcie części elementów przy faktoryzacji macierzy A powoduje to, że niepełny faktor Choleckiego H zajmuje znacznie mniej miejsca w pamięci komputera w stosunku do pełnego faktora L i wymaga mniejszego czasu faktoryzacji. Istnieje dwie generalne idei zmniejszenia ilości elementów w niepełnym faktorze Choleckiego H. Tu B = H H T ; A = L L T. o Usunięcie wszystkich elementów, który powstają na pozycjach zerowych elementów macierzy źródłowej A w trakcie faktoryzacji (ilość elementów w macierzy H jest taką samą jak i w macierzy A L,gdzie A L dolny trójkąt macierzy A). To tak zwany incomplete Cholesky factorization by position. Takie podejście jest proste w realizacji, ale jakość uwarunkowania zwykłe nie jest wysoką dla wielu zadań praktycznych przyspieszenie zbieżności jest za słabe. Przy usunięci części elementów przy niepełnej faktoryzacji często się okazuje, że macierz przestaje być dodatnio określoną. Jeśli to się zdarza, faktoryzacje pozostaje przerwaną, w macierzy źródłowej A pozadiagonalne elementy są zmniejszone i faktoryzacja zaczyna się od początku. o Bardziej skutecznym podejściem jest incomplete Cholesky factorization by value. Uważamy, że małymi za wartością elementami macierzy L (pełnego faktora Choleckiego) można pominąć w stosunku do innych elementów: 2
2 Aij <ψaii Ajj, j = 1,2,..., N; i = j, j + 1,..., N, gdzie 0 <ψ < 1 - parametr rezygnacji (rejection parameter) Obliczenie kolumny j przy niepełnej faktoryzacji macierzy. Rezygnacja elementu A ij Po każdej rezygnacji macierz H j może stracić dodatnią określoność, dla tego pozostaje wprowadzona macierz poprawienia błędu E j : 3
j j j ii ij jj ij H = L + E D = A A ii jj A, D = A A jj ii A Macierz L j > 0 (dodatnio określona), E j 0 (półokreślona), z tego wynika, że suma dodatnio określonej macierzy i półokreślonej doprowadzi do macierzy dodatnio określonej H j jest macierz dodatnio określoną. Im mniej wartość ψ, tym lepiej właściwości uwarunkowania wstępnego. H L ( A ) C B ψ 0 1 1 Z innej strony, dla małych wartości ψ : o Czas niepełnej faktoryzacji dąży do czasu pełnej faktoryzacji o Rozmiar macierzy H dąży do rozmiaru macierzy L problem z RAM o Czas każdej iteracji drastycznie rośnie 4
Wyjściem z danej sytuacji jest zastosowanie technik macierzy rzadkich do niepełnej faktoryzacji Choleckiego sparse incomplete Cholesky factorization by value. Specjalnie napisany solwer bezpośredni dla niepełnej faktoryzacji macierzy rzadkich nadaje możliwość istotnie zmniejszyć granice rezygnacji ψ w porównaniu z solwerem zwykłym (incomplete skyline). To istotnie przyspiesza zbieżność. 5
Metoda gradientów sprzężonych z wielopoziomowym agregatowym uwarunkowaniem wstępnym (Aggregation Iterative Multilevel Solver AMIS) Generalna idea metod wielopoziomowych iteracyjnych polega na tym, że metody iteracyjne szybko się zbiegają po górnych modach rozwiązania i wolnie po niskich modach. Jeśli rozłożyć wektor rozwiązania zagadnienia Ax = b po wektorach własnych operatora A = N i = Avi = λivi, i = 1,2,..., N; 0 λ1 λ2... λn x αiv 1 i 6
to górne mody odpowiadają składowym z dużymi wartościami indeksu i, a niskie z małymi (wykład w11). Dla przyspieszenia zbieżności po niskich modach wprowadzimy tak zwaną model zgrubnego poziomu, zadaniem której jest przewidywanie aproksymacji tych mód. Znając rozwiązanie dla modelu zgrubnego poziomu (zwykłe rozmiar zadania dla modelu zgrubnego jest stosownie nie wielki można użyć metodę bezpośrednią), wykonujemy interpolacje tego rozwiązania na poziom modeluźródłowego. Jeśli A c to jest operator modelu zgrubnego poziomu, a odpowiednie równanie dla modelu zgrubnego poziomu A c x c = b c x c to interpolacją rozwiązania poziomuźródłowego jest wzór x * = Q x c, gdzie Q prostokątna macierz o rozmiarze N х n, N rozmiar zadania modelu źródłowego, n modelu zgrubnego ( N > n ). Jeśli podstawić wektor po interpolacji x * w równanie modeluźródłowego, to powstaje wektor rezydualny r = b Ax *. Można udowodnić, 7
że największe składowe tego wektora odpowiadają górnym (zwykłe szybko oscylującym) modom. Więc dla tłumienia tych szybko oscylujących rezyduów (ta procedura dostała nazwę wygładzenia) można skutecznie zastosować kilka kroków wewnętrznego procesu iteracyjnego, który, jak było pokazane w w11, szybko się zbiega dla mód górnych (więc szybko doprowadzi do wartości małych górne składowe wektora rezydualnego). Podsumowanie: dla metod wielopoziomowych występuje rozdzielenie funkcji uwarunkowania wstępnego: model zgrubnego poziomu niesie odpowiedzialność za przewidywanie niskich mód rozwiązania (za zbieżność po niskich modach), a procedura wygładzenia za szybkie tłumienie górnych składowych wektora rezydualnego (za zbieżność po górnych modach). Połączenie zalet metody gradientów sprzężonych i podejścia wielopoziomowego leży w osnowie metody gradientów sprzężonych z wielopoziomowym uwarunkowaniem wstępnym. 8
Generalny algorytm metody gradientów sprzężonych z wielopoziomowym uwarunkowaniem wstępnym Tworzymy model zgrubnego poziomu. W metodach wielosiatkowych to jest tworzone przy wygenerowaniu różnych siatek (wielopoziomowość geometryczna). Można to tworzyć na podstawie manipulowania z równaniami w macierzy A, na przykład, stworzyć bazu w podprzestrzeni o rozmiarze n < N, używając n kroków metody Lanczosa (metody algebraiczne). W metodzie agregatowej wielopoziomowej (solwer AMIS) dla zadań mechaniki konstrukcji jest zastosowana idea nakładania więzów sztywnych na węzły sąsiednie (agregacja). Tworzymy operatory restriction prolongation w zależności od sposobu przygotowania modelu poziomu zgróbnego. To jest macierzy prostokątne Q, Q T, które formułują związek wektorów modelu źródłowego z wektorami modelu zgrubnego i odwrotnie. Tworzymy macierz modelu zgrubnego poziomu (indeksy f, c oznaczają fine level (poziomźródłowy) i coarse level (poziom zgrubny) odpowiednio: Ax f AQx = r c f, = r f x f = Qx Q T c, r c = Q c T T Q 123 AQx A c r f = Q T { f c c c r c r A x = r 9
Sfaktoryzujemy macierz zgrubnego poziomu: A = L c c L T c Dalej w procesie iteracyjnym metody gradientów sprzężonych (wykład w11) zamiast jawnego rozwiązywania układu równań Bz k = r k z k wykonujemy taką procedurę: Rzutujemy wektor rezydualny modelu źródłowego na model zgrubny: r c = Q T r f Rozwiązujemy zadanie na poziomie modelu zgrubnego (używając metodę bezpośrednią): L L T z c = r c Interpolujemy rozwiązanie na poziomie modelu zgrubnego na poziom modeluźródłowego: z* f = Q z c Wygładzamy szybko oscylujące składowe wektora rezydualnego: z* f z f. Dokładne rozwiązanie można przedstawić w postaci z f = z * f + z^f, gdzie z^f wektor korekcji, który trzeba dodać do wektora z * f (po interpolacji),żeby dostać wektor rozwiązania dokładnego z f. 10
Wektor korekcji będziemy poszukiwali z warunku Bz f = r f B(z* f + z^f) = r f B z^f = r f Bz * f B = A A z^f = r f Az * f z^f (a) Jeśli rozwiązywać równanie (a) w sposób dokładny, to dostaniemy zbieżność do rozwiązania dokładnego za 1 iteracje. Przecież koszt takiego rozwiązania to jest koszt metody bezpośredniej. Celem naszym jest tu nie odnalezienie dokładnej różnicy pomiędzy dokładnym wektorem z f i wektorem z *, a wytłumienie szybko oscylujących rezyduów. Zastosujemy dla tego kilka kroków iteracji wewnętrznych, dla tego że metody iteracyjne szybko wytłumiają szybko oscylujące komponenty wektora rezydualnego (mają szybką zbieżność po górnych modach rozwiązania W11). Wybieramy dla iteracji wewnętrznych metodę najszybszego spadu. Dla przyspieszenia wygładzenia przy wykonywaniu iteracji wewnętrznych metodą najszybszego spadu używamy również uwarunkowanie wstępne (symetryczne uwarunkowanie Gaussa Seidela, incomplete Cholesky factorization by position, by value). 11
Przykład zadania dużego 12
Modeli obliczeniowe konstrukcji budowlanych są wspaniałymi testami dla sprawdzenie stabilności zbieżności solverów iteracyjnych. Takie modeli często doprowadzają do źle uwarunkowanych układów równań. Powodami dla tego służą obecność różnych typów elementów skończonych w obszarze modelu obliczeniowego i elementów cienkościennych, duży rozrzut sztywności elementów konstrukcji, nieidealność siatek dla złożonych obszarów obliczeniowych i wielu różnych. 13
Budynek wielopiętrowy 1 244 718 równań, rozrzut sztywności wynosi 13 890 952 razy! Najbardziej sztywne elementy płytowe mają grubość h = 2 m (płyta fundamentowa), a grubość powłoki kopula wynosi h = 0.01 m Komputer: Pentium-IV (CPU 3.21 GHz, RAM 2 GB) tol = 10 8 Kopula (najbardziej słabe elementy) Płyta fundamentowa (najbardziej sztywne elementy 14
Model obliczeniowy kościoła (316 509 równań) Źle uwarunkowanie układu równań powstaje w skutek złożoności geometrii konstrukcji, a również w skutek bardzo słabych gruntów posadowienia. 15
Cienkościenna konstrukcja powłokowa (228 486 równań) tol = 10 4 Stosunek h/r = 1:700 Żle uwarunkowany układ równań 16
Model MES budynku 44 piętrowego 1 956 634 równania 17
Porównywanie wydajności różnych metod b Ax Dokładność rozwiązania dla metod iteracyjnych: b 2 k 2 tol = 10 4 Metoda Bezpośrednia (multifrontal) Czas rozwiązywania Pamięć główna, MB 2 h 20 min 1.3 GB (7.2 GB rozmiar macierzy sfaktoryzowanej ) Ilość iteracji ICCG0 3 h 12 min 0.5 GB 8470 / 7944 / 7368 SICCG 27 min 25 s 1.5 GB 562 / 520 / 509 AMIS_SICCG 13 min 20 s 1.76 GB 31 / 31 / 30 - ICCG0 incomplete Cholesky factorization by position SICCG sparse incomplete Cholesky factorization by value AMIS_SICCG wielopoziomowy solwer iteracyjny agregatowy z wygładzeniem SICCG (4 poziomy agregacji 160 462 równania dla modeli zgrubnego poziomu, 4 iteracji przy wygładzeniu) 18
19
20