!SOLVER¶
Sprendiklio valdymas
Privalomi valdymo duomenys.
Parametrai¶
METHOD = sprendimo metodas (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
DIRECT : tiesioginis metodas, išskyrus kontaktinę analizę (tik nuoseklus vykdymas) (šiuo metu negalimas)
DIRECTmkl : tiesioginis metodas naudojant Intel MKL
MUMPS : tiesioginis metodas naudojant MUMPS
Pasirinkus tiesioginį metodą, duomenų eilutės ignoruojamos.
3 laisvės laipsnių uždavinių iteraciniuose metoduose galima naudoti gijų lygiagretinimą su OpenMP
PRECOND = iteracinių sprendiklių išankstinio sąlygojimo metodas (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (Block) SSOR (su daugiaspalviu rikiavimu tik 3 laisvės laipsnių uždaviniams)
3 : (Block) Diagonal Scaling
5 : AMG naudojant daugiatinklio išankstinio sąlygojimo paketą ML
10 : Block ILU(0)
11 : Block ILU(1)
12 : Block ILU(2)
22 : AMG su HEC-MW integruotu SA-AMG (Smoothed Aggregation AMG)
10, 11 ir 12 galima naudoti tik 3 laisvės laipsnių uždaviniams
22 galima naudoti tik rinkiniuose, kuriuose įjungtas LAPACK
Vykdant gijų lygiagretinimą su OpenMP rekomenduojami SSOR, diagonalinis mastelio keitimas, ML arba SA-AMG
ITERLOG = ar išvesti iteracinio sprendiklio konvergavimo istoriją (YES/NO)(numatytoji reikšmė: NO)
TIMELOG = ar išvesti sprendiklio skaičiavimo laiką (YES/NO/VERBOSE)(numatytoji reikšmė: NO)
LOGLEVEL = Išankstinio sąlygojimo diagnostinės informacijos išvesties lygis (sveikasis skaičius)(numatytoji reikšmė: be išvesties)
Nurodomas nepriklausomai nuo ITERLOG ir TIMELOG
Kai reikšmė yra 1 arba didesnė, be kita ko, išvedama AMG išankstinio sąlygojimo hierarchijos sandara (PRECOND=5, 22)
Kai reikšmė yra 2 arba didesnė, išvedama papildoma išsami informacija (pavyzdžiui, atminties naudojimas)
USEJAD = ar naudoti rikiavimą vektoriniams procesoriams (YES/NO)(numatytoji reikšmė: NO)
Galioja tik tada, kai 3 laisvės laipsnių uždaviniui naudojamas iteracinis metodas
SCALING = ar masteliuoti matricą taip, kad įstrižainės elementai būtų 1 (YES/NO)(numatytoji reikšmė: NO)
Galioja tik tada, kai 3 laisvės laipsnių uždaviniui naudojamas iteracinis metodas
DUMPTYPE = matricos išklotinės formatas (NONE, MM, CSR, BSR) (daugiausia derinimui)
NONE : išklotinės nekurti (numatytoji reikšmė)
MM : Matrix Market formatas
CSR : Compressed Sparse Row (CSR) formatas
BSR : Blocked CSR formatas
DUMPEXIT = baigti programą iš karto po matricos išklotinės sukūrimo (YES/NO)(numatytoji reikšmė: NO)
MPCMETHOD = daugiataškių suvaržymų apdorojimo metodas (1, 3)
1: baudos metodas (numatytasis naudojant tiesioginį metodą)
3: išreikštinis laisvės laipsnių eliminavimas (numatytasis naudojant iteracinį metodą)
MPC-CG metodas (2) pašalintas. Nurodžius 2, pateikiamas įspėjimas ir naudojamas numatytasis metodas.
ESTCOND = sąlygotumo skaičiaus įverčio dažnis (eksperimentinis)
Sąlygotumo skaičius įvertinamas kas nurodytą iteracijų intervalą ir iteracijų pabaigoje
Nurodžius 0, vertinimas neatliekamas
RECOMPUTE_RESIDUAL = Liekanos vektoriaus perskaičiavimo dažnis
Galioja tik tada, kai METHOD nurodytas CG, BiCGSTAB, GPBiCG arba PipeCG
Iteraciniai metodai atnaujina liekanos vektorių rekurentine formule, todėl kaupiasi apvalinimo paklaidos
Kas nurodytą iteracijų intervalą liekanos vektorius perskaičiuojamas iš {b}-[A]{x}
Nurodžius 0, naudojama kiekvienam metodui numatytoji reikšmė (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Nurodžius neigiamą reikšmę, periodinis perskaičiavimas neatliekamas
Perskaičiavimas konvergavimo kriterijaus įvykdymui patvirtinti visada atliekamas nepriklausomai nuo šio nustatymo
Jei periodas per trumpas, padidėja ne tik matricos ir vektoriaus sandaugų skaičius
bet gali pablogėti pats konvergavimas arba konvergavimas gali visai nebevykti
Jei pakeičiate numatytąją reikšmę, patikrinkite konvergavimo istoriją ir galutinę santykinę liekaną
METHOD2 = sprendimo metodas 2 (BiCGSTAB, GMRES, GPBiCG) (eksperimentinis)
Galioja tik tada, kai METHOD nurodytas CG
Jei CG diverguoja, automatiškai persijungiama į antrinį metodą ir sprendimas tęsiamas
Kitiems parametrams ir duomenų eilutėms naudojamos tos pačios reikšmės
CONTACT_ELIM = nurodo, ar kontaktinėje analizėje atliekamas laisvės laipsnių eliminavimas (0,1)
0: laisvės laipsnius eliminuoti tik naudojant iteracinį metodą (numatytoji reikšmė)
1: laisvės laipsnius eliminuoti visada (taip pat naudojant tiesioginį metodą)
** Nuo 2-osios eilutės **
| Kintamasis | Atributas | Aprašymas |
|---|---|---|
| NITER | I | Iteracijų skaičius (numatytoji reikšmė: 100) |
| iterPREmax | I | Additive Schwarz išankstinio sąlygojimo iteracijų skaičius (numatytoji reikšmė: 1) (Rekomenduojama reikšmė: 1; kai kuriuose lygiagrečiuose skaičiavimuose gali būti veiksminga 2) |
| NREST | I | Krylov poerdvių skaičius (numatytoji reikšmė: 10) (Galioja tik tada, kai sprendimo metodu pasirinktas GMRES) |
| NCOLOR_IN | I | Tikslinis spalvų skaičius daugiaspalviame rikiavime (numatytoji reikšmė: 10) (Galioja tik tada, kai OpenMP gijų skaičius yra 2 arba didesnis) |
| RECYCLEPRE | I | Išankstinio sąlygojimo parengties informacijos pakartotinio naudojimo kartų skaičius (numatytoji reikšmė: 3) (Galioja tik netiesinėje analizėje) |
| Kintamasis | Atributas | Aprašymas |
|---|---|---|
| RESID | R | Nutraukimo paklaida (numatytoji reikšmė: 1.0e-8) |
| SIGMA_DIAG | R | Daugiklis, taikomas įstrižainės elementams skaičiuojant išankstinio sąlygojimo matricą (numatytoji reikšmė: 1.0) (Jei naudojant ILU išankstinį sąlygojimą įvyksta dalyba iš nulio arba divergencija, uždavinys gali konverguoti nurodžius reikšmę, didesnę už 1.0) |
| SIGMA | R | Nenaudojamas (numatytoji reikšmė: 0.0) |
Kai PRECOND=5 (neprivaloma)¶
Jei PRECOND nustatyta reikšmė nėra 5 arba 22, 4-oji eilutė ignoruojama.
(4-oji eilutė) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
| Kintamasis | Atributas | Aprašymas |
|---|---|---|
| ML_CoarseSolver | I | ML stambaus tinklelio sprendiklis (1: naudoti glodintuvą, 2: KLU (nuoseklus tiesioginis metodas), 3: MUMPS (lygiagretus tiesioginis metodas)) (numatytoji reikšmė: 1) (Rekomenduojama: 3 arba 2 sudėtingiems uždaviniams, 1 įprastiems uždaviniams) |
| ML_Smoother | I | ML glodintuvas (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (numatytoji reikšmė: 1) (Rekomenduojama: 1) |
| ML_MGCycle | I | ML daugiatinklio ciklas (1: V-cycle, 2: W-cycle, 3: Full-V-cycle) (numatytoji reikšmė: 1) (Rekomenduojama: 2 sudėtingiems uždaviniams, 1 įprastiems uždaviniams) |
| ML_MaxLevels | I | Didžiausias ML lygių skaičius (numatytoji reikšmė: 10) (Ypač sudėtingiems uždaviniams naudokite tiesioginį stambaus tinklelio sprendiklį ir 2 lygius (arba 3, jei trūksta atminties); įprastiems uždaviniams rekomenduojama 10) |
| ML_CoarseningScheme | I | ML stambinimo schema (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (numatytoji reikšmė: 1) (Rekomenduojama: 1 arba 5) |
| ML_NumSweep | I | ML glodintuvo perėjimų skaičius (Chebyshev atveju – polinomo laipsnis) (numatytoji reikšmė: 2) (Rekomenduojama: 2 Chebyshev atveju, 1 SymBlockGaussSeidel atveju) |
Kai PRECOND=22 (neprivaloma)¶
Jei PRECOND nustatyta reikšmė nėra 22, 5-oji eilutė ignoruojama. Ketvirtąją ir penktąją eilutes galima praleisti visas, taip pat galima praleisti kiekvienos eilutės pabaigoje esančius elementus. Kiekvienam elementui, nurodytam kaip 0, naudojama numatytoji reikšmė.
Ketvirtosios eilutės 1–7 elementai išdėstyti ta pačia tvarka kaip PRECOND=5 (ML) parinkčių eilutėje, todėl ML parinkčių eilutę galima pakartotinai naudoti nepakeistą. 8–10 elementai skirti tik SA-AMG.
(4-oji eilutė) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (nenaudojama), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (nenaudojama)
| Kintamasis | Atributas | Aprašymas |
|---|---|---|
| SA_CoarseSolver | I | Stambaus tinklelio sprendiklis (0: automatiškai, 1: naudoti glodintuvą, 2: tankiosios matricos tiesioginis metodas, 3: MUMPS (lygiagretusis tiesioginis metodas)) (numatytoji reikšmė: 0) (Automatiniu režimu MUMPS naudojamas rinkiniuose, kuriuose MUMPS įjungtas; kitu atveju naudojamas tankiosios matricos tiesioginis metodas) |
| SA_Smoother | I | Glodintuvas (0 arba 1: Chebyshev) (numatytoji reikšmė: 0) (Palaikomas tik Chebyshev. Nurodžius kitą reikšmę, pateikiamas įspėjimas ir naudojamas Chebyshev) |
| SA_MGCycle | I | Daugiatinklio ciklas (0: numatytasis (W ciklas), 1: V ciklas, 2: W ciklas) (numatytoji reikšmė: 0) (Visas V ciklas nepalaikomas) |
| SA_MaxLevels | I | Didžiausias lygių skaičius (numatytoji reikšmė: 20) |
| (nenaudojama) | I | Vieta, atitinkanti ML stambinimo schemą. Kadangi SA-AMG visada naudoja nesusietą agregavimą, nenulinė reikšmė sukelia įspėjimą ir yra ignoruojama |
| SA_ChebyDegree | I | Chebyshev glodintuvo polinomo laipsnis (numatytoji reikšmė: 2) |
| SA_CoarseSize | I | Stambaus tinklelio ribinis dydis (numatytoji reikšmė: 50000, kai MUMPS naudojamas kaip stambaus tinklelio sprendiklis; kitu atveju 100) |
| SA_MaxAggSize | I | Didžiausias agregato dydis (numatytoji reikšmė: 96) |
| SA_GalerkinLowMem | I | Stambaus tinklelio matricos skaičiavimo metodas (0: įprastas (pirmenybė teikiama spartai), teigiama reikšmė: taupoma atmintis) (numatytoji reikšmė: 0) (Nurodykite teigiamą reikšmę, jei nustatymo metu nepakanka atminties) |
| (nenaudojama) | I | Rezervuota būsimiems plėtiniams |
Penktoji eilutė skirta tik SA-AMG, todėl ML jos neskaito.
(5-oji eilutė) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Kintamasis | Atributas | Aprašymas |
|---|---|---|
| SA_Theta | R | Stipriųjų jungčių nustatymo slenkstis (numatytoji reikšmė: 0.0) (Kai reikšmė 0.0, nenulinė matricos struktūra tiesiogiai naudojama kaip grafas) |
| SA_ChebyAlpha | R | Santykis, nustatantis Chebyshev glodintuvo tikrinių verčių intervalo apatinę ribą (numatytoji reikšmė: 20.0) |
| SA_Safety | R | Saugos koeficientas, taikomas įvertintai didžiausiai tikrinei vertei (numatytoji reikšmė: 1.1) |
| SA_TaperK | R | Stambinimo laipsniškumo koeficientas K (numatytoji reikšmė: 100) (Nuo 2 lygio stambinama laipsniškiau, kad liktų bent maždaug K agregatų. Neigiama reikšmė laipsniškumą išjungia) |
| SA_AggOrder | R | Agregavimo perėjimo tvarka (0: numatytoji (BFS tvarka), 1: BFS tvarka, 2: mazgų numerių maišos tvarka (eksperimentinė), 3: didėjanti laipsnio tvarka (eksperimentinė), 4: mažėjanti laipsnio tvarka (eksperimentinė), neigiama reikšmė: mazgų numerių tvarka) (numatytoji reikšmė: 0) |
| SA_MinAggSize | R | Mažiausias agregato dydis (numatytoji reikšmė: 3) |
| SA_Verify | R | Ar vykdyti savitikrą nustatymo metu (0: ne, teigiama reikšmė: taip) (numatytoji reikšmė: 0) (daugiausia derinimui) |
| SA_DumpVTK | R | Ar išvesti aukščiausio lygio agregavimą VTK formatu (0: be išvesties, teigiama reikšmė: išvesti) (numatytoji reikšmė: 0) (daugiausia derinimui) |
Pavyzdžiai¶
Naudokite CG su SSOR išankstiniu sąlygojimu ir nustatykite didžiausią iteracijų skaičių 10000, o nutraukimo paklaidą – 1.0e-8
Naudokite GMRES su SSOR išankstiniu sąlygojimu ir nustatykite Krylov poerdvių skaičių 40, o tikslinį daugiaspalvio rikiavimo spalvų skaičių – 100
Naudokite CG su ILU(0) išankstiniu sąlygojimu ir nustatykite įstrižainės elementams taikomą daugiklį skaičiuojant išankstinio sąlygojimo matricą į 1.1
CG išankstiniam sąlygojimui naudokite ML pagrįstą AMG
CG išankstiniam sąlygojimui naudokite ML pagrįstą AMG, o stambaus tinklelio sprendikliui – MUMPS (sudėtingiems uždaviniams)
CG išankstiniam sąlygojimui naudokite ML pagrįstą AMG, o daugiatinklio ciklui – W-cycle (sudėtingiems uždaviniams)
CG išankstiniam sąlygojimui naudokite ML pagrįstą AMG, stambaus tinklelio sprendikliui naudokite MUMPS ir nustatykite didžiausią lygių skaičių 2 (labai sudėtingiems uždaviniams)
Naudokite HEC-MW integruotą SA-AMG kaip CG išankstinį sąlygiklį
Naudokite SA-AMG kaip CG išankstinį sąlygiklį, o MUMPS – kaip stambaus tinklelio sprendiklį
Trinties kontakto analizėje naudokite BiCGSTAB su SA-AMG išankstiniu sąlygojimu ir išveskite AMG išankstinio sąlygiklio hierarchijos sandarą