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.