Ga naar inhoud

!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 **

(2e regel) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
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)
(3e regel) RESID, SIGMA_DIAG, SIGMA
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.

(4e regel) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
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

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

Gebruik GMRES met SSOR-preconditionering en stel de grootte van de Krylov-deelruimte in op 40 en het doelaantal kleuren voor multikleurordening op 100

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

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

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

Gebruik AMG door ML als preconditioner voor CG

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

Gebruik AMG door ML als preconditioner voor CG en gebruik MUMPS als solver voor het grove rooster (voor moeilijke problemen)

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

Gebruik AMG door ML als preconditioner voor CG en gebruik een W-cyclus als multigridcyclus (voor moeilijke problemen)

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

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)

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

Gebruik de in HEC-MW ingebouwde SA-AMG als preconditioner voor CG

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

Gebruik SA-AMG als preconditioner voor CG en MUMPS als solver voor het grove rooster

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

Gebruik voor wrijvingscontactanalyse BiCGSTAB met SA-AMG-preconditionering en geef de hiërarchie van de AMG-preconditioner weer

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