!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)
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 multigrid ML
10 : ILU(0) pe blocuri
11 : ILU(1) pe blocuri
12 : ILU(2) pe blocuri
10, 11 și 12 sunt disponibile numai pentru probleme cu 3 GDL
Pentru execuția paralelă pe fire OpenMP se recomandă SSOR, scalarea diagonală sau ML
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)
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, 2, 3)
1: metoda penalizării (implicit când se utilizează o metodă directă)
2: metoda MPC-CG (învechită)
3: eliminarea explicită a GDL (implicit când se utilizează o metodă iterativă)
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
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ă orice altă valoare, 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ă smoother-ul, 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 | Smoother ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (implicit: 1) (Recomandat: 1) |
| ML_MGCycle | I | Ciclul multigrid 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 smoother-ului ML (gradul polinomului pentru Chebyshev) (implicit: 2) (Recomandat: 2 pentru Chebyshev, 1 pentru SymBlockGaussSeidel) |
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 multigrid (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)