!SOLVER¶
Controlul solverului
Date de control obligatorii.
Parametri¶
METHOD = Metoda de rezolvare (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : metodă directă, cu excepția analizei de contact (numai procesare serială) (indisponibilă în prezent)
DIRECTmkl : metodă directă utilizând Intel MKL
MUMPS : metodă directă utilizând MUMPS
Când este selectată o metodă directă, liniile de date sunt ignorate.
Metodele iterative pentru probleme cu 3 GDL acceptă execuția paralelă pe fire cu OpenMP
PRECOND = Metoda de precondiționare pentru solverele iterative (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : SSOR (pe blocuri) (cu ordonare multicoloră numai pentru probleme cu 3 GDL)
3 : scalare diagonală (pe blocuri)
5 : AMG utilizând pachetul de precondiționare multigrilă ML
10 : ILU(0) pe blocuri
11 : ILU(1) pe blocuri
12 : ILU(2) pe blocuri
22 : AMG utilizând SA-AMG integrat în HEC-MW (AMG cu agregare netezită)
10, 11 și 12 sunt disponibile numai pentru probleme cu 3 GDL
22 este disponibil numai în compilări cu LAPACK activat
Pentru paralelismul pe fire OpenMP se recomandă SSOR, Diagonal Scaling, ML sau SA-AMG
ITERLOG = Dacă se produce istoricul de convergență al solverului iterativ (YES/NO)(Implicit: NO)
TIMELOG = Dacă se produce timpul de calcul al solverului (YES/NO/VERBOSE)(Implicit: NO)
LOGLEVEL = Nivelul de ieșire al informațiilor de diagnostic ale precondiționerului (întreg)(implicit: fără ieșire)
Se specifică independent de ITERLOG și TIMELOG
La valoarea 1 sau mai mare se produc structura ierarhiei și alte informații pentru precondiționerele AMG (PRECOND=5,22)
La valoarea 2 sau mai mare se produc informații mai detaliate (de exemplu, utilizarea memoriei)
USEJAD = Dacă se utilizează ordonarea pentru procesoare vectoriale (YES/NO)(Implicit: NO)
Valabil numai când se utilizează o metodă iterativă pentru o problemă cu 3 GDL
SCALING = Dacă matricea este scalată astfel încât elementele diagonale să fie 1 (YES/NO)(Implicit: NO)
Valabil numai când se utilizează o metodă iterativă pentru o problemă cu 3 GDL
DUMPTYPE = Formatul dump-ului matricei (NONE, MM, CSR, BSR) (în principal pentru depanare)
NONE : fără dump (Implicit)
MM : format Matrix Market
CSR : format Compressed Sparse Row (CSR)
BSR : format CSR pe blocuri
DUMPEXIT = Încheie programul imediat după dump-ul matricei (YES/NO)(Implicit: NO)
MPCMETHOD = Metoda de tratare a constrângerilor multipunct (1, 3)
1: metoda penalizării (implicit când se utilizează o metodă directă)
3: eliminarea explicită a GDL (implicit când se utilizează o metodă iterativă)
Metoda MPC-CG (2) a fost eliminată. Dacă se specifică 2, se emite un avertisment și se folosește metoda implicită.
ESTCOND = Frecvența estimării numărului de condiționare (experimental)
Estimează numărul de condiționare la fiecare interval de iterații specificat și la sfârșitul iterațiilor
Nu se efectuează nicio estimare când se specifică 0
RECOMPUTE_RESIDUAL = Frecvența recalculării vectorului rezidual
Valabil numai când pentru METHOD este specificat CG, BiCGSTAB, GPBiCG sau PipeCG
Metodele iterative actualizează vectorul rezidual printr-o relație de recurență, astfel încât se acumulează erori de rotunjire
La fiecare interval de iterații specificat, vectorul rezidual este recalculat din {b}-[A]{x}
Dacă se specifică 0, se utilizează valoarea implicită a fiecărei metode (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Dacă se specifică o valoare negativă, nu se efectuează recalcularea periodică
Recalcularea pentru confirmarea îndeplinirii criteriului de convergență se efectuează întotdeauna, indiferent de această setare
Un interval prea scurt nu numai că mărește numărul produselor matrice-vector, ci poate și
degrada convergența însăși sau chiar împiedica convergența
Dacă modificați valoarea implicită, verificați istoricul convergenței și reziduul relativ final
METHOD2 = Metoda secundară de rezolvare (BiCGSTAB, GMRES, GPBiCG) (experimental)
Valabilă numai când pentru METHOD este specificat CG
Dacă CG diverge, comută automat la metoda secundară și continuă rezolvarea
Pentru ceilalți parametri și liniile de date se utilizează aceleași valori
CONTACT_ELIM = Specifică dacă se efectuează eliminarea GDL în analiza de contact (0,1)
0: efectuează eliminarea GDL numai când se utilizează o metodă iterativă (Implicit)
1: efectuează întotdeauna eliminarea GDL (inclusiv când se utilizează o metodă directă)
** A doua linie și liniile următoare **
| Variabilă | Atribut | Descriere |
|---|---|---|
| NITER | I | Numărul de iterații (implicit: 100) |
| iterPREmax | I | Numărul de iterații de precondiționare Additive Schwarz (implicit: 1) (Valoare recomandată: 1; 2 poate fi eficient în anumite calcule paralele) |
| NREST | I | Numărul de subspații Krylov (implicit: 10) (Valabil numai când GMRES este selectat ca metodă de rezolvare) |
| NCOLOR_IN | I | Numărul țintă de culori pentru ordonarea multicoloră (implicit: 10) (Valabil numai când numărul de fire OpenMP este cel puțin 2) |
| RECYCLEPRE | I | Numărul de reutilizări ale informațiilor de configurare ale precondiționerului (implicit: 3) (Valabil numai în analiza neliniară) |
| Variabilă | Atribut | Descriere |
|---|---|---|
| RESID | R | Eroare de trunchiere (implicit: 1.0e-8) |
| SIGMA_DIAG | R | Factor de scalare aplicat elementelor diagonale la calcularea matricei de precondiționare (implicit: 1.0) (Dacă la precondiționarea ILU apare o împărțire la zero sau divergență, problema poate converge când se specifică o valoare mai mare decât 1.0) |
| SIGMA | R | Neutilizat (implicit: 0.0) |
Când PRECOND=5 (opțional)¶
Dacă pentru PRECOND este specificată o valoare diferită de 5 sau 22, a patra linie este ignorată.
(a patra linie) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
| Variabilă | Atribut | Descriere |
|---|---|---|
| ML_CoarseSolver | I | Solver pentru grila grosieră ML (1: utilizează netezitorul, 2: KLU (metodă directă serială), 3: MUMPS (metodă directă paralelă)) (implicit: 1) (Recomandat: 3 sau 2 pentru probleme dificile, 1 pentru probleme obișnuite) |
| ML_Smoother | I | Netezitor ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (implicit: 1) (Recomandat: 1) |
| ML_MGCycle | I | Ciclul multigrilă ML (1: ciclu V, 2: ciclu W, 3: ciclu Full-V) (implicit: 1) (Recomandat: 2 pentru probleme dificile, 1 pentru probleme obișnuite) |
| ML_MaxLevels | I | Numărul maxim de niveluri ML (implicit: 10) (Pentru probleme deosebit de dificile, utilizați un solver direct pe grila grosieră și 2 niveluri (sau 3 dacă memoria este insuficientă); pentru probleme obișnuite se recomandă 10) |
| ML_CoarseningScheme | I | Schema de grosierizare ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (implicit: 1) (Recomandat: 1 sau 5) |
| ML_NumSweep | I | Numărul de treceri ale netezitorului ML (gradul polinomului pentru Chebyshev) (implicit: 2) (Recomandat: 2 pentru Chebyshev, 1 pentru SymBlockGaussSeidel) |
Când PRECOND=22 (opțional)¶
Dacă pentru PRECOND este specificată o valoare diferită de 22, a cincea linie este ignorată. Atât a patra, cât și a cincea linie pot fi omise integral; pot fi omise și elementele finale ale fiecărei linii. Pentru orice element specificat cu valoarea 0 se utilizează valoarea implicită.
Elementele 1–7 de pe a patra linie sunt dispuse în aceeași ordine ca pe linia de opțiuni PRECOND=5 (ML), astfel încât linia de opțiuni ML poate fi reutilizată fără modificări. Elementele 8–10 sunt specifice SA-AMG.
(a patra linie) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (neutilizat), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (neutilizat)
| Variabilă | Atribut | Descriere |
|---|---|---|
| SA_CoarseSolver | I | Solver pentru grila grosieră (0: automat, 1: utilizează netezitorul, 2: metodă directă pentru matrice densă, 3: MUMPS (metodă directă paralelă)) (implicit: 0) (În modul automat, MUMPS este utilizat în compilările cu MUMPS activat; în caz contrar se utilizează metoda directă pentru matrice densă) |
| SA_Smoother | I | Netezitor (0 sau 1: Chebyshev) (implicit: 0) (Este acceptat numai Chebyshev. Dacă este specificată altă valoare, se produce un avertisment și se utilizează Chebyshev) |
| SA_MGCycle | I | Ciclu multigrilă (0: implicit (ciclu W), 1: ciclu V, 2: ciclu W) (implicit: 0) (Ciclul Full-V nu este acceptat) |
| SA_MaxLevels | I | Numărul maxim de niveluri (implicit: 20) |
| (neutilizat) | I | Poziția corespunzătoare schemei de grosierizare ML. Deoarece SA-AMG utilizează întotdeauna agregare necuplată, o valoare nenulă produce un avertisment și este ignorată |
| SA_ChebyDegree | I | Gradul polinomului netezitorului Chebyshev (implicit: 2) |
| SA_CoarseSize | I | Dimensiunea de tăiere a grilei grosiere (implicit: 50000 când MUMPS este utilizat ca solver pentru grila grosieră; în caz contrar 100) |
| SA_MaxAggSize | I | Dimensiunea maximă a agregatului (implicit: 96) |
| SA_GalerkinLowMem | I | Metoda de calcul a matricei grilei grosiere (0: normală (prioritizează viteza), valoare pozitivă: economie de memorie) (implicit: 0) (Specificați o valoare pozitivă dacă memoria este insuficientă în timpul configurării) |
| (neutilizat) | I | Rezervat pentru extensii viitoare |
A cincea linie este specifică SA-AMG și nu este citită de ML.
(a cincea linie) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variabilă | Atribut | Descriere |
|---|---|---|
| SA_Theta | R | Pragul pentru determinarea conexiunilor puternice (implicit: 0.0) (La 0.0, structura nenulă a matricei este utilizată direct ca graf) |
| SA_ChebyAlpha | R | Raportul care determină limita inferioară a intervalului valorilor proprii vizat de netezitorul Chebyshev (implicit: 20.0) |
| SA_Safety | R | Factorul de siguranță aplicat valorii proprii maxime estimate (implicit: 1.1) |
| SA_TaperK | R | Coeficientul K pentru temperarea grosierizării (implicit: 100) (De la nivelul 2, grosierizarea devine mai graduală astfel încât să rămână cel puțin aproximativ K agregate. O valoare negativă dezactivează temperarea) |
| SA_AggOrder | R | Ordinea de parcurgere a agregării (0: implicită (ordine BFS), 1: ordine BFS, 2: ordinea hash a numerelor nodurilor (experimental), 3: ordine crescătoare după grad (experimental), 4: ordine descrescătoare după grad (experimental), valoare negativă: ordinea numerelor nodurilor) (implicit: 0) |
| SA_MinAggSize | R | Dimensiunea minimă a agregatului (implicit: 3) |
| SA_Verify | R | Dacă se execută o autoverificare în timpul configurării (0: nu, valoare pozitivă: da) (implicit: 0) (în principal pentru depanare) |
| SA_DumpVTK | R | Dacă agregarea de la nivelul superior este produsă în format VTK (0: fără ieșire, valoare pozitivă: ieșire) (implicit: 0) (în principal pentru depanare) |
Exemple¶
Utilizați CG cu precondiționare SSOR și setați numărul maxim de iterații la 10000 și eroarea de trunchiere la 1.0e-8
Utilizați GMRES cu precondiționare SSOR și setați numărul de subspații Krylov la 40 și numărul țintă de culori pentru ordonarea multicoloră la 100
Utilizați CG cu precondiționare ILU(0) și setați factorul de scalare aplicat elementelor diagonale la calcularea matricei de precondiționare la 1.1
Utilizați AMG prin ML ca precondiționer pentru CG
Utilizați AMG prin ML ca precondiționer pentru CG și MUMPS ca solver pentru grila grosieră (pentru probleme dificile)
Utilizați AMG prin ML ca precondiționer pentru CG și ciclul W ca ciclu multigrilă (pentru probleme dificile)
Utilizați AMG prin ML ca precondiționer pentru CG, utilizați MUMPS ca solver pentru grila grosieră și setați numărul maxim de niveluri la 2 (pentru probleme foarte dificile)
Utilizați SA-AMG integrat în HEC-MW ca precondiționer pentru CG
Utilizați SA-AMG ca precondiționer pentru CG și MUMPS ca solver pentru grila grosieră
Pentru analiza contactului cu frecare, utilizați BiCGSTAB cu precondiționare SA-AMG și produceți ierarhia precondiționerului AMG