!SOLVER¶
Control del solucionador
Dades de control obligatòries.
Paràmetres¶
METHOD = Mètode de solució (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Mètode directe excepte per a l'anàlisi de contacte (només processament en sèrie) (actualment no disponible)
DIRECTmkl : Mètode directe amb Intel MKL
MUMPS : Mètode directe amb MUMPS
Quan se selecciona un mètode directe, s'ignoren les línies de dades.
Els mètodes iteratius per a problemes de 3 graus de llibertat admeten paral·lelisme per fils amb OpenMP
PRECOND = Mètode de precondicionament per als solucionadors iteratius (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Block) SSOR (amb ordenació multicolor només per a problemes de 3 graus de llibertat)
3 : (per blocs) escalat diagonal
5 : AMG mitjançant el paquet de precondicionament multigrid ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG amb el SA-AMG (Smoothed Aggregation AMG) integrat a HEC-MW
10, 11 i 12 només estan disponibles per a problemes de 3 graus de llibertat
El valor 22 només està disponible en compilacions amb LAPACK habilitat
Per a l'execució paral·lela per fils amb OpenMP, es recomanen SSOR, escalat diagonal, ML o SA-AMG
ITERLOG = Si s'ha de generar l'historial de convergència del solucionador iteratiu (YES/NO)(Per defecte: NO)
TIMELOG = Si s'ha de generar el temps de càlcul del solucionador (YES/NO/VERBOSE)(Per defecte: NO)
LOGLEVEL = Nivell de sortida de la informació de diagnòstic del precondicionament (enter)(per defecte: sense sortida)
S'especifica independentment d'ITERLOG i TIMELOG
Amb un valor igual o superior a 1, s'emet, entre altres dades, l'estructura jeràrquica dels precondicionadors AMG (PRECOND=5, 22)
Amb un valor igual o superior a 2, s'emet informació encara més detallada (com ara l'ús de memòria)
USEJAD = Si s'ha d'utilitzar ordenació per a processadors vectorials (YES/NO)(Per defecte: NO)
Només és vàlid quan s'utilitza un mètode iteratiu per a un problema de 3 graus de llibertat
SCALING = Si s'ha d'escalar la matriu perquè els elements diagonals siguin 1 (YES/NO)(Per defecte: NO)
Només és vàlid quan s'utilitza un mètode iteratiu per a un problema de 3 graus de llibertat
DUMPTYPE = Format de bolcat de la matriu (NONE, MM, CSR, BSR) (principalment per a depuració)
NONE : No fer cap bolcat (Per defecte)
MM : Format Matrix Market
CSR : Format Compressed Sparse Row (CSR)
BSR : Format Blocked CSR
DUMPEXIT = Finalitzar el programa immediatament després del bolcat de la matriu (YES/NO)(Per defecte: NO)
MPCMETHOD = Mètode per tractar les restriccions multipunt (1, 3)
1: Mètode de penalització (per defecte quan s'utilitza un mètode directe)
3: Eliminació explícita de graus de llibertat (per defecte quan s'utilitza un mètode iteratiu)
El mètode MPC-CG (2) s'ha eliminat. Si s'especifica 2, s'emet un avís i s'utilitza el mètode per defecte.
ESTCOND = Freqüència d'estimació del nombre de condició (experimental)
El nombre de condició s'estima a cada interval d'iteracions especificat i al final de les iteracions
Si s'especifica 0, no es fa cap estimació
RECOMPUTE_RESIDUAL = Freqüència de recàlcul del vector residual
Només és vàlid quan s'especifica CG, BiCGSTAB, GPBiCG o PipeCG per a METHOD
Els mètodes iteratius actualitzen el vector residual mitjançant una fórmula de recurrència, de manera que s'acumulen errors d'arrodoniment
A cada interval d'iteracions especificat, el vector residual es recalcula a partir de {b}-[A]{x}
Si s'especifica 0, s'utilitza el valor per defecte de cada mètode (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Si s'especifica un valor negatiu, no es fa cap recàlcul periòdic
El recàlcul per confirmar la convergència es fa sempre independentment d'aquesta configuració
Un interval massa curt no només augmenta el nombre de productes matriu-vector, sinó que també pot
empitjorar la convergència mateixa o fins i tot impedir que la solució convergeixi
Si es modifica el valor per defecte, comproveu l'historial de convergència i el residu relatiu final
METHOD2 = Mètode de solució 2 (BiCGSTAB, GMRES, GPBiCG) (experimental)
Només és vàlid quan s'especifica CG per a METHOD
Si el mètode CG divergeix, es canvia automàticament al segon mètode i es continua la resolució
Per als altres paràmetres i línies de dades s'utilitzen els mateixos valors
CONTACT_ELIM = Especifica si es fa l'eliminació de graus de llibertat en l'anàlisi de contacte (0,1)
0: Fer l'eliminació de graus de llibertat només quan s'utilitza un mètode iteratiu (per defecte)
1: Fer sempre l'eliminació de graus de llibertat (també quan s'utilitza un mètode directe)
** 2a línia i següents **
| Nom de la variable | Atribut | Descripció |
|---|---|---|
| NITER | I | Nombre d'iteracions (per defecte: 100) |
| iterPREmax | I | Nombre d'iteracions del precondicionament Additive Schwarz (per defecte: 1) (Valor recomanat: 1; en alguns càlculs paral·lels, 2 pot ser eficaç) |
| NREST | I | Mida del subespai de Krylov (per defecte: 10) (Només és vàlid quan se selecciona GMRES com a mètode de solució) |
| NCOLOR_IN | I | Nombre objectiu de colors en l'ordenació multicolor (per defecte: 10) (Només és vàlid quan el nombre de fils OpenMP és 2 o superior) |
| RECYCLEPRE | I | Nombre de vegades que es reutilitza la informació de configuració del precondicionador (per defecte: 3) (Només és vàlid en anàlisis no lineals) |
| Nom de la variable | Atribut | Descripció |
|---|---|---|
| RESID | R | Tolerància de convergència (per defecte: 1.0e-8) |
| SIGMA_DIAG | R | Factor aplicat als elements diagonals en calcular la matriu de precondicionament (per defecte: 1.0) (Si amb el precondicionament ILU es produeix una divisió per zero o divergència, el problema pot convergir especificant un valor superior a 1.0) |
| SIGMA | R | No utilitzat (per defecte: 0.0) |
Quan PRECOND=5 (opcional)¶
Si PRECOND s'estableix en un valor diferent de 5 o 22, s'ignora la 4a línia.
| Nom de la variable | Atribut | Descripció |
|---|---|---|
| ML_CoarseSolver | I | Solucionador de malla gruixuda per a ML (1: utilitzar l'allisador, 2: KLU (mètode directe en sèrie), 3: MUMPS (mètode directe paral·lel)) (per defecte: 1) (Recomanat: 3 o 2 per a problemes difícils, 1 per a problemes ordinaris) |
| ML_Smoother | I | Allisador de ML (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (per defecte: 1) (Recomanat: 1) |
| ML_MGCycle | I | Cicle multigrid de ML (1: V-cycle, 2: W-cycle, 3: Full-V-cycle) (per defecte: 1) (Recomanat: 2 per a problemes difícils, 1 per a problemes ordinaris) |
| ML_MaxLevels | I | Nombre màxim de nivells de ML (per defecte: 10) (Per a problemes especialment difícils, utilitzeu un solucionador directe a la malla gruixuda i 2 nivells (o 3 si no hi ha prou memòria); per a problemes ordinaris, es recomana 10) |
| ML_CoarseningScheme | I | Esquema d'engruiximent de ML (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (per defecte: 1) (Recomanat: 1 o 5) |
| ML_NumSweep | I | Nombre de passades de l'allisador de ML (grau del polinomi en el cas de Chebyshev) (per defecte: 2) (Recomanat: 2 per a Chebyshev, 1 per a SymBlockGaussSeidel) |
Quan PRECOND=22 (opcional)¶
Si PRECOND s'estableix en un valor diferent de 22, s'ignora la 5a línia. Tant la 4a com la 5a línia es poden ometre completament, i també es poden ometre els elements finals de cada línia. Per a qualsevol element especificat com a 0 s'utilitza el valor per defecte.
Els elements de l'1 al 7 de la 4a línia segueixen el mateix ordre que la línia d'opcions de PRECOND=5 (ML), de manera que la línia d'opcions de ML es pot reutilitzar sense canvis. Els elements del 8 al 10 són específics de SA-AMG.
(4a línia) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (no s'utilitza), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (no s'utilitza)
| Nom de la variable | Atribut | Descripció |
|---|---|---|
| SA_CoarseSolver | I | Solucionador de malla gruixuda (0: automàtic, 1: utilitza l'allisador, 2: mètode directe de matriu densa, 3: MUMPS (mètode directe paral·lel)) (per defecte: 0) (En mode automàtic, s'utilitza MUMPS en compilacions amb MUMPS habilitat; altrament s'utilitza el mètode directe de matriu densa) |
| SA_Smoother | I | Allisador (0 o 1: Chebyshev) (per defecte: 0) (Només s'admet Chebyshev. Si s'especifica un altre valor, s'emet un avís i s'utilitza Chebyshev) |
| SA_MGCycle | I | Cicle multigrid (0: per defecte (cicle W), 1: cicle V, 2: cicle W) (per defecte: 0) (No s'admet el cicle V complet) |
| SA_MaxLevels | I | Nombre màxim de nivells (per defecte: 20) |
| (no s'utilitza) | I | Posició corresponent a l'esquema d'engruiximent de ML. Com que SA-AMG sempre utilitza agregació no acoblada, un valor diferent de 0 genera un avís i s'ignora |
| SA_ChebyDegree | I | Grau del polinomi de l'allisador de Chebyshev (per defecte: 2) |
| SA_CoarseSize | I | Mida de tall de la malla gruixuda (per defecte: 50000 quan s'utilitza MUMPS com a solucionador de malla gruixuda; altrament 100) |
| SA_MaxAggSize | I | Mida màxima de l'agregat (per defecte: 96) |
| SA_GalerkinLowMem | I | Mètode de càlcul de la matriu de malla gruixuda (0: normal (prioritza la velocitat), valor positiu: estalvi de memòria) (per defecte: 0) (Especifiqueu un valor positiu si la memòria és insuficient durant la configuració) |
| (no s'utilitza) | I | Reservat per a ampliacions futures |
La 5a línia és específica de SA-AMG i ML no la llegeix.
(5a línia) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Nom de la variable | Atribut | Descripció |
|---|---|---|
| SA_Theta | R | Llindar per determinar connexions fortes (per defecte: 0.0) (Amb 0.0, l'estructura no nul·la de la matriu s'utilitza directament com a graf) |
| SA_ChebyAlpha | R | Relació que determina el límit inferior de l'interval de valors propis al qual s'aplica l'allisador de Chebyshev (per defecte: 20.0) |
| SA_Safety | R | Factor de seguretat aplicat al valor propi màxim estimat (per defecte: 1.1) |
| SA_TaperK | R | Coeficient K de reducció gradual de l'engruiximent (per defecte: 100) (A partir del nivell 2, l'engruiximent es fa més gradual perquè quedin almenys aproximadament K agregats. Un valor negatiu desactiva aquesta reducció gradual) |
| SA_AggOrder | R | Ordre de recorregut de l'agregació (0: per defecte (ordre BFS), 1: ordre BFS, 2: ordre hash dels números de node (experimental), 3: ordre ascendent del grau (experimental), 4: ordre descendent del grau (experimental), valor negatiu: ordre dels números de node) (per defecte: 0) |
| SA_MinAggSize | R | Mida mínima de l'agregat (per defecte: 3) |
| SA_Verify | R | Si s'ha d'executar una autocomprovació durant la configuració (0: no, valor positiu: sí) (per defecte: 0) (principalment per a depuració) |
| SA_DumpVTK | R | Si s'ha d'emetre en format VTK l'agregació del nivell superior (0: sense sortida, valor positiu: sortida) (per defecte: 0) (principalment per a depuració) |
Exemple¶
Utilitzar el mètode CG amb precondicionament SSOR i establir el nombre màxim d'iteracions a 10000 i la tolerància de convergència a 1.0e-8
Utilitzar el mètode GMRES amb precondicionament SSOR i establir la mida del subespai de Krylov a 40 i el nombre objectiu de colors de l'ordenació multicolor a 100
Utilitzar el mètode CG amb precondicionament ILU(0) i establir a 1.1 el factor aplicat als elements diagonals en calcular la matriu de precondicionament
Utilitzar AMG mitjançant ML com a precondicionador del mètode CG
Utilitzar AMG mitjançant ML com a precondicionador del mètode CG i MUMPS com a solucionador de malla gruixuda (per a problemes difícils)
Utilitzar AMG mitjançant ML com a precondicionador del mètode CG i W-cycle com a cicle multigrid (per a problemes difícils)
Utilitzar AMG mitjançant ML com a precondicionador del mètode CG, MUMPS com a solucionador de malla gruixuda i establir el nombre màxim de nivells a 2 (per a problemes molt difícils)
Utilitzeu el SA-AMG integrat a HEC-MW com a precondicionador per a CG
Utilitzeu SA-AMG com a precondicionador per a CG i MUMPS com a solucionador de malla gruixuda
En una anàlisi de contacte amb fricció, utilitzeu BiCGSTAB amb precondicionament SA-AMG i emeteu l'estructura jeràrquica del precondicionador AMG