Przejdź do treści

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