!SOLVER¶
Solverbesturing
Vereiste besturingsgegevens.
Parameters¶
METHOD = Oplossingsmethode (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Directe methode behalve voor contactanalyse (alleen seriële verwerking) (momenteel niet beschikbaar)
DIRECTmkl : Directe methode met Intel MKL
MUMPS : Directe methode met MUMPS
Wanneer een directe methode is geselecteerd, worden de gegevensregels genegeerd.
Iteratieve methoden voor problemen met 3 vrijheidsgraden ondersteunen thread-parallelle uitvoering met OpenMP
PRECOND = Preconditioneringsmethode voor iteratieve solvers (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Blok-)SSOR (alleen met multikleurordening voor problemen met 3 vrijheidsgraden)
3 : (Blok-)diagonale schaling
5 : AMG met het multigrid-preconditioneringspakket ML
10 : Blok-ILU(0)
11 : Blok-ILU(1)
12 : Blok-ILU(2)
22 : AMG met de in HEC-MW ingebouwde SA-AMG (AMG met afgevlakte aggregatie)
10, 11 en 12 zijn alleen beschikbaar voor problemen met 3 vrijheidsgraden
22 is alleen beschikbaar in builds waarin LAPACK is ingeschakeld
Voor OpenMP-threadparallellisme worden SSOR, Diagonal Scaling, ML of SA-AMG aanbevolen
ITERLOG = Of de convergentiegeschiedenis van de iteratieve solver wordt weergegeven (YES/NO)(standaard: NO)
TIMELOG = Of de rekentijd van de solver wordt weergegeven (YES/NO/VERBOSE)(standaard: NO)
LOGLEVEL = Uitvoerniveau voor diagnostische informatie van de preconditioner (geheel getal)(standaard: geen uitvoer)
Wordt onafhankelijk van ITERLOG en TIMELOG opgegeven
Bij 1 of hoger worden de hiërarchieopbouw en andere gegevens voor AMG-preconditioners (PRECOND=5,22) weergegeven
Bij 2 of hoger worden meer gedetailleerde gegevens weergegeven (zoals geheugengebruik)
USEJAD = Of ordening voor vectorprocessoren wordt gebruikt (YES/NO)(standaard: NO)
Alleen geldig wanneer een iteratieve methode wordt gebruikt voor een probleem met 3 vrijheidsgraden
SCALING = Of de matrix wordt geschaald zodat de diagonaalelementen 1 zijn (YES/NO)(standaard: NO)
Alleen geldig wanneer een iteratieve methode wordt gebruikt voor een probleem met 3 vrijheidsgraden
DUMPTYPE = Indeling van de matrixdump (NONE, MM, CSR, BSR) (hoofdzakelijk voor foutopsporing)
NONE : Geen dump uitvoeren (standaard)
MM : Matrix Market-indeling
CSR : Compressed Sparse Row (CSR)-indeling
BSR : Geblokkeerde CSR-indeling
DUMPEXIT = Het programma onmiddellijk beëindigen na het dumpen van de matrix (YES/NO)(standaard: NO)
MPCMETHOD = Methode voor het behandelen van meerpuntsbeperkingen (1, 3)
1: Penaltymethode (standaard bij gebruik van een directe methode)
3: Expliciete eliminatie van vrijheidsgraden (standaard bij gebruik van een iteratieve methode)
De MPC-CG-methode (2) is verwijderd. Als 2 wordt opgegeven, wordt een waarschuwing gegeven en wordt de standaardmethode gebruikt.
ESTCOND = Frequentie van schatting van het conditiegetal (experimenteel)
Schat het conditiegetal bij elk opgegeven iteratie-interval en aan het einde van de iteraties
Er wordt geen schatting uitgevoerd wanneer 0 is opgegeven
RECOMPUTE_RESIDUAL = Frequentie waarmee de residuvector opnieuw wordt berekend
Alleen geldig wanneer voor METHOD CG, BiCGSTAB, GPBiCG of PipeCG is opgegeven
Iteratieve methoden werken de residuvector bij met een recursierelatie, waardoor afrondingsfouten zich ophopen
Na elk opgegeven aantal iteraties wordt de residuvector opnieuw berekend als {b}-[A]{x}
Bij 0 wordt de standaardwaarde van elke methode gebruikt (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Bij een negatieve waarde wordt geen periodieke herberekening uitgevoerd
De herberekening ter bevestiging van convergentie wordt bij het voldoen aan het convergentiecriterium altijd uitgevoerd, ongeacht deze instelling
Een te kort interval voegt niet alleen extra matrix-vectorproducten toe, maar kan ook
de convergentie zelf verslechteren of ertoe leiden dat de oplossing niet meer convergeert
Controleer na wijziging van deze instelling ten opzichte van de standaardwaarde de convergentiegeschiedenis en het uiteindelijke relatieve residu
METHOD2 = Secundaire oplossingsmethode (BiCGSTAB, GMRES, GPBiCG) (experimenteel)
Alleen geldig wanneer CG is opgegeven voor METHOD
Als CG divergeert, wordt automatisch naar de secundaire methode geschakeld en wordt de oplossing voortgezet
Voor de overige parameters en gegevensregels worden dezelfde waarden gebruikt
CONTACT_ELIM = Specificeert of eliminatie van vrijheidsgraden wordt uitgevoerd bij contactanalyse (0,1)
0: Eliminatie van vrijheidsgraden alleen uitvoeren bij gebruik van een iteratieve methode (standaard)
1: Eliminatie van vrijheidsgraden altijd uitvoeren (ook bij gebruik van een directe methode)
** Vanaf de tweede regel **
| Variabele | Attribuut | Beschrijving |
|---|---|---|
| NITER | I | Aantal iteraties (standaard: 100) |
| iterPREmax | I | Aantal iteraties van Additive-Schwarz-preconditionering (standaard: 1) (Aanbevolen waarde: 1; 2 kan effectief zijn bij sommige parallelle berekeningen) |
| NREST | I | Grootte van de Krylov-deelruimte (standaard: 10) (Alleen geldig wanneer GMRES als oplossingsmethode is geselecteerd) |
| NCOLOR_IN | I | Doelaantal kleuren voor multikleurordening (standaard: 10) (Alleen geldig wanneer het aantal OpenMP-threads 2 of meer is) |
| RECYCLEPRE | I | Aantal keren dat instellingsinformatie van de preconditioner wordt hergebruikt (standaard: 3) (Alleen geldig bij niet-lineaire analyse) |
| Variabele | Attribuut | Beschrijving |
|---|---|---|
| RESID | R | Convergentietolerantie (standaard: 1.0e-8) |
| SIGMA_DIAG | R | Schaalfactor die op diagonaalelementen wordt toegepast bij het berekenen van de preconditioneringsmatrix (standaard: 1.0) (Als bij ILU-preconditionering deling door nul of divergentie optreedt, kan het probleem convergeren wanneer een waarde groter dan 1.0 wordt opgegeven) |
| SIGMA | R | Niet gebruikt (standaard: 0.0) |
Wanneer PRECOND=5 (optioneel)¶
Als voor PRECOND een andere waarde dan 5 of 22 wordt opgegeven, wordt de 4e regel genegeerd.
| Variabele | Attribuut | Beschrijving |
|---|---|---|
| ML_CoarseSolver | I | Solver voor het grove ML-rooster (1: smoother gebruiken, 2: KLU (seriële directe methode), 3: MUMPS (parallelle directe methode)) (standaard: 1) (Aanbevolen: 3 of 2 voor moeilijke problemen, 1 voor gewone problemen) |
| ML_Smoother | I | ML-smoother (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (standaard: 1) (Aanbevolen: 1) |
| ML_MGCycle | I | ML-multigridcyclus (1: V-cyclus, 2: W-cyclus, 3: volledige V-cyclus) (standaard: 1) (Aanbevolen: 2 voor moeilijke problemen, 1 voor gewone problemen) |
| ML_MaxLevels | I | Maximumaantal ML-niveaus (standaard: 10) (Gebruik voor bijzonder moeilijke problemen een directe solver op het grove rooster en 2 niveaus (of 3 als het geheugen onvoldoende is); voor gewone problemen wordt 10 aanbevolen) |
| ML_CoarseningScheme | I | ML-schema voor roostervergroving (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (standaard: 1) (Aanbevolen: 1 of 5) |
| ML_NumSweep | I | Aantal ML-smoothingstappen (polynoomgraad voor Chebyshev) (standaard: 2) (Aanbevolen: 2 voor Chebyshev, 1 voor SymBlockGaussSeidel) |
Wanneer PRECOND=22 (optioneel)¶
Als voor PRECOND een andere waarde dan 22 wordt opgegeven, wordt de 5e regel genegeerd. De 4e en 5e regel kunnen elk volledig worden weggelaten; ook de achterste items van beide regels kunnen worden weggelaten. Voor elk item dat als 0 is opgegeven, wordt de standaardwaarde gebruikt.
Items 1 tot en met 7 op de 4e regel staan in dezelfde volgorde als op de optieregel voor PRECOND=5 (ML), zodat de ML-optieregel ongewijzigd kan worden hergebruikt. Items 8 tot en met 10 zijn specifiek voor SA-AMG.
(4e regel) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (ongebruikt), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (ongebruikt)
| Variabele | Attribuut | Beschrijving |
|---|---|---|
| SA_CoarseSolver | I | Solver voor het grove rooster (0: automatisch, 1: smoother gebruiken, 2: directe methode voor dichte matrices, 3: MUMPS (parallelle directe methode)) (standaard: 0) (In de automatische modus wordt MUMPS gebruikt in builds waarin MUMPS is ingeschakeld; anders wordt de directe methode voor dichte matrices gebruikt) |
| SA_Smoother | I | Smoother (0 of 1: Chebyshev) (standaard: 0) (Alleen Chebyshev wordt ondersteund. Als een andere waarde wordt opgegeven, wordt een waarschuwing gegeven en wordt Chebyshev gebruikt) |
| SA_MGCycle | I | Multigridcyclus (0: standaard (W-cyclus), 1: V-cyclus, 2: W-cyclus) (standaard: 0) (De volledige V-cyclus wordt niet ondersteund) |
| SA_MaxLevels | I | Maximumaantal niveaus (standaard: 20) |
| (ongebruikt) | I | Positie die overeenkomt met het ML-schema voor roostervergroving. Omdat SA-AMG altijd ongekoppelde aggregatie gebruikt, leidt een niet-nulwaarde tot een waarschuwing en wordt de waarde genegeerd |
| SA_ChebyDegree | I | Polynoomgraad van de Chebyshev-smoother (standaard: 2) |
| SA_CoarseSize | I | Afkapgrootte van het grove rooster (standaard: 50000 wanneer MUMPS als solver voor het grove rooster wordt gebruikt; anders 100) |
| SA_MaxAggSize | I | Maximale aggregaatgrootte (standaard: 96) |
| SA_GalerkinLowMem | I | Berekeningsmethode voor de matrix van het grove rooster (0: normaal (snelheid heeft prioriteit), positieve waarde: geheugenbesparend) (standaard: 0) (Geef een positieve waarde op als tijdens de opbouw onvoldoende geheugen beschikbaar is) |
| (ongebruikt) | I | Gereserveerd voor toekomstige uitbreidingen |
De 5e regel is specifiek voor SA-AMG en wordt niet door ML gelezen.
(5e regel) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variabele | Attribuut | Beschrijving |
|---|---|---|
| SA_Theta | R | Drempelwaarde voor het bepalen van sterke verbindingen (standaard: 0.0) (Bij 0.0 wordt de niet-nulstructuur van de matrix rechtstreeks als graaf gebruikt) |
| SA_ChebyAlpha | R | Verhouding die de ondergrens bepaalt van het eigenwaarde-interval waarop de Chebyshev-smoother werkt (standaard: 20.0) |
| SA_Safety | R | Veiligheidsfactor die op de geschatte maximale eigenwaarde wordt toegepast (standaard: 1.1) |
| SA_TaperK | R | Tapercoëfficiënt K voor roostervergroving (standaard: 100) (Vanaf niveau 2 wordt de vergroving geleidelijker uitgevoerd zodat ten minste ongeveer K aggregaten overblijven. Een negatieve waarde schakelt tapering uit) |
| SA_AggOrder | R | Doorloopvolgorde voor aggregatie (0: standaard (BFS-volgorde), 1: BFS-volgorde, 2: hashvolgorde van knooppuntnummers (experimenteel), 3: oplopende volgorde van graad (experimenteel), 4: aflopende volgorde van graad (experimenteel), negatieve waarde: volgorde van knooppuntnummers) (standaard: 0) |
| SA_MinAggSize | R | Minimale aggregaatgrootte (standaard: 3) |
| SA_Verify | R | Of tijdens de opbouw een zelfcontrole wordt uitgevoerd (0: nee, positieve waarde: ja) (standaard: 0) (voornamelijk voor foutopsporing) |
| SA_DumpVTK | R | Of de aggregatie op het hoogste niveau in VTK-formaat wordt weggeschreven (0: geen uitvoer, positieve waarde: uitvoer) (standaard: 0) (voornamelijk voor foutopsporing) |
Voorbeelden¶
Gebruik CG met SSOR-preconditionering en stel het maximale aantal iteraties in op 10000 en de convergentietolerantie op 1.0e-8
Gebruik GMRES met SSOR-preconditionering en stel de grootte van de Krylov-deelruimte in op 40 en het doelaantal kleuren voor multikleurordening op 100
Gebruik CG met ILU(0)-preconditionering en stel de schaalfactor die op diagonaalelementen wordt toegepast bij het berekenen van de preconditioneringsmatrix in op 1.1
Gebruik AMG door ML als preconditioner voor CG
Gebruik AMG door ML als preconditioner voor CG en gebruik MUMPS als solver voor het grove rooster (voor moeilijke problemen)
Gebruik AMG door ML als preconditioner voor CG en gebruik een W-cyclus als multigridcyclus (voor moeilijke problemen)
Gebruik AMG door ML als preconditioner voor CG, gebruik MUMPS als solver voor het grove rooster en stel het maximale aantal niveaus in op 2 (voor zeer moeilijke problemen)
Gebruik de in HEC-MW ingebouwde SA-AMG als preconditioner voor CG
Gebruik SA-AMG als preconditioner voor CG en MUMPS als solver voor het grove rooster
Gebruik voor wrijvingscontactanalyse BiCGSTAB met SA-AMG-preconditionering en geef de hiërarchie van de AMG-preconditioner weer