Gå till innehållet

Lösare och förkonditionering

FrontISTR:s linjära lösare konfigureras genom att välja antingen en direkt eller iterativ metod; iterativa metoder kombineras med en förkonditionerare för att lösa de linjära ekvationerna. Metoden för MPC-behandling och eliminering av kontaktfrihetsgrader är kompletterande val som bestämmer hur ett linjärt system med flerpunks- eller kontaktvillkor hanteras.

Funktionsöversikt

Inställningarna för lösare och förkonditionering består av följande val. Välj först antingen en iterativ eller en direkt metod som linjär lösare. En förkonditionerare kombineras endast med en iterativ metod.

Kategori Huvudsakliga alternativ Roll
Iterativa metoder CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN Löser stora glesa matriser med relativt effektiv minnesanvändning.
Förkonditionerare för iterativa metoder SSOR, diagonal skalning, BILU, AMG, SAINV, RIF Förbättrar konvergensen för iterativa metoder. Används inte med direkta metoder.
Direkta metoder MUMPS, MKL Löser linjära ekvationer robust genom matrisfaktorisering.
Metoder för MPC-behandling Straffmetod, MPC-CG-metod, explicit eliminering av frihetsgrader Inför flerpunksvillkor i det linjära systemet.
Eliminering av kontaktfrihetsgrader Automatisk, alltid aktiverad Styr behandlingen av kontaktfrihetsgrader som läggs till av SLAGRANGE-kontakt.
Hjälpfunktioner Uppskattning av konditionstal, matrisdump, loggning Stöd för felsökning, bedömning av konvergens och prestandautvärdering.

Vid parallell körning kan MPI-parallellisering baserad på domänuppdelning kombineras med OpenMP-trådparallellisering. Iterativa metoder är standardvalet för storskaliga parallella analyser, medan direkta metoder används när de bibliotek som krävs är länkade och en robustare lösning behövs.

Val av lösare och förkonditionerare

Avgör först om en iterativ eller direkt metod ska användas. Om en iterativ metod väljs, välj därefter en förkonditionerare.

Beslutsfaktor Rekommenderat tillvägagångssätt
Problemstorlek Direkta metoder är stabila och enkla att använda för små till medelstora problem. Iterativa metoder är mer minneseffektiva för stora problem.
Matrissymmetri Överväg CG för symmetriska positivt definita problem. För osymmetriska problem kan BiCGSTAB, GMRES, GPBiCG eller liknande metoder övervägas.
Parallell miljö Under MPI-parallellisering kombineras en iterativ metod med domänuppdelning. För förkonditionering under OpenMP-parallellisering kan en flerfärgsimplementering av SSOR övervägas.
Förkonditionerare (vid iterativ metod) Prova först standardvärdet SSOR och överväg därefter AMG. SSOR har låg beräkningskostnad när konvergensen är god; AMG lämpar sig för komplexa storskaliga problem.
Kontakt och MPC I analyser med kontakt eller flerpunksvillkor påverkar valet av MPC-behandlingsmetod och eliminering av kontaktfrihetsgrader konvergens och robusthet.
Externa bibliotek MUMPS, MKL och AMG är tillgängliga i byggen som länkas mot respektive bibliotek.

För standardanalyser är standardvärdena för konvergenstolerans, maximalt antal iterationer och diagonal korrigeringskoefficient för förkonditioneraren i allmänhet tillräckliga. Endast när konvergensen är långsam eller lösningen divergerar bör man i tur och ordning ompröva iterativ metod, förkonditionerare, MPC-behandlingsmetod och eliminering av kontaktfrihetsgrader. Se nyckelordsreferensen för !SOLVER för parametervärden och syntax.

Iterativa metoder

Iterativa metoder löser stora glesa system genom att upprepade gånger uppdatera lösningen med matris-vektorprodukter och förkonditionering. FrontISTR tillhandahåller följande iterativa metoder.

