Gå til innhold

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, CR, PipeCG, GroppCG, 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, 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å domenedekomponering 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 For symmetrisk positivt definite problemer bør CG og variantene (PipeCG, GroppCG) vurderes. For ikke-symmetriske problemer kan BiCGSTAB, GMRES, GPBiCG og lignende vurderes.
Parallelt miljø Ved MPI-parallellitet kombineres en iterativ metode med domenedekomponering. For prekondisjonering under OpenMP-parallellitet kan en flerfargevariant av SSOR vurderes. For matriser med tre frihetsgrader per node er BILU også trådparallellisert.
Prekondisjonerer (ved iterativ metode) Prøv først standard-SSOR, og vurder deretter AMG. SSOR har lav beregningskostnad når konvergensen er god; AMG er egnet for komplekse storskala problemer. AMG finnes både som en Trilinos-ML-implementasjon og som HEC-MWs innebygde SA-AMG; velg ut fra byggkonfigurasjonen.
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 (Trilinos-ML) kan brukes i bygg der de tilsvarende bibliotekene er lenket inn. AMG (SA-AMG) kan brukes i bygg med LAPACK aktivert.

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.
PipeCG Symmetrisk positivt definite problemer En variant av CG som samler de globale reduksjonene av indre produkter til én per iterasjon. Et alternativ når mange MPI-prosesser brukes og venting på kollektiv kommunikasjon dominerer beregningstiden.
GroppCG Symmetrisk positivt definite problemer En variant av CG som samler reduksjonene av indre produkter til to per iterasjon. Bruksområdet er det samme som for PipeCG.
CR Symmetriske problemer Konjugert residualmetode.
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, PipeCG og GroppCG forutsetter at matrisen er symmetrisk positivt definit, mens CR forutsetter at matrisen er symmetrisk. 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, PipeCG eller GroppCG divergerer eller bryter sammen. Denne funksjonen er en reserve når en av disse metodene er hovedløseren; den alternative metoden bruker de samme øvrige innstillingene og datalinjene som hovedløseren.

CG, BiCGSTAB, GPBiCG, PipeCG og GroppCG oppdaterer residualvektoren med en rekursjonsformel. Etter hvert som iterasjonene fortsetter, akkumuleres avrundingsfeil, og det rekursivt oppdaterte residualet kan avvike fra det sanne residualet. For å hindre dette beregnes residualvektoren på nytt med faste iterasjonsintervaller ut fra høyresiden og matrise-vektor-produktet. For alle disse metodene unntatt GroppCG kan intervallet angis med RECOMPUTE_RESIDUAL. Et lengre intervall reduserer antallet matrise-vektor-produkter, men øker risikoen for at det rekursivt oppdaterte residualet avviker fra det sanne residualet, og at en løsning som ikke har konvergert, vurderes som konvergert. Omvendt øker et for kort intervall ikke bare antallet matrise-vektor-produkter, men kan også forstyrre forholdet mellom residualet og hjelpevektorene som rekursjonen opprettholder, slik at selve konvergensen forverres. Standardverdien for hver metode balanserer disse virkningene; hvis den endres, må konvergenshistorikken og det endelige relative residualet kontrolleres.

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 (Trilinos-ML) Algebraisk multigrid via det eksterne Trilinos-ML-biblioteket. Et alternativ for storskala problemer eller problemer dominert av hierarkiske feilkomponenter.
AMG (SA-AMG) Algebraisk multigrid av typen Smoothed Aggregation, innebygd i HEC-MW. Samme bruksområde som ovenfor; et alternativ når AMG skal brukes uten å legge til et eksternt bibliotek.
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. En relaksasjonsparameter kan angis for å justere konvergensen, men standardverdien kan brukes for standardanalyser. 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. For matriser med tre frihetsgrader per node bruker BILU også en versjon med flerfargeordning ved OpenMP-parallellisering. 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 (algebraisk multigrid) finnes i to implementasjoner: én som bruker det eksterne Trilinos-ML-biblioteket, og HEC-MWs innebygde SA-AMG. Dette er uavhengige implementasjoner med ulike krav til byggkonfigurasjonen og ulike tilgjengelige innstillinger.

AMG med Trilinos-ML krever at ML er aktivert ved bygging. Glatter, flergridsyklus, grovdelingsmetode og andre innstillinger kan angis; se nøkkelordreferansen for detaljerte verdier.

SA-AMG er en algebraisk multigrid-prekondisjonerer av typen Smoothed Aggregation og krever ikke Trilinos-ML. Den bruker derimot LAPACK internt, så det kreves et bygg med LAPACK aktivert; velges den i et bygg uten LAPACK, avsluttes programmet uten at analysen starter. For løsning på grovgitteret kan MUMPS brukes i bygg med MUMPS aktivert; ellers brukes den innebygde direkte metoden for tette matriser.

SA-AMG er primært beregnet på symmetrisk positivt definite systemer (CG), men støtter også ikke-symmetriske reduserte systemer som oppstår ved friksjonskontakt (BiCGSTAB, GMRES og andre). Den støtter 1 (varmeledning), 2 (plan), 3 (solid) og 6 (skall) frihetsgrader per node, men ikke matriser der antallet frihetsgrader varierer mellom nodene. Grovgitterløser, flergridsyklus, glattergrad og andre innstillinger kan angis, men standardverdiene kan brukes for vanlige analyser. Se nøkkelordreferansen for verdier og syntaks. I bygg med GPU (OpenACC) aktivert kjøres prekondisjonererens anvendelsesfase på GPU-en.

Når SAINV brukes i en parallell analyse med kontakt eller MPC-begrensninger, kan overlappsdybden ved nettpartisjonering 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.
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. Den tidligere tilgjengelige MPC-CG-metoden er fjernet; ved inndata med MPCMETHOD=2 gis en advarsel, og behandlingen følger disse standardvalgene.

Ved eksplisitt eliminering av frihetsgrader reduseres også den konsentrerte massen som brukes i modalanalyse og dynamisk analyse med eksplisitt metode, med samme transformasjon som stivhetsmatrisen. Siden den reduserte massematrisen generelt ikke er diagonal, brukes radsummer som konsentrert masse. For koblings- eller interpolasjonsbegrensninger der summen av koeffisientene i begrensningsligningen er 1, fordeles massen til slavefrihetsgraden på masterfrihetsgradene proporsjonalt med koeffisientene.

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.
LOGLEVEL Skriver ut diagnostisk informasjon, for eksempel hierarkioppbyggingen til AMG-prekondisjoneringen. Angis uavhengig av ITERLOG og TIMELOG. En høyere verdi øker utskriftsmengden.

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