!SOLVER¶
Styrning av lösaren
Obligatoriska styrdata.
Parametrar¶
METHOD = Lösningsmetod (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Direktmetod utom för kontaktanalys (endast seriell bearbetning) (för närvarande inte tillgänglig)
DIRECTmkl : Direktmetod med Intel MKL
MUMPS : Direktmetod med MUMPS
När en direktmetod väljs ignoreras dataraderna.
Iterativa metoder för problem med 3 frihetsgrader stöder trådparallell exekvering med OpenMP
PRECOND = Förkonditioneringsmetod för iterativa lösare (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Block) SSOR (med flerfärgsordning endast för problem med 3 frihetsgrader)
3 : (Block) diagonal skalning
5 : AMG med multigrid-förkonditioneringspaketet ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG med HEC-MW:s inbyggda SA-AMG (AMG med utjämnad aggregering)
10, 11 och 12 är endast tillgängliga för problem med 3 frihetsgrader
22 är endast tillgängligt i byggen där LAPACK är aktiverat
För OpenMP-trådparallellism rekommenderas SSOR, diagonal skalning, ML eller SA-AMG
ITERLOG = Om konvergenshistorik för den iterativa lösaren ska matas ut (YES/NO)(standardvärde: NO)
TIMELOG = Om lösarens beräkningstid ska matas ut (YES/NO/VERBOSE)(standardvärde: NO)
LOGLEVEL = Utdatanivå för diagnostisk information om förkonditioneraren (heltal)(standard: ingen utdata)
Anges oberoende av ITERLOG och TIMELOG
Vid 1 eller högre skrivs hierarkiuppbyggnad och annan information för AMG-förkonditionerare (PRECOND=5,22) ut
Vid 2 eller högre skrivs mer detaljerad information ut (till exempel minnesanvändning)
USEJAD = Om ordning för vektorprocessorer ska användas (YES/NO)(standardvärde: NO)
Giltigt endast när en iterativ metod används för ett problem med 3 frihetsgrader
SCALING = Om matrisen ska skalas så att diagonalposterna är 1 (YES/NO)(standardvärde: NO)
Giltigt endast när en iterativ metod används för ett problem med 3 frihetsgrader
DUMPTYPE = Format för matrisdump (NONE, MM, CSR, BSR) (främst för felsökning)
NONE : Ingen dump (standardvärde)
MM : Matrix Market-format
CSR : Compressed Sparse Row-format (CSR)
BSR : Blockerat CSR-format
DUMPEXIT = Avsluta programmet omedelbart efter matrisdumpning (YES/NO)(standardvärde: NO)
MPCMETHOD = Metod för hantering av multipunktbegränsningar (1, 3)
1: Straffmetod (standardvärde när en direktmetod används)
3: Explicit eliminering av frihetsgrader (standardvärde när en iterativ metod används)
MPC-CG-metoden (2) har tagits bort. Om 2 anges ges en varning och standardmetoden används.
ESTCOND = Frekvens för uppskattning av konditionstal (experimentell)
Uppskatta konditionstalet vid varje angivet iterationsintervall och i slutet av iterationerna
Ingen uppskattning utförs när 0 anges
RECOMPUTE_RESIDUAL = Frekvens för omberäkning av residualvektorn
Giltigt endast när CG, BiCGSTAB, GPBiCG eller PipeCG anges för METHOD
Iterativa metoder uppdaterar residualvektorn med en rekursionsformel, vilket gör att avrundningsfel ackumuleras
Vid varje angivet iterationsintervall beräknas residualvektorn om från {b}-[A]{x}
När 0 anges används standardvärdet för respektive metod (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Om ett negativt värde anges utförs ingen periodisk omberäkning
Omberäkning för att bekräfta uppfylld konvergens utförs alltid oberoende av denna inställning
Ett alltför kort intervall ökar inte bara antalet matris-vektorprodukter utan kan också
försämra själva konvergensen eller göra att lösningen inte konvergerar
Om standardvärdet ändras, kontrollera konvergenshistoriken och den slutliga relativa residualen
METHOD2 = Sekundär lösningsmetod (BiCGSTAB, GMRES, GPBiCG) (experimentell)
Giltigt endast när CG anges för METHOD
Om CG divergerar växlas automatiskt till den sekundära metoden och lösningen fortsätter
Samma värden används för övriga parametrar och datarader
CONTACT_ELIM = Anger om eliminering av frihetsgrader utförs i kontaktanalys (0,1)
0: Utför eliminering av frihetsgrader endast när en iterativ metod används (standardvärde)
1: Utför alltid eliminering av frihetsgrader (även när en direktmetod används)
** Rad 2 och senare **
| Variabelnamn | Typ | Beskrivning |
|---|---|---|
| NITER | I | Antal iterationer (standardvärde: 100) |
| iterPREmax | I | Antal iterationer för Additive Schwarz-förkonditionering (standardvärde: 1) (Rekommenderat värde: 1; 2 kan vara effektivt i vissa parallellberäkningar) |
| NREST | I | Krylov-delrummets storlek (standardvärde: 10) (Giltigt endast när GMRES väljs som lösningsmetod) |
| NCOLOR_IN | I | Målvärde för antal färger vid flerfärgsordning (standardvärde: 10) (Giltigt endast när antalet OpenMP-trådar är 2 eller fler) |
| RECYCLEPRE | I | Antal gånger som information från uppsättningen av förkonditioneraren återanvänds (standardvärde: 3) (Giltigt endast i icke-linjär analys) |
| Variabelnamn | Typ | Beskrivning |
|---|---|---|
| RESID | R | Konvergenstolerans (standardvärde: 1.0e-8) |
| SIGMA_DIAG | R | Skalfaktor som tillämpas på diagonalposterna vid beräkning av förkonditioneringsmatrisen (standardvärde: 1.0) (Om division med noll eller divergens uppstår med ILU-förkonditionering kan problemet konvergera när ett värde större än 1.0 anges) |
| SIGMA | R | Används inte (standardvärde: 0.0) |
När PRECOND=5 (valfritt)¶
Om ett annat värde än 5 eller 22 anges för PRECOND ignoreras rad 4.
| Variabelnamn | Typ | Beskrivning |
|---|---|---|
| ML_CoarseSolver | I | Grovnätslösare för ML (1: använd utjämnare, 2: KLU (seriell direktmetod), 3: MUMPS (parallell direktmetod)) (standardvärde: 1) (Rekommenderas: 3 eller 2 för svåra problem, 1 för vanliga problem) |
| ML_Smoother | I | ML-utjämnare (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (standardvärde: 1) (Rekommenderas: 1) |
| ML_MGCycle | I | ML-multigridcykel (1: V-cykel, 2: W-cykel, 3: Full-V-cykel) (standardvärde: 1) (Rekommenderas: 2 för svåra problem, 1 för vanliga problem) |
| ML_MaxLevels | I | Maximalt antal ML-nivåer (standardvärde: 10) (För särskilt svåra problem, använd en direkt grovnätslösare och 2 nivåer (eller 3 om minnet inte räcker); för vanliga problem rekommenderas 10) |
| ML_CoarseningScheme | I | ML-metod för förgrovning (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (standardvärde: 1) (Rekommenderas: 1 eller 5) |
| ML_NumSweep | I | Antal ML-utjämnarsvep (polynomgrad för Chebyshev) (standardvärde: 2) (Rekommenderas: 2 för Chebyshev, 1 för SymBlockGaussSeidel) |
När PRECOND=22 (valfritt)¶
Om ett annat värde än 22 anges för PRECOND ignoreras rad 5. Både rad 4 och rad 5 kan utelämnas helt, och avslutande poster på respektive rad kan också utelämnas. Standardvärdet används för varje post som anges som 0.
Posterna 1 till 7 på rad 4 ligger i samma ordning som på alternativraden för PRECOND=5 (ML), så ML-alternativraden kan återanvändas oförändrad. Posterna 8 till 10 är specifika för SA-AMG.
(Rad 4) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (används inte), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (används inte)
| Variabelnamn | Typ | Beskrivning |
|---|---|---|
| SA_CoarseSolver | I | Grovnätslösare (0: automatisk, 1: använd utjämnare, 2: direktmetod för tät matris, 3: MUMPS (parallell direktmetod)) (standardvärde: 0) (I automatiskt läge används MUMPS i byggen där MUMPS är aktiverat; annars används direktmetoden för tät matris) |
| SA_Smoother | I | Utjämnare (0 eller 1: Chebyshev) (standardvärde: 0) (Endast Chebyshev stöds. Om ett annat värde anges skrivs en varning ut och Chebyshev används) |
| SA_MGCycle | I | Multigridcykel (0: standard (W-cykel), 1: V-cykel, 2: W-cykel) (standardvärde: 0) (Full-V-cykel stöds inte) |
| SA_MaxLevels | I | Maximalt antal nivåer (standardvärde: 20) |
| (används inte) | I | Positionen som motsvarar ML-metoden för förgrovning. Eftersom SA-AMG alltid använder okopplad aggregering ger ett värde som inte är noll en varning och ignoreras |
| SA_ChebyDegree | I | Polynomgrad för Chebyshev-utjämnaren (standardvärde: 2) |
| SA_CoarseSize | I | Avskärningsstorlek för grovnätet (standardvärde: 50000 när MUMPS används som grovnätslösare; annars 100) |
| SA_MaxAggSize | I | Maximal aggregatstorlek (standardvärde: 96) |
| SA_GalerkinLowMem | I | Beräkningsmetod för grovnätsmatrisen (0: normal (prioriterar hastighet), positivt värde: minnessparande) (standardvärde: 0) (Ange ett positivt värde om minnet inte räcker under uppbyggnaden) |
| (används inte) | I | Reserverad för framtida utökningar |
Rad 5 är specifik för SA-AMG och läses inte av ML.
(Rad 5) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variabelnamn | Typ | Beskrivning |
|---|---|---|
| SA_Theta | R | Tröskelvärde för att bestämma starka kopplingar (standardvärde: 0.0) (Vid 0.0 används matrisens nollskilda struktur direkt som graf) |
| SA_ChebyAlpha | R | Förhållande som bestämmer den nedre gränsen för egenvärdesintervallet som Chebyshev-utjämnaren arbetar mot (standardvärde: 20.0) |
| SA_Safety | R | Säkerhetsfaktor som tillämpas på det uppskattade största egenvärdet (standardvärde: 1.1) |
| SA_TaperK | R | Taperkoefficient K för förgrovning (standardvärde: 100) (Från nivå 2 görs förgrovningen mer gradvis så att minst ungefär K aggregat återstår. Ett negativt värde inaktiverar taperingen) |
| SA_AggOrder | R | Genomgångsordning för aggregering (0: standard (BFS-ordning), 1: BFS-ordning, 2: hashordning för nodnummer (experimentell), 3: stigande gradordning (experimentell), 4: fallande gradordning (experimentell), negativt värde: nodnummerordning) (standardvärde: 0) |
| SA_MinAggSize | R | Minsta aggregatstorlek (standardvärde: 3) |
| SA_Verify | R | Om en självkontroll ska köras under uppbyggnaden (0: nej, positivt värde: ja) (standardvärde: 0) (främst för felsökning) |
| SA_DumpVTK | R | Om aggregeringen på den högsta nivån ska skrivas ut i VTK-format (0: ingen utdata, positivt värde: utdata) (standardvärde: 0) (främst för felsökning) |
Exempel¶
Använd CG med SSOR-förkonditionering och ställ in maximalt antal iterationer till 10000 och konvergenstoleransen till 1.0e-8
Använd GMRES med SSOR-förkonditionering och ställ in storleken på Krylov-delrummet till 40 och målantalet färger för flerfärgsordning till 100
Använd CG med ILU(0)-förkonditionering och ställ in skalfaktorn som tillämpas på diagonalposterna vid beräkning av förkonditioneringsmatrisen till 1.1
Använd AMG via ML som förkonditionerare för CG
Använd AMG via ML som förkonditionerare för CG och MUMPS som grovnätslösare (för svåra problem)
Använd AMG via ML som förkonditionerare för CG och W-cykel som multigridcykel (för svåra problem)
Använd AMG via ML som förkonditionerare för CG, använd MUMPS som grovnätslösare och ställ in maximalt antal nivåer till 2 (för mycket svåra problem)
Använd HEC-MW:s inbyggda SA-AMG som förkonditionerare för CG
Använd SA-AMG som förkonditionerare för CG och MUMPS som grovnätslösare
Använd BiCGSTAB med SA-AMG-förkonditionering för friktionskontaktanalys och skriv ut AMG-förkonditionerarens hierarki