Iterativ metod Typisk tillämpning Kommentar
CG Symmetriska positivt definita problem En standardkandidat för struktur- och värmeledningsanalyser.
BiCGSTAB Osymmetriska problem En kandidat när kontakt eller kopplade effekter ger stark osymmetri.
GMRES Osymmetriska problem Används med angiven storlek på Krylov-delrummet.
GPBiCG Osymmetriska problem Används som en förbättrad metod i BiCGSTAB-familjen.
GMRESR Osymmetriska problem, avancerade tillämpningar Ett alternativ som använder GMRES i nästlad form.
GMRESREN Osymmetriska problem, avancerade tillämpningar En rekursiv variant i GMRESR-familjen.

CG förutsätter att matrisen är symmetrisk positivt definit. Om friktionskontakt, osymmetrisk behandling av villkor, kopplingseffekter eller liknande faktorer ger stark osymmetri bör BiCGSTAB, GMRES, GPBiCG eller en annan osymmetrisk lösare övervägas. Med GMRES kan en ökning av Krylov-delrummets storlek förbättra konvergensen, men den ökar också minnesanvändningen.

När METHOD2 anges kan FrontISTR växla till en alternativ iterativ metod om CG divergerar eller bryter samman. Funktionen är en reservlösning för fall där CG är primär lösare; den alternativa metoden använder samma återstående inställningar och datarader som den primära lösaren.

Förkonditionering

Förkonditionering transformerar koefficientmatrisen för att förbättra konvergensen för en iterativ metod och tillämpas endast när en iterativ metod har valts. Direkta metoder använder inte förkonditionering. Även för samma iterativa metod kan valet av förkonditionerare avsevärt förändra antalet iterationer och den beräkningstid som krävs för konvergens.

Förkonditionerare Egenskaper Typisk tillämpning
SSOR Standardförkonditionerare; stöder flerfärgsordning. Första kandidaten att prova; används brett i strukturanalys.
Diagonal skalning Lättviktig förkonditionerare som använder diagonalelement. När låg beräkningskostnad prioriteras.
BILU Blockvis ofullständig LU-faktorisering. Kandidat för problem som är svåra att få att konvergera med SSOR.
AMG Algebraisk multigrid med Trilinos-ML. Kandidat för storskaliga problem eller problem som domineras av hierarkiska felkomponenter.
SAINV Sparse Approximate Inverse. Specialiserat förkonditioneringsalternativ för kontaktproblem eller miljöer med distribuerat minne.
RIF Robust Incomplete Factorization. Ett annat alternativ baserat på ofullständig faktorisering.

SSOR är standardvalet, och en version med flerfärgsordning används vid OpenMP-parallellisering. Diagonal skalning är lättviktig, men förbättringen av konvergens beror på problemet. BILU är implementerad som blockvis ofullständig LU-faktorisering och stöder även matriser med godtyckligt antal frihetsgrader. För BILU-familjen finns en väg som automatiskt ökar den diagonala korrigeringskoefficienten SIGMA_DIAG och försöker igen när en iterativ metod divergerar; se nyckelordsreferensen för hur värdet anges.

AMG använder Trilinos-ML, så ML måste vara aktiverat vid byggning. Utjämnare, multigridcykler, grovningsmetoder och andra inställningar kan anges; se nyckelordsreferensen för detaljerade värden. När SAINV används i en parallell analys med kontakt- eller MPC-villkor kan överlappningsdjupet för domänuppdelningen påverka konvergensen.

Direkta metoder

Direkta metoder löser linjära ekvationer genom faktorisering av koefficientmatrisen. Eftersom de inte är beroende av ett iterationsantal är de robusta och kan vara ett stabilt val för analyser med kontakt- eller tvångsvillkor. Minnesförbrukningen ökar dock med problemstorleken.

Direkt metod Parallell miljö Tillämpning
MUMPS MPI-parallell Löser glesa matriser med direkt metod i miljöer med distribuerat minne.
MKL Intel MKL / OpenMP Direktlösare baserad på Intel MKL. Intel PARDISO används internt. Med flera MPI-processer används Cluster MKL-vägen. DIRECTmkl är ett alias för MKL.

Direkta metoder kan användas för både symmetriska och osymmetriska matriser. MUMPS och MKL kräver att motsvarande bibliotek länkas vid byggning. De kan inte användas i miljöer där dessa bibliotek saknas, så se byggguiden för nödvändiga beroenden och CMake-alternativ.

