Gå til innhold

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

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

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

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

Bruk GMRES med SSOR-prekondisjonering, og sett dimensjonen på Krylov-underrommet til 40 og målverdien for antall farger i flerfargeordningen til 100

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

Bruk CG med ILU(0)-prekondisjonering, og sett faktoren som diagonalelementene multipliseres med ved beregning av prekondisjoneringsmatrisen, til 1.1

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

Bruk AMG med ML som prekondisjonering for CG

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

Bruk AMG med ML som prekondisjonering for CG og MUMPS som grovgitterløser (for vanskelige problemer)

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

Bruk AMG med ML som prekondisjonering for CG og W-syklus som flergridsyklus (for vanskelige problemer)

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

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)

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

Bruk SA-AMG innebygd i HEC-MW som prekondisjonering for CG

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

Bruk SA-AMG som prekondisjonering for CG og MUMPS som grovgitterløser

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

Bruk BiCGSTAB med SA-AMG-prekondisjonering ved friksjonskontaktanalyse, og skriv ut hierarkioppbygningen for AMG-prekondisjonereren

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