Przejdź do treści

!SOLVER

Sterowanie solverem

Wymagane dane sterujące.

Parametry

METHOD =    Metoda rozwiązania (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
            DIRECT     : Metoda bezpośrednia z wyjątkiem analizy kontaktowej (tylko przetwarzanie szeregowe) (obecnie niedostępna)
            DIRECTmkl  : Metoda bezpośrednia wykorzystująca Intel MKL
            MUMPS      : Metoda bezpośrednia wykorzystująca MUMPS
            Po wybraniu metody bezpośredniej wiersze danych są ignorowane.
            Metody iteracyjne dla problemów o 3 stopniach swobody obsługują wykonywanie wielowątkowe z OpenMP

PRECOND =   Metoda prekondycjonowania dla solverów iteracyjnych (1, 2, 3, 5, 10, 11, 12, 22)
            1, 2       : (Blokowy) SSOR (z porządkowaniem wielokolorowym tylko dla problemów o 3 stopniach swobody)
            3          : (Blokowe) skalowanie diagonalne
            5          : AMG wykorzystujące pakiet ML do prekondycjonowania wielosiatkowego
            10         : Blokowy ILU(0)
            11         : Blokowy ILU(1)
            12         : Blokowy ILU(2)
            22         : AMG wykorzystujące wbudowany w HEC-MW SA-AMG (AMG z wygładzonym agregowaniem)
            10, 11 i 12 są dostępne tylko dla problemów o 3 stopniach swobody
            22 jest dostępne tylko w kompilacjach z włączonym LAPACK
            Dla wykonywania wielowątkowego OpenMP zalecane jest SSOR, skalowanie diagonalne, ML lub SA-AMG

ITERLOG =   Czy zapisywać historię zbieżności solvera iteracyjnego          (YES/NO)(Domyślnie: NO)

TIMELOG =   Czy zapisywać czas obliczeń solvera                             (YES/NO/VERBOSE)(Domyślnie: NO)

LOGLEVEL =  Poziom wyjścia informacji diagnostycznych prekondycjonera     (liczba całkowita)(Domyślnie: bez wyjścia)
            Określany niezależnie od ITERLOG i TIMELOG
            Dla wartości 1 lub większej wyprowadzana jest struktura hierarchii i inne informacje o prekondycjonerach AMG (PRECOND=5,22)
            Dla wartości 2 lub większej wyprowadzane są bardziej szczegółowe informacje (np. użycie pamięci)

USEJAD =    Czy używać porządkowania dla procesorów wektorowych              (YES/NO)(Domyślnie: NO)
            Obowiązuje tylko wtedy, gdy dla problemu o 3 stopniach swobody używana jest metoda iteracyjna

SCALING =   Czy skalować macierz tak, aby elementy diagonalne były równe 1   (YES/NO)(Domyślnie: NO)
            Obowiązuje tylko wtedy, gdy dla problemu o 3 stopniach swobody używana jest metoda iteracyjna

DUMPTYPE =  Format zrzutu macierzy (NONE, MM, CSR, BSR) (głównie do debugowania)
            NONE : Bez zrzutu (domyślnie)
            MM   : Format Matrix Market
            CSR  : Format Compressed Sparse Row (CSR)
            BSR  : Blokowy format CSR

DUMPEXIT =  Zakończ program natychmiast po zrzucie macierzy                  (YES/NO)(Domyślnie: NO)

MPCMETHOD = Metoda obsługi więzów wielopunktowych (1, 3)
            1: Metoda kary (domyślna przy użyciu metody bezpośredniej)
            3: Jawna eliminacja stopni swobody (domyślna przy użyciu metody iteracyjnej)
            Metoda MPC-CG (2) została usunięta. Podanie 2 powoduje wyświetlenie ostrzeżenia i użycie metody domyślnej.

ESTCOND =   Częstotliwość estymacji liczby uwarunkowania (eksperymentalne)
            Estymuj liczbę uwarunkowania w każdym podanym interwale iteracji oraz na końcu iteracji
            Po podaniu 0 estymacja nie jest wykonywana

RECOMPUTE_RESIDUAL = Częstotliwość ponownego obliczania wektora resztowego
            Obowiązuje tylko wtedy, gdy dla METHOD podano CG, BiCGSTAB, GPBiCG lub PipeCG
            Metody iteracyjne aktualizują wektor resztowy za pomocą zależności rekurencyjnej, przez co kumulują się błędy zaokrągleń
            Po każdej podanej liczbie iteracji wektor resztowy jest ponownie obliczany jako {b}-[A]{x}
            Po podaniu 0 używana jest wartość domyślna danej metody (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
            Po podaniu wartości ujemnej okresowe ponowne obliczanie nie jest wykonywane
            Ponowne obliczenie w celu potwierdzenia zbieżności jest zawsze wykonywane po spełnieniu kryterium zbieżności, niezależnie od tego ustawienia
            Zbyt krótki okres nie tylko zwiększa liczbę mnożeń macierz-wektor, lecz może także
            pogorszyć samą zbieżność lub spowodować, że rozwiązanie przestanie być zbieżne
            Po zmianie tego ustawienia z wartości domyślnej sprawdź historię zbieżności i końcową resztę względną

METHOD2 =   Druga metoda rozwiązania (BiCGSTAB, GMRES, GPBiCG) (eksperymentalne)
            Obowiązuje tylko wtedy, gdy dla METHOD podano CG
            Jeśli CG jest rozbieżne, automatycznie przełącz na metodę dodatkową i kontynuuj rozwiązanie
            Dla pozostałych parametrów i wierszy danych używane są te same wartości

CONTACT_ELIM = Określa, czy w analizie kontaktowej wykonywana jest eliminacja stopni swobody (0,1)
               0: Wykonuj eliminację stopni swobody tylko przy użyciu metody iteracyjnej (domyślnie)
               1: Zawsze wykonuj eliminację stopni swobody (również przy użyciu metody bezpośredniej)

** 2. i kolejne wiersze **

(2. wiersz) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
Nazwa zmiennej Typ Opis
NITER I Liczba iteracji (domyślnie: 100)
iterPREmax I Liczba iteracji prekondycjonowania Additive Schwarz (domyślnie: 1)
(Zalecana wartość: 1; 2 może być skuteczne w niektórych obliczeniach równoległych)
NREST I Rozmiar podprzestrzeni Kryłowa (domyślnie: 10)
(Obowiązuje tylko wtedy, gdy jako metodę rozwiązania wybrano GMRES)
NCOLOR_IN I Docelowa liczba kolorów dla porządkowania wielokolorowego (domyślnie: 10)
(Obowiązuje tylko wtedy, gdy liczba wątków OpenMP wynosi co najmniej 2)
RECYCLEPRE I Liczba ponownych użyć informacji o konfiguracji prekondycjonera (domyślnie: 3)
(Obowiązuje tylko w analizie nieliniowej)
(3. wiersz) RESID, SIGMA_DIAG, SIGMA
Nazwa zmiennej Typ Opis
RESID R Tolerancja zbieżności (domyślnie: 1.0e-8)
SIGMA_DIAG R Współczynnik skali stosowany do elementów diagonalnych podczas obliczania macierzy prekondycjonera (domyślnie: 1.0)
(Jeśli przy prekondycjonowaniu ILU występuje dzielenie przez zero lub rozbieżność, problem może osiągnąć zbieżność po podaniu wartości większej niż 1.0)
SIGMA R Nieużywane (domyślnie: 0.0)

Gdy PRECOND=5 (opcjonalnie)

Jeśli dla PRECOND podano wartość inną niż 5 lub 22, 4. wiersz jest ignorowany.

(4. wiersz) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
Nazwa zmiennej Typ Opis
ML_CoarseSolver I Solver siatki zgrubnej dla ML (1: użyj wygładzacza, 2: KLU (szeregowa metoda bezpośrednia), 3: MUMPS (równoległa metoda bezpośrednia)) (domyślnie: 1)
(Zalecane: 3 lub 2 dla trudnych problemów, 1 dla zwykłych problemów)
ML_Smoother I Wygładzacz ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (domyślnie: 1)
(Zalecane: 1)
ML_MGCycle I Cykl wielosiatkowy ML (1: cykl V, 2: cykl W, 3: pełny cykl V) (domyślnie: 1)
(Zalecane: 2 dla trudnych problemów, 1 dla zwykłych problemów)
ML_MaxLevels I Maksymalna liczba poziomów ML (domyślnie: 10)
(Dla szczególnie trudnych problemów użyj bezpośredniego solvera siatki zgrubnej i 2 poziomów (lub 3, jeśli pamięć jest niewystarczająca); dla zwykłych problemów zalecane jest 10)
ML_CoarseningScheme I Schemat zgrubiania ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (domyślnie: 1)
(Zalecane: 1 lub 5)
ML_NumSweep I Liczba przebiegów wygładzacza ML (stopień wielomianu dla Chebysheva) (domyślnie: 2)
(Zalecane: 2 dla Chebysheva, 1 dla SymBlockGaussSeidel)

Gdy PRECOND=22 (opcjonalnie)

Jeśli dla PRECOND podano wartość inną niż 22, 5. wiersz jest ignorowany. Zarówno 4., jak i 5. wiersz można pominąć w całości; można też pominąć końcowe pozycje każdego z nich. Dla każdej pozycji o wartości 0 używana jest wartość domyślna.

Pozycje od 1 do 7 w 4. wierszu mają taki sam układ jak w wierszu opcji PRECOND=5 (ML), dlatego wiersz opcji ML można wykorzystać bez zmian. Pozycje od 8 do 10 są specyficzne dla SA-AMG.

(4. wiersz) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (nieużywane), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (nieużywane)
Nazwa zmiennej Typ Opis
SA_CoarseSolver I Solver siatki zgrubnej (0: automatycznie, 1: użyj wygładzacza, 2: bezpośrednia metoda dla macierzy gęstej, 3: MUMPS (równoległa metoda bezpośrednia)) (domyślnie: 0)
(W trybie automatycznym MUMPS jest używany w kompilacjach z włączonym MUMPS; w pozostałych przypadkach używana jest bezpośrednia metoda dla macierzy gęstej)
SA_Smoother I Wygładzacz (0 lub 1: Chebyshev) (domyślnie: 0)
(Obsługiwany jest tylko Chebyshev. Podanie innej wartości powoduje wyświetlenie ostrzeżenia i użycie Chebysheva)
SA_MGCycle I Cykl wielosiatkowy (0: domyślny (cykl W), 1: cykl V, 2: cykl W) (domyślnie: 0)
(Pełny cykl V nie jest obsługiwany)
SA_MaxLevels I Maksymalna liczba poziomów (domyślnie: 20)
(nieużywane) I Pozycja odpowiadająca schematowi zgrubiania ML. Ponieważ SA-AMG zawsze wykorzystuje agregację niesprzężoną, wartość różna od zera powoduje wyświetlenie ostrzeżenia i jest ignorowana
SA_ChebyDegree I Stopień wielomianu wygładzacza Chebysheva (domyślnie: 2)
SA_CoarseSize I Rozmiar odcięcia siatki zgrubnej (domyślnie: 50000, gdy MUMPS jest solverem siatki zgrubnej; w przeciwnym razie 100)
SA_MaxAggSize I Maksymalny rozmiar agregatu (domyślnie: 96)
SA_GalerkinLowMem I Metoda obliczania macierzy siatki zgrubnej (0: normalna (priorytet szybkości), wartość dodatnia: oszczędzanie pamięci) (domyślnie: 0)
(Podaj wartość dodatnią, jeśli podczas konfiguracji brakuje pamięci)
(nieużywane) I Zarezerwowane dla przyszłych rozszerzeń

Piąty wiersz jest przeznaczony wyłącznie dla SA-AMG i nie jest odczytywany przez ML.

(5. wiersz) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
Nazwa zmiennej Typ Opis
SA_Theta R Próg określania silnych połączeń (domyślnie: 0.0)
(Dla 0.0 niezerowa struktura macierzy jest używana bezpośrednio jako graf)
SA_ChebyAlpha R Współczynnik określający dolną granicę przedziału wartości własnych, na którym działa wygładzacz Chebysheva (domyślnie: 20.0)
SA_Safety R Współczynnik bezpieczeństwa stosowany do oszacowanej największej wartości własnej (domyślnie: 1.1)
SA_TaperK R Współczynnik K stopniowania zgrubiania (domyślnie: 100)
(Od poziomu 2 zgrubianie jest łagodniejsze, aby pozostało co najmniej około K agregatów. Wartość ujemna wyłącza stopniowanie)
SA_AggOrder R Kolejność przechodzenia agregacji (0: domyślna (kolejność BFS), 1: kolejność BFS, 2: kolejność według skrótu numerów węzłów (eksperymentalna), 3: rosnąco według stopnia (eksperymentalna), 4: malejąco według stopnia (eksperymentalna), wartość ujemna: kolejność numerów węzłów) (domyślnie: 0)
SA_MinAggSize R Minimalny rozmiar agregatu (domyślnie: 3)
SA_Verify R Czy podczas konfiguracji wykonywać samokontrolę (0: nie, wartość dodatnia: tak) (domyślnie: 0) (głównie do debugowania)
SA_DumpVTK R Czy wyprowadzać agregację najwyższego poziomu w formacie VTK (0: bez wyjścia, wartość dodatnia: wyjście) (domyślnie: 0) (głównie do debugowania)

Przykłady

Użyj CG z prekondycjonowaniem SSOR i ustaw maksymalną liczbę iteracji na 10000 oraz tolerancję zbieżności na 1.0e-8

!SOLVER, METHOD=CG, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Użyj GMRES z prekondycjonowaniem SSOR i ustaw rozmiar podprzestrzeni Kryłowa na 40 oraz docelową liczbę kolorów dla porządkowania wielokolorowego na 100

!SOLVER, METHOD=GMRES, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1, 40, 100
  1.0e-8, 1.0, 0.0

Użyj CG z prekondycjonowaniem ILU(0) i ustaw współczynnik skali stosowany do elementów diagonalnych podczas obliczania macierzy prekondycjonera na 1.1

!SOLVER, METHOD=CG, PRECOND=10, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.1, 0.0

Użyj AMG przez ML jako prekondycjonera dla CG

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Użyj AMG przez ML jako prekondycjonera dla CG i MUMPS jako solvera siatki zgrubnej (dla trudnych problemów)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Użyj AMG przez ML jako prekondycjonera dla CG i cyklu W jako cyklu wielosiatkowego (dla trudnych problemów)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  1, 1, 2

Użyj AMG przez ML jako prekondycjonera dla CG, MUMPS jako solvera siatki zgrubnej i ustaw maksymalną liczbę poziomów na 2 (dla bardzo trudnych problemów)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3, 1, 1, 2

Użyj wbudowanego w HEC-MW SA-AMG jako prekondycjonera dla CG

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

Użyj SA-AMG jako prekondycjonera dla CG oraz MUMPS jako solvera siatki zgrubnej

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

W analizie kontaktu z tarciem użyj BiCGSTAB z prekondycjonerem SA-AMG i wyprowadź hierarchię prekondycjonera AMG

!SOLVER, METHOD=BiCGSTAB, PRECOND=22, ITERLOG=YES, TIMELOG=YES, LOGLEVEL=1
  10000, 1
  1.0e-8, 1.0, 0.0