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, explicit eliminering av frihetsgrader Inför multipunktsvillkor 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-förkonditionering lämpar sig för komplexa storskaliga problem. AMG finns som en Trilinos-ML-implementering och som HEC-MW:s inbyggda SA-AMG; välj efter byggkonfiguration.
Kontakt och MPC I analyser med kontakt eller multipunktsvillkor påverkar valet av MPC-behandlingsmetod och eliminering av kontaktfrihetsgrader konvergens och robusthet.
Externa bibliotek MUMPS, MKL och AMG (Trilinos-ML) är tillgängliga i byggen som länkas mot respektive bibliotek. AMG (SA-AMG) är tillgängligt i byggen med LAPACK aktiverat.

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.

CG, BiCGSTAB, GPBiCG och PipeCG uppdaterar residualvektorn med en rekursionsformel. När iterationerna fortskrider ackumuleras avrundningsfel och den rekursivt uppdaterade residualen kan avvika från den sanna residualen. För att förhindra detta beräknas residualvektorn med jämna iterationsintervall om från högerledet och matris-vektorprodukten. Intervallet kan anges med RECOMPUTE_RESIDUAL. Ett längre intervall minskar antalet matris-vektorprodukter, men ökar risken för att den rekursivt uppdaterade residualen avviker från den sanna residualen och att en lösning som inte har konvergerat bedöms som konvergerad. Om intervallet däremot är för kort ökar inte bara antalet matris-vektorprodukter, utan sambandet mellan residualen och hjälpvektorerna som upprätthålls av rekursionen kan också störas så att själva konvergensen försämras. Standardvärdet för varje metod balanserar dessa effekter; om det ändras ska konvergenshistoriken och den slutliga relativa residualen kontrolleras.

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 (Trilinos-ML) Algebraisk multigrid med det externa biblioteket Trilinos-ML. Kandidat för storskaliga problem eller problem som domineras av hierarkiska felkomponenter.
AMG (SA-AMG) Algebraisk multigrid av typen utjämnad aggregering (Smoothed Aggregation), inbyggd i HEC-MW. Som ovan; kandidat när AMG används utan att ett externt bibliotek läggs till.
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 (algebraisk multigrid) har två implementeringar: en med det externa biblioteket Trilinos-ML och HEC-MW:s inbyggda SA-AMG. De är oberoende implementeringar med olika krav på byggkonfiguration och olika tillgängliga alternativ.

AMG med Trilinos-ML kräver att ML är aktiverat vid byggning. Utjämnare, multigridcykel, grovningsmetod och andra inställningar kan anges; se nyckelordsreferensen för detaljerade värden.

SA-AMG är en algebraisk multigridförkonditionerare av typen utjämnad aggregering och kräver inte Trilinos-ML. Den använder däremot LAPACK internt, så ett bygge med LAPACK aktiverat krävs; om den väljs i ett bygge utan LAPACK avslutas körningen utan att analysen startas. För lösning på det grova nätet kan MUMPS användas i byggen med MUMPS aktiverat; annars används den inbyggda direkta metoden för täta matriser.

SA-AMG är främst avsett för symmetriska positivt definita system (CG), men stöder även osymmetriska reducerade system som uppstår vid friktionskontakt (BiCGSTAB, GMRES och andra). Det stöder 1 (värmeledning), 2 (plan), 3 (solid) och 6 (skal) frihetsgrader per nod, men inte matriser där antalet frihetsgrader varierar mellan noder. Lösare för det grova nätet, multigridcykel, utjämnarens grad och andra alternativ kan anges, men standardvärdena kan användas för standardanalyser. Se nyckelordsreferensen för värden och syntax. I byggen med GPU (OpenACC) aktiverat körs förkonditionerarens tillämpningsfas på GPU:n.

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 multipunktsvillkor 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 Roll Standardanvändning
Straffmetod Uppfyller villkoren approximativt genom att lägga till stora styvhetstermer i villkorsekvationerna. Standard för direkta metoder.
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. Den tidigare tillgängliga MPC-CG-metoden har tagits bort; för indata med MPCMETHOD=2 ges en varning och behandlingen följer dessa standardval.

Vid explicit eliminering av frihetsgrader reduceras även de koncentrerade massor som används vid modalanalys och explicit dynamisk analys med samma transformation som styvhetsmatrisen. Eftersom den reducerade massmatrisen i allmänhet inte är diagonal används dess radsummor som koncentrerade massor. För kopplings- eller interpolationsvillkor där summan av koefficienterna i villkorsekvationen är 1 fördelas slavfrihetsgradernas massa till masterfrihetsgraderna proportionellt mot koefficienterna.

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.
LOGLEVEL Skriver ut diagnostisk information, exempelvis hierarkiuppbyggnaden för AMG-förkonditionerare. Anges oberoende av ITERLOG och TIMELOG. Högre värden ökar mängden utdata.

Matrisdumpning gör det möjligt att granska den koefficientmatris som assemblerats 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