Mój system to symetryczny problem FE z mnożnikami lagrange (np. Nieściśliwy przepływ Stokesa):
gdzie jest typowym przypadkiem (upewniłem się nawet, że równania są ponumerowane, aby mnożniki Lagrange'a pojawiały się na końcu). System jest dość duży (+ 100 tys. Linii).
Po przeczytaniu odpowiedzi na to pytanie miałem wrażenie, że istnieją odpowiednie warunki wstępne, które można zastosować w przypadku mieszanych problemów z FE.
Korzystając z PETSc, udało mi się rozwiązać system za pomocą MINRES ( -ksp_type minres -pc_type none -mat_type sbaij
), chociaż precyzja nie jest duża (powoduje kilka iteracji Newtona dla problemu liniowego). Wydaje się, że nie działa żadna inna kombinacja warunków wstępnych i ksp-solver.
Czy jest jakaś kombinacja flag dla PETSc, która rozwiąże ten system szybciej niż za pomocą MINRES?
źródło
Odpowiedzi:
Ostrzeżenie
Rozwiązywanie problemów związanych z siodłem wiąże się ze znacznie większym wyborem niż określone problemy, a jest o wiele więcej rzeczy, które mogą pójść nie tak. Użyj monitorów dla wszystkich poziomów do debugowania zbieżności, aby upewnić się, że spacje zerowe są obsługiwane poprawnie, gdy operatory pomocnicze są pojedyncze (zwykle tylko stała spacja pusta), oraz aby zapewnić stabilność warunków wstępnych. Te techniki są omówione w tym pytaniu .
Rozwiązywanie problemów z siodłem
Możesz zacząć od rozdziału dotyczącego rozwiązywania macierzy blokowych w Podręczniku użytkownika . W przypadku problemów podobnych do Stokesa można zbudować warunek wstępny dopełniacza Schur za pomocą PCFIELDSPLIT .
Można to połączyć z warunkiem wstępnym Leut Squares Commutator dla uzupełnienia Schur (
-fieldsplit_1_pc_type lsc
). To jest wspólne-fieldsplit_1_ksp_type preonly
i niech zewnętrzna iteracja wykona większość pracy. Warianty bloku trójkątnego są popularne, gdy są używane w ten sposób, np-pc_fieldsplit_schur_fact_type upper
.Możesz znaleźć dalsze szczegóły na temat składu solvera, korzystając z opcji opcji w naszym artykule (preprint) , który omawia także dojazdy do wielu sieci z rozkładem bloków (umieszczenie podświetlonego pola wewnątrz wielosiatki).
W przypadku wielu problemów będziesz chciał dostosować rozkład pola i warunki wstępne uzupełniania Schur, z których wiele obejmuje operatorów pomocniczych. Na przykład metoda „dyfuzji konwekcyjno-ciśnieniowej” (PCD) Elmana i in. Wymaga dyskretyzacji operatora pomocniczego w przestrzeni ciśnieniowej. Zobacz przykłady PCSHELL i rozdział instrukcji użytkownika w tym celu.
źródło
Potrzebujesz warunku wstępnego, a jego budowę omówiono tutaj: http://www.math.tamu.edu/~bangerth/videos.676.38.html
źródło