!SOLVER¶
Løserstyring
Påkrævede styringsdata.
Parametre¶
METHOD = Løsningsmetode (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Direkte metode undtagen ved kontaktanalyse (kun seriel behandling) (ikke tilgængelig i øjeblikket)
DIRECTmkl : Direkte metode med Intel MKL
MUMPS : Direkte metode med MUMPS
Når en direkte metode vælges, ignoreres datalinjerne.
Iterative metoder til problemer med 3 frihedsgrader understøtter trådparallel udførelse med OpenMP
PRECOND = Prækonditioneringsmetode for iterative løsere (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Blok-)SSOR (med flerfarveordning kun for problemer med 3 frihedsgrader)
3 : (Blok-)diagonalskalering
5 : AMG med multigrid-prækonditioneringspakken ML
10 : Blok-ILU(0)
11 : Blok-ILU(1)
12 : Blok-ILU(2)
22 : AMG med HEC-MW's indbyggede SA-AMG (Smoothed Aggregation AMG)
10, 11 og 12 er kun tilgængelige for problemer med 3 frihedsgrader
22 er kun tilgængelig i builds, hvor LAPACK er aktiveret
Ved OpenMP-trådparallel udførelse anbefales SSOR, diagonalskalering, ML eller SA-AMG
ITERLOG = Om konvergenshistorikken for den iterative løser skal udskrives (YES/NO)(standard: NO)
TIMELOG = Om løserens beregningstid skal udskrives (YES/NO/VERBOSE)(standard: NO)
LOGLEVEL = Niveau for udskrift af diagnostiske oplysninger om prækonditioneringen (heltal)(standard: ingen udskrift)
Angives uafhængigt af ITERLOG og TIMELOG
Ved 1 eller højere udskrives hierarkiopbygningen m.m. for AMG-prækonditionering (PRECOND=5, 22)
Ved 2 eller højere udskrives yderligere detaljer (f.eks. hukommelsesforbrug)
USEJAD = Om ordning til vektorprocessorer skal bruges (YES/NO)(standard: NO)
Kun gyldig, når en iterativ metode bruges til et problem med 3 frihedsgrader
SCALING = Om matricen skal skaleres, så diagonalelementerne er 1 (YES/NO)(standard: NO)
Kun gyldig, når en iterativ metode bruges til et problem med 3 frihedsgrader
DUMPTYPE = Format for matrixdump (NONE, MM, CSR, BSR) (hovedsageligt til fejlfinding)
NONE : Intet dump (standard)
MM : Matrix Market-format
CSR : Compressed Sparse Row-format (CSR)
BSR : Blokeret CSR-format
DUMPEXIT = Afslut programmet straks efter matrixdump (YES/NO)(standard: NO)
MPCMETHOD = Metode til håndtering af multipunktbegrænsninger (1, 3)
1: Penalty-metode (standard ved brug af en direkte metode)
3: Eksplicit eliminering af frihedsgrader (standard ved brug af en iterativ metode)
MPC-CG-metoden (2) er fjernet. Hvis 2 angives, udsendes en advarsel, og standardmetoden anvendes.
ESTCOND = Hyppighed for estimering af konditionstal (eksperimentel)
Estimér konditionstallet ved hvert angivet iterationsinterval og ved afslutningen af iterationerne
Der udføres ingen estimering, når 0 er angivet
RECOMPUTE_RESIDUAL = Hyppighed for genberegning af residualvektoren
Kun gyldig når CG, BiCGSTAB, GPBiCG eller PipeCG er angivet for METHOD
Iterative metoder opdaterer residualvektoren med en rekursionsformel, så afrundingsfejl ophobes
Ved hvert angivet iterationsinterval genberegnes residualvektoren ud fra {b}-[A]{x}
Når 0 angives, bruges standardværdien for den enkelte metode (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Når en negativ værdi angives, udføres der ingen periodisk genberegning
Genberegning til bekræftelse af konvergens udføres altid uanset denne indstilling
Et for kort interval øger ikke kun antallet af matrix-vektor-produkter, men kan også
forringe selve konvergensen eller medføre, at løsningen ikke konvergerer
Hvis standardværdien ændres, skal konvergenshistorikken og det endelige relative residual kontrolleres
METHOD2 = Løsningsmetode 2 (BiCGSTAB, GMRES, GPBiCG) (eksperimentel)
Kun gyldig, når CG er angivet for METHOD
Hvis CG divergerer, skiftes der automatisk til den sekundære metode, og løsningen fortsættes
De samme værdier bruges for de øvrige parametre og datalinjer
CONTACT_ELIM = Angiver, om eliminering af frihedsgrader udføres i kontaktanalyse (0,1)
0: Udfør kun eliminering af frihedsgrader ved brug af en iterativ metode (standard)
1: Udfør altid eliminering af frihedsgrader (også ved brug af en direkte metode)
** 2. linje og efterfølgende **
| Variabel | Attribut | Beskrivelse |
|---|---|---|
| NITER | I | Antal iterationer (standard: 100) |
| iterPREmax | I | Antal iterationer for additiv Schwarz-prækonditionering (standard: 1) (Anbefalet værdi: 1; 2 kan være effektivt i nogle parallelle beregninger) |
| NREST | I | Antal Krylov-underrum (standard: 10) (Kun gyldig, når GMRES er valgt som løsningsmetode) |
| NCOLOR_IN | I | Måltal for antal farver ved flerfarveordning (standard: 10) (Kun gyldig, når antallet af OpenMP-tråde er 2 eller derover) |
| RECYCLEPRE | I | Antal gange opsætningsinformation for prækonditioneringen genbruges (standard: 3) (Kun gyldig ved ikke-lineær analyse) |
| Variabel | Attribut | Beskrivelse |
|---|---|---|
| RESID | R | Konvergenstolerance (standard: 1.0e-8) |
| SIGMA_DIAG | R | Skaleringsfaktor, der anvendes på diagonalelementer ved beregning af prækonditioneringsmatricen (standard: 1.0) (Hvis division med nul eller divergens forekommer ved ILU-prækonditionering, kan problemet konvergere, når en værdi større end 1.0 angives) |
| SIGMA | R | Bruges ikke (standard: 0.0) |
Når PRECOND=5 (valgfri)¶
Hvis PRECOND sættes til en anden værdi end 5 eller 22, ignoreres 4. linje.
| Variabel | Attribut | Beskrivelse |
|---|---|---|
| ML_CoarseSolver | I | Grovgitterløser for ML (1: brug smoother, 2: KLU (seriel direkte metode), 3: MUMPS (parallel direkte metode)) (standard: 1) (Anbefalet: 3 eller 2 til vanskelige problemer, 1 til almindelige problemer) |
| ML_Smoother | I | ML-smoother (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (standard: 1) (Anbefalet: 1) |
| ML_MGCycle | I | ML-multigridcyklus (1: V-cyklus, 2: W-cyklus, 3: Full-V-cyklus) (standard: 1) (Anbefalet: 2 til vanskelige problemer, 1 til almindelige problemer) |
| ML_MaxLevels | I | Maksimalt antal ML-niveauer (standard: 10) (Til særligt vanskelige problemer bruges en direkte grovgitterløser og 2 niveauer (eller 3, hvis hukommelsen er utilstrækkelig); til almindelige problemer anbefales 10) |
| ML_CoarseningScheme | I | ML-grovinddelingsskema (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (standard: 1) (Anbefalet: 1 eller 5) |
| ML_NumSweep | I | Antal ML-smoother-gennemløb (polynomiets grad for Chebyshev) (standard: 2) (Anbefalet: 2 for Chebyshev, 1 for SymBlockGaussSeidel) |
Når PRECOND=22 (valgfri)¶
Hvis PRECOND sættes til en anden værdi end 22, ignoreres 5. linje. Både 4. og 5. linje kan udelades helt, og efterfølgende elementer på hver linje kan også udelades. Standardværdien anvendes for ethvert element, der angives som 0.
Element 1 til 7 på 4. linje har samme rækkefølge som optionslinjen for PRECOND=5 (ML), så ML-optionslinjen kan genbruges uændret. Element 8 til 10 er specifikke for SA-AMG.
(4. linje) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (ikke anvendt), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (ikke anvendt)
| Variabel | Attribut | Beskrivelse |
|---|---|---|
| SA_CoarseSolver | I | Grovgitterløser (0: automatisk, 1: brug smootheren, 2: tæt direkte metode, 3: MUMPS (parallel direkte metode)) (standard: 0) (I automatisk tilstand anvendes MUMPS i builds med MUMPS aktiveret; ellers anvendes den tætte direkte metode) |
| SA_Smoother | I | Smoother (0 eller 1: Chebyshev) (standard: 0) (Kun Chebyshev understøttes. Hvis en anden værdi angives, udskrives en advarsel, og Chebyshev anvendes) |
| SA_MGCycle | I | Multigridcyklus (0: standard (W-cyklus), 1: V-cyklus, 2: W-cyklus) (standard: 0) (Full-V-cyklus understøttes ikke) |
| SA_MaxLevels | I | Maksimalt antal niveauer (standard: 20) |
| (ikke anvendt) | I | Placeringen svarer til ML's grovinddelingsskema. Da SA-AMG altid bruger uncoupled aggregering, medfører en værdi forskellig fra 0 en advarsel og ignoreres |
| SA_ChebyDegree | I | Polynomiets grad for Chebyshev-smootheren (standard: 2) |
| SA_CoarseSize | I | Afskæringsstørrelse for grovgitteret (standard: 50000, når MUMPS bruges som grovgitterløser; ellers 100) |
| SA_MaxAggSize | I | Maksimal aggregatstørrelse (standard: 96) |
| SA_GalerkinLowMem | I | Beregningsmetode for grovgittermatricen (0: normal (hastighed prioriteres), positiv værdi: hukommelsesbesparende) (standard: 0) (Angiv en positiv værdi, hvis hukommelsen er utilstrækkelig under opsætningen) |
| (ikke anvendt) | I | Reserveret til fremtidige udvidelser |
Den 5. linje er specifik for SA-AMG og læses ikke af ML.
(5. linje) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variabel | Attribut | Beskrivelse |
|---|---|---|
| SA_Theta | R | Tærskel for bestemmelse af stærke forbindelser (standard: 0.0) (Ved 0.0 bruges matricens ikke-nul-struktur direkte som graf) |
| SA_ChebyAlpha | R | Forhold, der bestemmer den nedre grænse for egenværdiintervallet, som Chebyshev-smootheren behandler (standard: 20.0) |
| SA_Safety | R | Sikkerhedsfaktor, der anvendes på den estimerede største egenværdi (standard: 1.1) |
| SA_TaperK | R | Taperingskoefficient K for grovinddeling (standard: 100) (Fra niveau 2 gøres grovinddelingen mere gradvis, så mindst omtrent K aggregater bevares. En negativ værdi deaktiverer tapering) |
| SA_AggOrder | R | Gennemløbsrækkefølge for aggregering (0: standard (BFS-rækkefølge), 1: BFS-rækkefølge, 2: hash-rækkefølge efter knudenummer (eksperimentel), 3: stigende grad (eksperimentel), 4: faldende grad (eksperimentel), negativ værdi: knudenummerrækkefølge) (standard: 0) |
| SA_MinAggSize | R | Minimal aggregatstørrelse (standard: 3) |
| SA_Verify | R | Om der skal udføres selvkontrol under opsætningen (0: nej, positiv værdi: ja) (standard: 0) (hovedsageligt til fejlfinding) |
| SA_DumpVTK | R | Om aggregeringen på det øverste niveau skal udskrives i VTK-format (0: ingen udskrift, positiv værdi: udskriv) (standard: 0) (hovedsageligt til fejlfinding) |
Eksempler¶
Brug CG med SSOR-prækonditionering, og sæt det maksimale antal iterationer til 10000 og konvergenstolerancen til 1.0e-8
Brug GMRES med SSOR-prækonditionering, og sæt antallet af Krylov-underrum til 40 og måltallet for antal farver ved flerfarveordning til 100
Brug CG med ILU(0)-prækonditionering, og sæt skaleringsfaktoren, der anvendes på diagonalelementerne ved beregning af prækonditioneringsmatricen, til 1.1
Brug AMG via ML som prækonditionering for CG
Brug AMG via ML som prækonditionering for CG og MUMPS som grovgitterløser (til vanskelige problemer)
Brug AMG via ML som prækonditionering for CG og W-cyklus som multigridcyklus (til vanskelige problemer)
Brug AMG via ML som prækonditionering for CG, MUMPS som grovgitterløser, og sæt det maksimale antal niveauer til 2 (til meget vanskelige problemer)
Brug HEC-MW's indbyggede SA-AMG som prækonditionering for CG
Brug SA-AMG som prækonditionering for CG og MUMPS som grovgitterløser
Ved friktionskontaktanalyse bruges BiCGSTAB med SA-AMG-prækonditionering, og hierarkiopbygningen for AMG-prækonditioneringen udskrives