Używam nieliniowego pakietu solvera PETSc SNES do rozwiązania układu równań nieliniowych uzyskanych przez dyskretyzację równania różniczkowego cząstkowego. Jak mogę ustalić, dlaczego solver nie jest zbieżny i co mogę zrobić, aby pomyślnie rozwiązać moje równania?
petsc
pde
implicit-methods
Jed Brown
źródło
źródło
Odpowiedzi:
Metoda Newtona może nie zbiegać się z wielu powodów, oto niektóre z najczęstszych.
Oto kilka sposobów na debugowanie braku konwergencji Newtona.
-snes_monitor -ksp_monitor_true_residual -snes_converged_reason -ksp_converged_reason
. Jeśli rozwiązanie liniowe nie jest zbieżne, sprawdź, czy jakobian jest poprawny, a następnie zobacz to pytanie . Jeśli wstępnie kondycjonowana reszta zbiegnie się, ale prawdziwa reszta nie, zbieżność może być pojedyncza. Jeśli rozwiązanie liniowe dobrze zbiegnie się, ale wyszukiwanie linii nie powiedzie się, jakobian może być niepoprawny.-pc_type lu or -pc_type svd
aby sprawdzić, czy problem jest złym rozwiązaniem liniowym-mat_view
lub-mat_view_draw
zobacz, czy jakobian wygląda rozsądnie-snes_type test -snes_test_display
aby sprawdzić, czy używany przez Ciebie jakobian jest niewłaściwy. Porównaj dane wyjściowe po dodaniu,-mat_fd_type ds
aby zobaczyć, czy wynik jest wrażliwy na wybór parametru różnicowania.-snes_mf_operator -pc_type lu
aby sprawdzić, czy używany przez Ciebie jakobian jest niewłaściwy. Jeśli problem jest zbyt duży do bezpośredniego rozwiązania, spróbuj-snes_mf_operator -pc_type ksp -ksp_ksp_rtol 1e-12
. Porównaj dane wyjściowe po dodaniu,-mat_mffd_type ds
aby zobaczyć, czy wynik jest wrażliwy na wybór parametru różnicowania.-snes_ls_monitor
aby sprawdzić, czy wyszukiwanie linii nie powiedzie się (zwykle jest to oznaka złego jakobianu).-info
aby uzyskać bardziej szczegółowe informacje na temat procesu rozwiązania.Oto kilka sposobów, aby pomóc procesowi Newtona, jeśli wszystko powyżej się sprawdzi
-snes_grid_sequence
jest to wszystko, czego potrzebujesz, jeśli pracujesz z aDM
), aby wygenerować lepsze początkowe domysły na drobniejszych siatkach./configure --with-precision=__float128 --download-f2cblaslapack
z PETSc 3.2 i nowszymi, wymaga kompilatorów GNU w wersji 4.6 lub nowszej)if
w ocenie resztkowej występują stwierdzenia, np. Zmiana fazy lub ograniczenia TVD). Użyj rozwiązania nierówności wariacyjnych ( SNESVINEWTONRSLS ), jeśli nieciągłości mają fundamentalne znaczenie.-ts_type tr
może być konieczne dostosowanie parametrów).źródło