Solver i prekondycjonowanie¶
Solvery liniowe FrontISTR konfiguruje się przez wybór metody bezpośredniej albo iteracyjnej; metody iteracyjne łączy się z prekondycjonerem w celu rozwiązania równań liniowych. Metoda obsługi MPC oraz eliminacja stopni swobody kontaktu są wyborami pomocniczymi, które określają sposób traktowania układu liniowego zawierającego więzy wielopunktowe lub kontaktowe.
Przegląd funkcjonalny¶
Ustawienia solvera i prekondycjonowania obejmują następujące wybory. Najpierw wybiera się metodę iteracyjną albo bezpośrednią jako solver liniowy. Prekondycjoner jest łączony wyłącznie z metodą iteracyjną.
| Kategoria | Główne opcje | Rola |
|---|---|---|
| Metody iteracyjne | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN |
Rozwiązują duże macierze rzadkie przy stosunkowo efektywnym wykorzystaniu pamięci. |
| Prekondycjonery dla metod iteracyjnych | SSOR, skalowanie diagonalne, BILU, AMG, SAINV, RIF | Poprawiają zbieżność metod iteracyjnych. Nie są używane z metodami bezpośrednimi. |
| Metody bezpośrednie | MUMPS, MKL |
Rozwiązują równania liniowe w sposób odporny przez faktoryzację macierzy. |
| Metody obsługi MPC | Metoda kary, metoda MPC-CG, jawna eliminacja stopni swobody | Włączają więzy wielopunktowe do układu liniowego. |
| Eliminacja stopni swobody kontaktu | Automatyczna, zawsze włączona | Steruje obsługą stopni swobody kontaktu dodawanych przez kontakt SLAGRANGE. |
| Funkcje pomocnicze | Estymacja liczby uwarunkowania, zrzut macierzy, rejestrowanie | Wspierają debugowanie, ocenę zbieżności i ocenę wydajności. |
W obliczeniach równoległych równoległość MPI opartą na dekompozycji domeny można łączyć z równoległością wątkową OpenMP. Metody iteracyjne są standardowym wyborem dla wielkoskalowych analiz równoległych, natomiast metody bezpośrednie stosuje się, gdy połączone są wymagane biblioteki i potrzebne jest bardziej odporne rozwiązanie.
Wybór solvera i prekondycjonera¶
Najpierw zdecyduj, czy użyć metody iteracyjnej, czy bezpośredniej. Jeśli wybierzesz metodę iteracyjną, następnie wybierz prekondycjoner.
| Kryterium wyboru | Zalecane podejście |
|---|---|
| Rozmiar problemu | Metody bezpośrednie są stabilne i łatwe w użyciu dla małych i średnich problemów. Metody iteracyjne są bardziej oszczędne pamięciowo dla dużych problemów. |
| Symetria macierzy | Dla problemów symetrycznych dodatnio określonych rozważ CG. Dla problemów niesymetrycznych rozważ BiCGSTAB, GMRES, GPBiCG lub podobne metody. |
| Środowisko równoległe | Przy równoległości MPI połącz metodę iteracyjną z dekompozycją domeny. Dla prekondycjonowania przy równoległości OpenMP rozważ wielokolorową implementację SSOR. |
| Prekondycjoner (przy metodzie iteracyjnej) | Najpierw wypróbuj domyślny SSOR, a następnie rozważ AMG. SSOR ma mały koszt obliczeniowy przy dobrej zbieżności; AMG nadaje się do złożonych problemów wielkoskalowych. |
| Kontakt i MPC | W analizach zawierających kontakt lub więzy wielopunktowe wybór metody obsługi MPC i eliminacji stopni swobody kontaktu wpływa na zbieżność i odporność rozwiązania. |
| Biblioteki zewnętrzne | MUMPS, MKL i AMG są dostępne w wersjach zbudowanych z odpowiednimi bibliotekami. |
Dla standardowych analiz domyślna tolerancja zbieżności, maksymalna liczba iteracji i współczynnik korekcji diagonalnej prekondycjonera są na ogół wystarczające. Dopiero gdy zbieżność jest powolna lub rozwiązanie jest rozbieżne, należy kolejno ponownie rozważyć metodę iteracyjną, prekondycjoner, metodę obsługi MPC i eliminację stopni swobody kontaktu. Wartości parametrów i składnię podano w dokumentacji słowa kluczowego !SOLVER.
Metody iteracyjne¶
Metody iteracyjne rozwiązują duże układy rzadkie przez wielokrotne aktualizowanie rozwiązania za pomocą iloczynów macierz-wektor i prekondycjonowania. FrontISTR udostępnia następujące metody iteracyjne.
| Metoda iteracyjna | Typowe zastosowanie | Uwagi |
|---|---|---|
CG |
Problemy symetryczne dodatnio określone | Standardowy kandydat dla analiz konstrukcyjnych i przewodzenia ciepła. |
BiCGSTAB |
Problemy niesymetryczne | Kandydat, gdy kontakt lub efekty sprzężenia powodują silną niesymetrię. |
GMRES |
Problemy niesymetryczne | Używany z określonym rozmiarem podprzestrzeni Kryłowa. |
GPBiCG |
Problemy niesymetryczne | Używany jako ulepszona metoda z rodziny BiCGSTAB. |
GMRESR |
Problemy niesymetryczne, zastosowania zaawansowane | Opcja używająca GMRES w formie zagnieżdżonej. |
GMRESREN |
Problemy niesymetryczne, zastosowania zaawansowane | Rekurencyjny wariant z rodziny GMRESR. |
CG zakłada, że macierz jest symetryczna dodatnio określona. Jeśli kontakt z tarciem, niesymetryczna obsługa więzów, efekty sprzężenia lub podobne czynniki wprowadzają silną niesymetrię, rozważ BiCGSTAB, GMRES, GPBiCG albo inny solver niesymetryczny. W przypadku GMRES zwiększenie rozmiaru podprzestrzeni Kryłowa może poprawić zbieżność, ale zwiększa też zużycie pamięci.
Gdy określono METHOD2, FrontISTR może przełączyć się na alternatywną metodę iteracyjną, jeśli CG ulegnie rozbieżności lub załamaniu. Funkcja ta jest mechanizmem awaryjnym dla przypadków, w których CG jest solverem podstawowym; metoda alternatywna korzysta z tych samych pozostałych ustawień i linii danych co solver podstawowy.
Prekondycjonowanie¶
Prekondycjonowanie przekształca macierz współczynników w celu poprawy zbieżności metody iteracyjnej i jest stosowane tylko wtedy, gdy wybrano metodę iteracyjną. Metody bezpośrednie nie używają prekondycjonowania. Nawet dla tej samej metody iteracyjnej wybór prekondycjonera może znacząco zmienić liczbę iteracji i czas obliczeń potrzebny do uzyskania zbieżności.
| Prekondycjoner | Charakterystyka | Typowe zastosowanie |
|---|---|---|
| SSOR | Standardowy prekondycjoner; obsługuje wielokolorowe porządkowanie. | Pierwszy kandydat do wypróbowania; szeroko stosowany w analizie konstrukcyjnej. |
| Skalowanie diagonalne | Lekki prekondycjoner wykorzystujący elementy diagonalne. | Gdy preferowany jest niski koszt obliczeniowy. |
| BILU | Blokowa niepełna faktoryzacja LU. | Kandydat dla problemów, które trudno doprowadzić do zbieżności za pomocą SSOR. |
| AMG | Algebraiczna metoda wielosiatkowa wykorzystująca Trilinos-ML. | Kandydat dla problemów wielkoskalowych lub problemów zdominowanych przez hierarchiczne składowe błędu. |
| SAINV | Rzadka przybliżona odwrotność. | Specjalizowana opcja prekondycjonowania dla problemów kontaktowych lub środowisk pamięci rozproszonej. |
| RIF | Odporna niepełna faktoryzacja. | Inna opcja niepełnej faktoryzacji. |
SSOR jest standardowym wyborem, a przy równoległości OpenMP używana jest wersja z wielokolorowym porządkowaniem. Skalowanie diagonalne ma mały koszt, choć stopień poprawy zbieżności zależy od problemu. BILU jest zaimplementowane jako blokowa niepełna faktoryzacja LU i obsługuje także macierze o ogólnej liczbie stopni swobody. Dla rodziny BILU istnieje ścieżka, która automatycznie zwiększa współczynnik korekcji diagonalnej SIGMA_DIAG i ponawia próbę, gdy metoda iteracyjna staje się rozbieżna; sposób określania wartości opisano w dokumentacji słów kluczowych.
AMG używa Trilinos-ML, dlatego ML musi być włączone podczas budowania. Można określać wygładzacze, cykle wielosiatkowe, metody agregacji i inne ustawienia, ale szczegółowe wartości podano w dokumentacji słów kluczowych. Gdy SAINV jest używany w analizie równoległej zawierającej kontakt lub więzy MPC, głębokość nakładania stosowana w dekompozycji domeny może wpływać na zbieżność.
Metody bezpośrednie¶
Metody bezpośrednie rozwiązują równania liniowe przez faktoryzację macierzy współczynników. Ponieważ nie zależą od liczby iteracji, są odporne i mogą być stabilnym wyborem dla analiz zawierających kontakt lub warunki więzów. Ich zużycie pamięci rośnie jednak wraz z rozmiarem problemu.
| Metoda bezpośrednia | Środowisko równoległe | Zastosowanie |
|---|---|---|
MUMPS |
Równoległość MPI | Rozwiązuje macierze rzadkie metodą bezpośrednią w środowiskach pamięci rozproszonej. |
MKL |
Intel MKL / OpenMP | Solver bezpośredni oparty na Intel MKL. Wewnętrznie używany jest Intel PARDISO. Przy wielu procesach MPI używana jest ścieżka Cluster MKL. DIRECTmkl jest aliasem MKL. |
Metody bezpośrednie mogą być używane zarówno dla macierzy symetrycznych, jak i niesymetrycznych. MUMPS i MKL wymagają połączenia odpowiednich bibliotek podczas budowania. Nie można ich używać w środowiskach bez tych bibliotek, dlatego wymagane zależności i opcje CMake opisano w przewodniku budowania.
FrontISTR zawiera również wbudowaną ścieżkę solvera bezpośredniego, która nie używa biblioteki zewnętrznej, ale w typowych analizach wymagających metody bezpośredniej w pierwszej kolejności należy zwykle rozważyć MUMPS albo MKL.
Prekondycjonowanie nie jest stosowane do metod bezpośrednich. Nawet jeśli prekondycjoner określono w !SOLVER, nie jest on używany w ścieżce solvera bezpośredniego.
Metody obsługi MPC¶
Metoda obsługi MPC określa sposób włączenia stopni swobody połączonych więzami wielopunktowymi do równań liniowych. Nawet przy tych samych równaniach więzów w danych wejściowych metoda obsługi zmienia właściwości i zachowanie zbieżności macierzy współczynników.
| Metoda obsługi MPC | Charakterystyka | Domyślne użycie |
|---|---|---|
| Metoda kary | Przybliżone spełnianie więzów przez dodanie dużych członów sztywności do równań więzów. | Domyślna dla metod bezpośrednich. |
| Metoda MPC-CG | Starsza metoda obsługująca iloczyny macierz-wektor zawierające więzy wewnątrz solvera iteracyjnego. | Niezalecana. |
| Jawna eliminacja stopni swobody | Eliminuje związane stopnie swobody i rozwiązuje zredukowany układ liniowy. | Domyślna dla metod iteracyjnych. |
Metoda kary jest domyślna dla metod bezpośrednich, natomiast jawna eliminacja stopni swobody jest domyślna dla metod iteracyjnych. Metoda MPC-CG jest starszą opcją zgodności i nie jest zalecana dla nowych analiz; zwykle należy używać jawnej eliminacji stopni swobody albo domyślnej obsługi wybranej metody bezpośredniej.
Metodę obsługi MPC można jawnie określić parametrem MPCMETHOD w !SOLVER. Znaczenie i składnię poszczególnych wartości podano w dokumentacji słów kluczowych.
Eliminacja stopni swobody kontaktu¶
Eliminacja stopni swobody kontaktu redukuje dodatkowe stopnie swobody kontaktu wprowadzane przez kontakt SLAGRANGE przed przekazaniem układu do solvera liniowego. Eliminacja tych stopni swobody może poprawić właściwości układu liniowego obsługiwanego przez metodę iteracyjną.
W domyślnym trybie automatycznym eliminacja stopni swobody kontaktu jest włączona dla metod iteracyjnych i wyłączona dla metod bezpośrednich. Dla metod bezpośrednich dostępna jest ścieżka rozwiązująca bezpośrednio powiększony układ zawierający stopnie swobody kontaktu.
Po jawnym określeniu CONTACT_ELIM eliminację stopni swobody kontaktu można wykonywać także przy użyciu metody bezpośredniej. Wybór typu kontaktu, pary kontaktowej i algorytmu kontaktu po stronie wejściowej opisano na stronie Kontakt i osadzanie.
Funkcje pomocnicze¶
Estymacja liczby uwarunkowania, zrzuty macierzy i rejestrowanie mogą być używane do badania zbieżności i wydajności solvera. Funkcje te nie są potrzebne w normalnych analizach i włącza się je głównie do debugowania lub oceny wydajności.
| Funkcja | Zastosowanie | Uwagi |
|---|---|---|
| Estymacja liczby uwarunkowania | Wyprowadza wskaźnik liczby uwarunkowania dla CG i GMRES. |
Dostępna w wersjach z włączonym LAPACK. |
| Zrzut macierzy | Zapisuje macierz i prawą stronę przekazywaną do solvera. | Obsługuje formaty Matrix Market, CSR i BSR. |
DUMPEXIT |
Kończy analizę po zrzuceniu macierzy. | Używane, gdy do weryfikacji zewnętrznej potrzebna jest tylko macierz. |
ITERLOG |
Wyprowadza historię zbieżności metody iteracyjnej. | Służy do sprawdzania trendów residuum. |
TIMELOG |
Wyprowadza czas obliczeń solvera. | VERBOSE wyprowadza bardziej szczegółowy podział. |
STEPLOG |
Wyprowadza informacje o krokach. | Służy do sprawdzania przebiegu analizy. |
Zrzut macierzy umożliwia analizę macierzy współczynników złożonej przez analizę za pomocą narzędzi zewnętrznych. Gdy DUMPEXIT jest włączone, analiza kończy się po zapisaniu macierzy i prawej strony. Estymacja liczby uwarunkowania jest funkcją eksperymentalną dostępną dla CG i GMRES i może być używana do diagnozowania zbieżności.
Tematy powiązane¶
- Solver liniowy (teoria) — Matematyczne podstawy metod iteracyjnych i prekondycjonowania.
- Iteracje nieliniowe i całkowanie w czasie — Struktura iteracji Newtona, iteracji kontaktowych i całkowania w czasie wywołująca solver liniowy.
- Dekompozycja domeny — Analiza równoległa MPI i ustawienia głębokości nakładania.
- Kontakt i osadzanie — Wybór typów kontaktu i algorytmów kontaktu.
- !SOLVER — Wartości i składnia parametrów solvera i prekondycjonera.
- Wymagane i opcjonalne biblioteki zależności — Zależności takie jak
MUMPS,MKL(Intel PARDISO), Trilinos-ML i LAPACK.