FrontISTR innehåller även en inbyggd väg för direktlösning som inte använder ett externt bibliotek, men för vanliga analyser som kräver direkt metod bör MUMPS eller MKL normalt övervägas först.

Förkonditionering tillämpas inte på direkta metoder. Även om en förkonditionerare anges i !SOLVER refereras den inte på direktlösarens väg.

Metoder för MPC-behandling

Metoden för MPC-behandling bestämmer hur frihetsgrader som är sammankopplade genom flerpunksvillkor införs i de linjära ekvationerna. Även med samma villkorsekvationer i indata förändrar behandlingsmetoden koefficientmatrisens egenskaper och konvergensbeteende.

Metod för MPC-behandling Positionering Standardanvändning
Straffmetod Uppfyller villkoren approximativt genom att lägga till stora styvhetstermer i villkorsekvationerna. Standard för direkta metoder.
MPC-CG-metod Äldre metod som hanterar matris-vektorprodukter med villkor inne i den iterativa lösaren. Föråldrad.
Explicit eliminering av frihetsgrader Eliminerar begränsade frihetsgrader och löser det reducerade linjära systemet. Standard för iterativa metoder.

Straffmetoden är standard för direkta metoder, medan explicit eliminering av frihetsgrader är standard för iterativa metoder. MPC-CG-metoden är ett äldre kompatibilitetsalternativ och rekommenderas inte för nya analyser; använd normalt explicit eliminering av frihetsgrader eller standardbehandlingen för vald direkt metod.

Metoden för MPC-behandling kan anges explicit med MPCMETHOD i !SOLVER. Se nyckelordsreferensen för innebörden och syntaxen för respektive värde.

Eliminering av kontaktfrihetsgrader

Eliminering av kontaktfrihetsgrader reducerar de extra kontaktfrihetsgrader som införs av SLAGRANGE-kontakt innan systemet skickas till den linjära lösaren. Eliminering av dessa kontaktfrihetsgrader kan förbättra egenskaperna hos det linjära system som hanteras av en iterativ metod.

I det automatiska standardläget är eliminering av kontaktfrihetsgrader aktiverad för iterativa metoder och inaktiverad för direkta metoder. För direkta metoder finns en väg som direkt löser det utökade systemet som innehåller kontaktfrihetsgraderna.

När CONTACT_ELIM anges explicit kan eliminering av kontaktfrihetsgrader utföras även när en direkt metod används. För val av kontakttyp, kontaktpar och kontaktalgoritm på indatasidan, se sidan Kontakt och inbäddning.

Hjälpfunktioner

Uppskattning av konditionstal, matrisdumpar och loggning kan användas för att undersöka lösarens konvergens och prestanda. Dessa funktioner behövs inte för normala analyser och aktiveras främst för felsökning eller prestandautvärdering.

Funktion Syfte Kommentar
Uppskattning av konditionstal Skriver ut en indikator för konditionstalet för CG och GMRES. Tillgänglig i byggen med LAPACK aktiverat.
Matrisdump Sparar matrisen och högerledet som skickas till lösaren. Stöder formaten Matrix Market, CSR och BSR.
DUMPEXIT Avslutar analysen efter att matrisen har dumpats. Används när endast matrisen behövs för extern verifiering.
ITERLOG Skriver ut konvergenshistoriken för en iterativ metod. Används för att granska residualens utveckling.
TIMELOG Skriver ut lösarens beräkningstid. VERBOSE ger en mer detaljerad uppdelning.
STEPLOG Skriver ut steginformation. Används för att granska analysförloppet.

Matrisdumpning gör det möjligt att granska den koefficientmatris som satts samman av analysen med externa verktyg. När DUMPEXIT är aktiverat avslutas analysen efter att matrisen och högerledet har sparats. Uppskattning av konditionstal är en experimentell funktion som är tillgänglig med CG och GMRES och kan användas för att diagnostisera konvergensbeteendet.

Relaterade ämnen

AI-assisted translation May contain errors Official docs Status