Løser og prekondisjonering¶
De lineære løserne i FrontISTR er bygget opp ved å velge enten en direkte eller iterativ metode. Ved iterative metoder kombineres metoden med en prekondisjonerer for å løse de lineære ligningene. Behandlingsmetoden for MPC og eliminering av kontaktfrihetsgrader er hjelpevalg som bestemmer hvordan et lineært system med flerpunkt- eller kontaktbegrensninger håndteres.
Funksjonsoversikt¶
Løser- og prekondisjoneringsinnstillingene består av følgende valg. Først velges enten en iterativ eller direkte metode som lineær løser. En prekondisjonerer kombineres bare når en iterativ metode velges.
| Kategori | Hovedvalg | Rolle |
|---|---|---|
| Iterative metoder | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN | Løser store spredte matriser med relativt effektiv minnebruk. |
| Prekondisjonering for iterative metoder | SSOR, diagonal skalering, BILU, AMG, SAINV, RIF | Forbedrer konvergensen for iterative metoder. Brukes ikke med direkte metoder. |
| Direkte metoder | MUMPS, MKL | Løser lineære ligninger robust ved matrisefaktorisering. |
| MPC-behandlingsmetode | Straffemetode, MPC-CG-metode, eksplisitt eliminering av frihetsgrader | Innarbeider flerpunktbegrensninger i det lineære systemet. |
| Eliminering av kontaktfrihetsgrader | Automatisk, alltid aktivert | Styrer behandlingen av kontaktfrihetsgrader som legges til ved SLAGRANGE-kontakt. |
| Hjelpefunksjoner | Estimering av kondisjonstall, matrisedump, logging | Støtter feilsøking, vurdering av konvergens og ytelsesevaluering. |
Ved parallell kjøring kan MPI-parallellitet basert på områdedeling kombineres med OpenMP-trådparallellitet. Iterative metoder er standardvalget for storskala parallelle analyser, mens direkte metoder brukes når nødvendige biblioteker er lenket inn og det kreves en mer robust løsning.
Valg av løser og prekondisjonerer¶
Bestem først om en iterativ eller direkte metode skal brukes. Hvis en iterativ metode velges, velges deretter en prekondisjonerer.
| Vurderingskriterium | Anbefalt tilnærming |
|---|---|
| Problemstørrelse | Direkte metoder er stabile og enkle å bruke for små og mellomstore problemer. For store problemer er iterative metoder mer minneeffektive. |
| Matrisens symmetri | Vurder CG for symmetrisk positivt definite problemer. For ikke-symmetriske problemer kan BiCGSTAB, GMRES, GPBiCG og lignende vurderes. |
| Parallelt miljø | Ved MPI-parallellitet kombineres en iterativ metode med områdedeling. For prekondisjonering under OpenMP-parallellitet kan en flerfargevariant av SSOR vurderes. |
| Prekondisjonering (når iterativ metode er valgt) | Prøv først standard SSOR, og vurder deretter AMG. Når konvergensen er god, er SSOR beregningsmessig lett; for komplekse storskala problemer er AMG-prekondisjonering egnet. |
| Kontakt og MPC | I analyser med kontakt eller flerpunktbegrensninger påvirker valget av MPC-behandlingsmetode og eliminering av kontaktfrihetsgrader konvergens og robusthet. |
| Eksterne biblioteker | MUMPS, MKL og AMG brukes i bygg der de tilsvarende bibliotekene er lenket inn. |
For standardanalyser er standardverdiene for konvergenstoleranse, maksimalt antall iterasjoner og diagonal korreksjonskoeffisient for prekondisjoneringen vanligvis tilstrekkelige. Bare når konvergensen er langsom eller løsningen divergerer, bør den iterative metoden, prekondisjoneringen, MPC-behandlingsmetoden og elimineringen av kontaktfrihetsgrader gjennomgås i denne rekkefølgen. Se nøkkelordreferansen for !SOLVER for parameterverdier og syntaks.
Iterative metoder¶
Iterative metoder løser store spredte systemer ved å oppdatere løsningen gjentatte ganger gjennom matrise-vektor-produkter og prekondisjonering. FrontISTR tilbyr følgende iterative metoder.
| Iterativ metode | Typisk bruk | Merknader |
|---|---|---|
CG | Symmetrisk positivt definite problemer | Et standardvalg for struktur- og varmeledningsanalyser. |
BiCGSTAB | Ikke-symmetriske problemer | Et alternativ når kontakt eller koblede effekter gir sterk ikke-symmetri. |
GMRES | Ikke-symmetriske problemer | Brukes med en angitt størrelse på Krylov-underrommet. |
GPBiCG | Ikke-symmetriske problemer | Brukes som en forbedret metode i BiCGSTAB-familien. |
GMRESR | Ikke-symmetriske problemer, avansert bruk | Et alternativ som bruker GMRES i nestet form. |
GMRESREN | Ikke-symmetriske problemer, avansert bruk | En rekursiv variant i GMRESR-familien. |
CG forutsetter at matrisen er symmetrisk positivt definit. Hvis friksjonskontakt, ikke-symmetrisk begrensningsbehandling, koblingseffekter eller lignende gir sterk ikke-symmetri, bør BiCGSTAB, GMRES, GPBiCG eller andre ikke-symmetriske løsere vurderes. For GMRES kan et større Krylov-underrom forbedre konvergensen, men øker også minnebruken.
Når METHOD2 angis, kan FrontISTR bytte til en alternativ iterativ metode hvis CG divergerer eller bryter sammen. Denne funksjonen er en reserve når CG er hovedløseren; den alternative metoden bruker de samme øvrige innstillingene og datalinjene som hovedløseren.
Prekondisjonering¶
Prekondisjonering transformerer koeffisientmatrisen for å forbedre konvergensen til en iterativ metode og brukes bare når en iterativ metode er valgt. Direkte metoder bruker ikke prekondisjonering. Selv med samme iterative metode kan valget av prekondisjonerer i stor grad endre antall iterasjoner og beregningstiden frem til konvergens.
| Prekondisjonerer | Egenskaper | Typisk bruk |
|---|---|---|
| SSOR | Standard prekondisjonerer; støtter flerfargeordning. | Første alternativ å prøve; mye brukt i strukturanalyse. |
| Diagonal skalering | Lettvekts prekondisjonering som bruker diagonalelementene. | Når lav beregningskostnad er ønskelig. |
| BILU | Blokkvis ufullstendig LU-faktorisering. | Et alternativ for problemer som konvergerer dårlig med SSOR. |
| AMG | Algebraisk multigrid med Trilinos-ML. | Et alternativ for storskala problemer eller problemer dominert av hierarkiske feilkomponenter. |
| SAINV | Sparse Approximate Inverse. | Et spesialisert prekondisjoneringsalternativ for kontaktproblemer eller distribuerte minnemiljøer. |
| RIF | Robust Incomplete Factorization. | Et annet alternativ basert på ufullstendig faktorisering. |
SSOR er standardvalget, og en variant med flerfargeordning brukes under OpenMP-parallellitet. Diagonal skalering er lett, men hvor mye den forbedrer konvergensen avhenger av problemet. BILU er implementert som blokkvis ufullstendig LU-faktorisering og støtter også matriser med et generelt antall frihetsgrader. I BILU-familien finnes en mekanisme som automatisk øker den diagonale korreksjonskoeffisienten SIGMA_DIAG og prøver på nytt dersom den iterative metoden divergerer; se nøkkelordreferansen for hvordan verdien angis.
AMG bruker Trilinos-ML, så ML må være aktivert ved bygging. Utjevnere, multigrid-sykluser, grovdelingsmetoder og andre innstillinger kan angis, men se nøkkelordreferansen for detaljerte verdier. Når SAINV brukes i en parallell analyse med kontakt eller MPC-begrensninger, kan overlappsdybden ved områdedeling påvirke konvergensen.
Direkte metoder¶
Direkte metoder løser lineære ligninger ved å faktorisere koeffisientmatrisen. Siden de ikke avhenger av et iterasjonsantall, er de robuste og kan være et stabilt valg for analyser med kontakt eller begrensningsbetingelser. Minnebruken øker imidlertid med problemstørrelsen.
| Direkte metode | Parallelt miljø | Bruk |
|---|---|---|
MUMPS | MPI-parallellitet | Løser spredte matriser med en direkte metode i distribuerte minnemiljøer. |
MKL | Intel MKL / OpenMP | Direkte løser basert på Intel MKL. Internt brukes Intel PARDISO. Med flere MPI-prosesser brukes Cluster MKL-banen. DIRECTmkl er et alias for MKL. |
Direkte metoder kan brukes for både symmetriske og ikke-symmetriske matriser. MUMPS og MKL krever at de tilsvarende bibliotekene er lenket inn ved bygging. De kan ikke brukes i miljøer uten disse bibliotekene; se byggeveiledningen for nødvendige avhengigheter og CMake-alternativer.
FrontISTR har også en innebygd direkte løserbane som ikke bruker et eksternt bibliotek, men for vanlige analyser der en direkte metode skal velges, bør MUMPS eller MKL normalt vurderes først.
Prekondisjonering brukes ikke for direkte metoder. Selv om en prekondisjonerer er angitt i !SOLVER, brukes den ikke på banen for direkte løser.
MPC-behandlingsmetoder¶
MPC-behandlingsmetoden bestemmer hvordan frihetsgrader knyttet sammen av flerpunktbegrensninger innarbeides i de lineære ligningene. Selv med de samme begrensningsligningene i inndataene endrer behandlingsmetoden egenskapene og konvergensen til koeffisientmatrisen.
| MPC-behandlingsmetode | Prinsipp | Standardbruk |
|---|---|---|
| Straffemetode | Oppfyller begrensningene tilnærmet ved å legge stor stivhet til begrensningsligningene. | Standard for direkte metoder. |
| MPC-CG-metode | Eldre metode som håndterer matrise-vektor-produkter med begrensninger inne i den iterative løseren. | Ikke anbefalt. |
| Eksplisitt eliminering av frihetsgrader | Eliminerer begrensede frihetsgrader og løser det reduserte lineære systemet. | Standard for iterative metoder. |
Straffemetoden er standard for direkte metoder, mens eksplisitt eliminering av frihetsgrader er standard for iterative metoder. MPC-CG-metoden er et eldre kompatibilitetsalternativ og bør ikke brukes i nye analyser; normalt brukes eksplisitt eliminering av frihetsgrader eller standardbehandlingen for den valgte direkte metoden.
MPC-behandlingsmetoden kan angis eksplisitt i !SOLVER med MPCMETHOD. Se nøkkelordreferansen for betydningen og syntaksen til hver verdi.
Eliminering av kontaktfrihetsgrader¶
Eliminering av kontaktfrihetsgrader reduserer de ekstra kontaktfrihetsgradene som innføres av SLAGRANGE-kontakt, før systemet sendes til den lineære løseren. Eliminering av disse kontaktfrihetsgradene kan forbedre egenskapene til det lineære systemet som håndteres av en iterativ metode.
I standard automatisk modus utføres eliminering av kontaktfrihetsgrader ved iterative metoder, men ikke ved direkte metoder. For direkte metoder finnes en bane som løser det utvidede systemet med kontaktfrihetsgradene direkte.
Hvis CONTACT_ELIM angis eksplisitt, kan kontaktfrihetsgrader også elimineres ved bruk av en direkte metode. For valg av kontakttype, kontaktpar og kontaktalgoritme på inndatasiden, se siden Kontakt og innbygging.
Hjelpefunksjoner¶
Estimering av kondisjonstall, matrisedump og logging kan brukes til å undersøke løserens konvergens og ytelse. Disse funksjonene er ikke nødvendige i vanlige analyser og aktiveres hovedsakelig for feilsøking eller ytelsesevaluering.
| Funksjon | Formål | Merknader |
|---|---|---|
| Estimering av kondisjonstall | Skriver ut en indikator for kondisjonstallet for CG og GMRES. | Tilgjengelig i bygg med LAPACK aktivert. |
| Matrisedump | Lagrer matrisen og høyresiden som sendes til løseren, i en fil. | Støtter formatene Matrix Market, CSR og BSR. |
DUMPEXIT | Avslutter analysen etter at matrisen er dumpet. | Brukes når bare matrisen skal hentes ut for ekstern verifikasjon. |
ITERLOG | Skriver ut konvergenshistorikken til en iterativ metode. | Brukes til å kontrollere residualutviklingen. |
TIMELOG | Skriver ut løserens beregningstid. | VERBOSE skriver ut en mer detaljert oppdeling. |
STEPLOG | Skriver ut steginformasjon. | Brukes til å kontrollere analyseprosedyren. |
Matrisedump gjør det mulig å kontrollere koeffisientmatrisen som er sammenstilt i analysen, med eksterne verktøy. Når DUMPEXIT er aktivert, avsluttes analysen etter at matrisen og høyresiden er lagret. Estimering av kondisjonstall er en eksperimentell funksjon for CG og GMRES og kan brukes til å diagnostisere konvergens.
Relaterte emner¶
- Lineær løser (teori) — Matematiske prinsipper for iterative metoder og prekondisjonering.
- Ikke-lineær iterasjon og tidsintegrasjon — Rammeverket for Newton-iterasjoner, kontaktiterasjoner og tidsintegrasjon som kaller den lineære løseren.
- Områdedeling — MPI-parallell analyse og innstillinger for overlappsdybde.
- Kontakt og innbygging — Valg av kontakttyper og kontaktalgoritmer.
- !SOLVER — Verdier og syntaks for løser- og prekondisjoneringsparametere.
- Obligatoriske og valgfrie avhengighetsbiblioteker — Avhengigheter som
MUMPS,MKL(Intel PARDISO), Trilinos-ML og LAPACK.