II. Rozwiązywanie równań nieliniowych

W drugiej części podręcznika omówimy wykorzystanie PETSc do rozwiązywania układów nieliniowych równań algebraicznych. W poprzedniej części nauczyliśmy się używać PETSc do rozwiązywania układów równań liniowych, korzystając z funkcji zawartych w komponencie SLES. Typowy schemat postępowania był następujący:

Bardzo miłą cechą używania SLESu było m.in. to, że wszystkie parametry miały ustawione rozsądne (!) wartości domyślne, dzięki czemu nie musieliśmy martwić się na samym początku o ich dobór. Można więc powiedzieć, że SLES działał trochę na zasadzie czarnej skrzynki, z tą różnicą, że w każdej chwili mieliśmy możliwość zmiany parametrów jej działania. Między innymi, SLES pozwalał nam w łatwy sposób zmienić metodę rozwiązywania układu i warunki stopu.

Podobnie będzie się nam pracowało z kolejnym składnikiem PETSc, służącym tym razem do (równoległego) rozwiązywania nieliniowych układów równań: SNES. Zanim przejdziemy do omówienia sposobów wykorzystania tego komponentu PETSc, zrobimy najpierw krótki wstęp o metodach rozwiązywania równań nieliniowych. Po przypomnieniu metod rozwiązywania takich równań, przedstawimy ogólny schemat użycia SNESu - nieliniowego analogonu SLESu - obiektu służącego do rozwiązywania równań nieliniowych. Następnie zobaczymy na dwóch przykładach, jak w praktyce wygląda stosowanie SNESu. Między innymi, użyjemy SNESu do zaimplementowania prostego programu rozwiązującego układ powstały po dyskretyzacji nieliniowego zagadnienia konwekcji-dyfuzji

W trakcie szczegółowego omawiania przedstawionych przykładów, poznamy techniki efektywnego wykorzystania całej naszej wiedzy o dotychczas poznanych składnikach PETSc (macierzach, SLESie, itp.) oraz omówimy bliżej bardzo pożyteczną ideę kontekstu.

Zakończymy tę część opisem możliwości modyfikacji działania SNESu: wyboru wariantu metody Newtona, kryteriów stopu, itd. oraz podsumowaniem składni wywołań procedur SNESu.

Szczegóły o preconditionerze AMS, których nie znajdziecie w oficjalnym manualu Spis treści Równania nieliniowe


Copyright (C) Marcin Bojko i Piotr Krzyzanowski, 1998.
Ostatnia modyfikacja: 12.X.98.