!SOLVER¶
Styring av løseren
Obligatoriske styringsdata.
Parametere¶
METHOD = Løsningsmetode (CG, BiCGSTAB, GMRES, GPBiCG, CR, PipeCG, GroppCG, DIRECT, DIRECTmkl, MUMPS)
DIRECT : Direkte metode for andre analyser enn kontaktanalyse (bare seriell kjøring) (for tiden ikke tilgjengelig)
DIRECTmkl : Direkte metode med Intel MKL
MUMPS : Direkte metode med MUMPS
Når en direkte metode velges, ignoreres datalinjene.
Iterative metoder kan bruke trådparallell utførelse med OpenMP
PRECOND = Prekondisjoneringsmetode for iterative metoder (1, 2, 3, 5, 10, 11, 12, 22)
1, 2 : (blokk-)SSOR (med flerfargeordning)
3 : (blokk-)diagonalskalering
5 : AMG med flergrid-prekondisjoneringspakken ML
10 : Blokk-ILU(0)
11 : Blokk-ILU(1)
12 : Blokk-ILU(2)
22 : AMG med SA-AMG (Smoothed Aggregation AMG), som er innebygd i HEC-MW
10, 11 og 12 er bare tilgjengelige for problemer med 3 frihetsgrader
22 er bare tilgjengelig i programbygg der LAPACK er aktivert
Ved trådparallell kjøring med OpenMP anbefales SSOR, diagonalskalering, ML, SA-AMG,
eller blokk-ILU (10, 11, 12) for problemer med 3 frihetsgrader
ITERLOG = Om konvergenshistorikken for den iterative løseren skal skrives ut (YES/NO)(standard: NO)
TIMELOG = Om løserens beregningstid skal skrives ut (YES/NO/VERBOSE)(standard: NO)
LOGLEVEL = Nivå for diagnostisk utdata fra prekondisjonereren (heltall)(standard: ingen utdata)
Angis uavhengig av ITERLOG og TIMELOG
Ved 1 eller høyere skrives hierarkioppbygningen og annen informasjon for AMG-prekondisjonerere (PRECOND=5,22) ut
Ved 2 eller høyere skrives mer detaljert informasjon (for eksempel minnebruk) ut
USEJAD = Om ordning for vektorprosessorer skal brukes (YES/NO)(standard: NO)
Gyldig bare når en iterativ metode brukes
SCALING = Om matrisen skal skaleres slik at diagonalelementene blir 1 (YES/NO)(standard: NO)
Gyldig bare når en iterativ metode brukes for et problem med 3 frihetsgrader
DUMPTYPE = Format for matrisedump (NONE, MM, CSR, BSR) (hovedsakelig for feilsøking)
NONE : Ingen dump (standard)
MM : Matrix Market-format
CSR : Compressed Sparse Row (CSR)-format
BSR : Blokkert CSR-format
DUMPEXIT = Om programmet skal avsluttes umiddelbart etter matrisedump (YES/NO)(standard: NO)
MPCMETHOD = Metode for håndtering av flerpunktbegrensninger (1, 3)
1: Straffemetode (standard ved bruk av en direkte metode)
3: Eksplisitt eliminering av frihetsgrader (standard ved bruk av en iterativ metode)
MPC-CG-metoden (2) er fjernet. Hvis 2 angis, gis en advarsel og standardmetoden brukes.
ESTCOND = Frekvens for estimering av kondisjonstall (eksperimentell)
Kondisjonstallet estimeres etter hvert angitt antall iterasjoner og ved slutten av iterasjonene
Ingen estimering utføres når 0 er angitt
RECOMPUTE_RESIDUAL = Frekvens for ny beregning av residualvektoren
Gyldig bare når CG, BiCGSTAB, GPBiCG eller PipeCG er angitt for METHOD
For GroppCG er intervallet for ny beregning fast 50, og denne innstillingen brukes ikke
Iterative metoder oppdaterer residualvektoren med en rekursjonsformel, slik at avrundingsfeil akkumuleres
Ved hvert angitte iterasjonsintervall beregnes residualvektoren på nytt fra {b}-[A]{x}
Når 0 angis, brukes standardverdien for den enkelte metoden (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
Når en negativ verdi angis, utføres ingen periodisk ny beregning
Ny beregning for å bekrefte konvergens utføres alltid uavhengig av denne innstillingen
Et for kort intervall øker ikke bare antallet matrise-vektor-produkter, men kan også
forverre selve konvergensen eller føre til at løsningen ikke konvergerer
Hvis standardverdien endres, må konvergenshistorikken og det endelige relative residualet kontrolleres
METHOD2 = Andre løsningsmetode (BiCGSTAB, GMRES, GPBiCG) (eksperimentell)
Gyldig bare når CG, PipeCG eller GroppCG er angitt for METHOD
Hvis metoden angitt med METHOD divergerer, byttes det automatisk til den sekundære metoden og løsningen fortsetter
De samme verdiene brukes for de øvrige parameterne og datalinjene
CONTACT_ELIM = Angir om eliminering av frihetsgrader utføres i kontaktanalyse (0,1)
0: Eliminer frihetsgrader bare ved bruk av en iterativ metode (standard)
1: Eliminer alltid frihetsgrader (også ved bruk av en direkte metode)
** Fra og med 2. linje **
| Variabelnavn | Type | Beskrivelse |
|---|---|---|
| NITER | I | Antall iterasjoner (standard: 100) |
| iterPREmax | I | Antall iterasjoner med additiv Schwarz-prekondisjonering (standard: 1) (Anbefalt verdi er 1 (i parallelle beregninger kan 2 være effektivt i enkelte tilfeller)) |
| NREST | I | Dimensjon på Krylov-underrommet (standard: 10) (Gyldig bare når GMRES er valgt som løsningsmetode) |
| NCOLOR_IN | I | Målverdi for antall farger i flerfargeordningen (standard: 10) (Gyldig bare når antall OpenMP-tråder er 2 eller mer) |
| RECYCLEPRE | I | Antall ganger oppsettsinformasjonen for prekondisjonereren gjenbrukes (standard: 3) (Gyldig bare i ikke-lineær analyse) |
| Variabelnavn | Type | Beskrivelse |
|---|---|---|
| RESID | R | Konvergenstoleranse (standard: 1.0e-8) |
| SIGMA_DIAG | R | Faktor som diagonalelementene multipliseres med ved beregning av prekondisjoneringsmatrisen (standard: 1.0) (Hvis divisjon med null eller divergens oppstår ved ILU-prekondisjonering, kan en verdi større enn 1.0 gjøre det mulig å løse problemet) (Gyldig bare for ILU- og diagonalskaleringsprekondisjonering. SSOR bruker OMEGA.) |
| OMEGA | R | Relaksasjonsparameter for SSOR-prekondisjonering (standard: 1.0) (Verdien 1.0 tilsvarer den tradisjonelle SSOR-prekondisjoneringen) (Gyldig område er større enn 0 og mindre enn 2. Verdier utenfor området og verdier innenfor maskinepsilon fra 0 eller 2 behandles som 1.0.) |
Når PRECOND=5 (valgfritt)¶
Hvis PRECOND settes til en annen verdi enn 5 eller 22, ignoreres den 4. linjen.
| Variabelnavn | Type | Beskrivelse |
|---|---|---|
| ML_CoarseSolver | I | Grovgitterløser for ML (1: bruk glatteren, 2: KLU (seriell direkte metode), 3: MUMPS (parallell direkte metode)) (standard: 1) (Anbefalt: 3 eller 2 for vanskelige problemer, 1 for vanlige problemer) |
| ML_Smoother | I | ML-glatter (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (standard: 1) (Anbefalt: 1) |
| ML_MGCycle | I | ML-flergridsyklus (1: V-syklus, 2: W-syklus, 3: Full-V-syklus) (standard: 1) (Anbefalt: 2 for vanskelige problemer, 1 for vanlige problemer) |
| ML_MaxLevels | I | Maksimalt antall ML-nivåer (standard: 10) (For spesielt vanskelige problemer anbefales en direkte grovgitterløser og 2 nivåer (eller 3 hvis minnet ikke er tilstrekkelig); for vanlige problemer anbefales 10) |
| ML_CoarseningScheme | I | ML-grovingsskjema (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (standard: 1) (Anbefalt: 1 eller 5) |
| ML_NumSweep | I | Antall sveip med ML-glatteren (polynomgrad for Chebyshev) (standard: 2) (Anbefalt: 2 for Chebyshev, 1 for SymBlockGaussSeidel) |
Når PRECOND=22 (valgfritt)¶
Hvis PRECOND settes til en annen verdi enn 22, ignoreres den 5. linjen. Både den 4. og den 5. linjen kan utelates helt, og det er også mulig å utelate bare de siste elementene på hver linje. Standardverdien brukes for hvert element som er angitt som 0.
Element 1 til 7 på den 4. linjen står i samme rekkefølge som på parameterlinjen for PRECOND=5 (ML), slik at parameterlinjen for ML kan gjenbrukes uendret. Element 8 til 10 er spesifikke for SA-AMG.
(4. linje) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (ikke i bruk), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (ikke i bruk)
| Variabelnavn | Type | Beskrivelse |
|---|---|---|
| SA_CoarseSolver | I | Grovgitterløser (0: automatisk, 1: bruk glatteren, 2: direkte metode for tett matrise, 3: MUMPS (parallell direkte metode)) (standard: 0) (I automatisk modus brukes MUMPS i programbygg der MUMPS er aktivert; ellers brukes den direkte metoden for tett matrise) |
| SA_Smoother | I | Glatter (0 eller 1: Chebyshev) (standard: 0) (Bare Chebyshev støttes. Hvis en annen verdi angis, skrives det ut en advarsel, og Chebyshev brukes) |
| SA_MGCycle | I | Flergridsyklus (0: standard (W-syklus), 1: V-syklus, 2: W-syklus) (standard: 0) (Full-V-syklus støttes ikke) |
| SA_MaxLevels | I | Maksimalt antall nivåer (standard: 20) |
| (ikke i bruk) | I | Posisjonen som tilsvarer ML-grovingsskjemaet. SA-AMG bruker alltid ukoblet aggregering, så en verdi ulik 0 utløser en advarsel og ignoreres |
| SA_ChebyDegree | I | Polynomgrad for Chebyshev-glatteren (standard: 2) |
| SA_CoarseSize | I | Størrelsesgrense for grovgitteret (standard: 50000 når MUMPS brukes som grovgitterløser, ellers 100) |
| SA_MaxAggSize | I | Maksimal aggregatstørrelse (standard: 96) |
| SA_GalerkinLowMem | I | Beregningsmetode for grovgittermatrisen (0: normal (prioriterer hastighet), positiv verdi: minnebesparende) (standard: 0) (Angi en positiv verdi hvis det er for lite minne under oppsettet) |
| (ikke i bruk) | I | Reservert for fremtidige utvidelser |
Den 5. linjen er bare for SA-AMG og leses ikke av ML.
(5. linje) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
| Variabelnavn | Type | Beskrivelse |
|---|---|---|
| SA_Theta | R | Terskel for å bestemme sterke koblinger (standard: 0.0) (Ved 0.0 brukes matrisens mønster av elementer forskjellig fra null direkte som graf) |
| SA_ChebyAlpha | R | Forhold som bestemmer den nedre grensen for egenverdiintervallet som Chebyshev-glatteren virker på (standard: 20.0) |
| SA_Safety | R | Sikkerhetsfaktor som multipliseres med estimatet for den største egenverdien (standard: 1.1) |
| SA_TaperK | R | Avtrappingskoeffisient K for grovingen (standard: 100) (Fra og med nivå 2 gjøres grovingen mer gradvis slik at minst omtrent K aggregater blir igjen. En negativ verdi deaktiverer avtrappingen) |
| SA_AggOrder | R | Gjennomløpsrekkefølge for aggregering (0: standard (BFS-rekkefølge), 1: BFS-rekkefølge, 2: hash-rekkefølge for nodenumre (eksperimentell), 3: stigende nodegrad (eksperimentell), 4: synkende nodegrad (eksperimentell), negativ verdi: nodenummerrekkefølge) (standard: 0) |
| SA_MinAggSize | R | Minste aggregatstørrelse (standard: 3) |
| SA_Verify | R | Om det skal kjøres en selvkontroll under oppsettet (0: nei, positiv verdi: ja) (standard: 0) (hovedsakelig for feilsøking) |
| SA_DumpVTK | R | Om aggregeringen på det øverste nivået skal skrives ut i VTK-format (0: ikke skriv ut, positiv verdi: skriv ut) (standard: 0) (hovedsakelig for feilsøking) |
Eksempel¶
Bruk CG med SSOR-prekondisjonering, og sett maksimalt antall iterasjoner til 10000 og konvergenstoleransen til 1.0e-8
Bruk GMRES med SSOR-prekondisjonering, og sett dimensjonen på Krylov-underrommet til 40 og målverdien for antall farger i flerfargeordningen til 100
Bruk CG med ILU(0)-prekondisjonering, og sett faktoren som diagonalelementene multipliseres med ved beregning av prekondisjoneringsmatrisen, til 1.1
Bruk AMG med ML som prekondisjonering for CG
Bruk AMG med ML som prekondisjonering for CG og MUMPS som grovgitterløser (for vanskelige problemer)
Bruk AMG med ML som prekondisjonering for CG og W-syklus som flergridsyklus (for vanskelige problemer)
Bruk AMG med ML som prekondisjonering for CG, MUMPS som grovgitterløser, og sett maksimalt antall nivåer til 2 (for svært vanskelige problemer)
Bruk SA-AMG innebygd i HEC-MW som prekondisjonering for CG
Bruk SA-AMG som prekondisjonering for CG og MUMPS som grovgitterløser
Bruk BiCGSTAB med SA-AMG-prekondisjonering ved friksjonskontaktanalyse, og skriv ut hierarkioppbygningen for AMG-prekondisjonereren