Løser og prækonditionering¶
FrontISTR's lineære løsere konfigureres ved at vælge enten en direkte eller iterativ metode; iterative metoder kombineres med en prækonditionering for at løse de lineære ligninger. MPC-behandlingsmetoden og eliminering af kontaktfrihedsgrader er supplerende valg, der bestemmer, hvordan et lineært system med multipunkt- eller kontaktbegrænsninger behandles.
Funktionsoversigt¶
Indstillingerne for løser og prækonditionering består af følgende valg. Vælg først enten en iterativ eller direkte metode som lineær løser. En prækonditionering kombineres kun med en iterativ metode.
| Kategori | Vigtigste valgmuligheder | Rolle |
|---|---|---|
| Iterative metoder | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN | Løser store sparse matricer med relativt effektiv hukommelsesudnyttelse. |
| Prækonditionering for iterative metoder | SSOR, diagonal skalering, BILU, AMG, SAINV, RIF | Forbedrer konvergensen for iterative metoder. Bruges ikke med direkte metoder. |
| Direkte metoder | MUMPS, MKL | Løser lineære ligninger robust ved matrixfaktorisering. |
| MPC-behandlingsmetoder | Penaltymetode, eksplicit eliminering af frihedsgrader | Indarbejder multipunktbegrænsninger i det lineære system. |
| Eliminering af kontaktfrihedsgrader | Automatisk, altid aktiveret | Styrer behandlingen af de kontaktfrihedsgrader, der tilføjes ved SLAGRANGE-kontakt. |
| Hjælpefunktioner | Estimering af konditionstal, matrixdump, logoutput | Understøtter fejlfinding, vurdering af konvergens og ydelsesevaluering. |
Ved parallel kørsel kan MPI-parallelisering baseret på domænedekomponering kombineres med OpenMP-trådparallelisering. Iterative metoder er standardvalget ved store parallelle analyser, mens direkte metoder anvendes i miljøer, hvor de nødvendige biblioteker er linket, når der kræves en mere robust løsning.
Valg af løser og prækonditionering¶
Afgør først, om der skal anvendes en iterativ eller direkte metode. Hvis en iterativ metode vælges, vælges derefter prækonditionering.
| Vurderingskriterium | Anbefalet fremgangsmåde |
|---|---|
| Problemstørrelse | Direkte metoder er stabile og lette at anvende til små og mellemstore problemer. Ved store problemer er iterative metoder mere hukommelseseffektive. |
| Matrixsymmetri | Overvej CG til symmetriske positivt definite problemer. Til ikke-symmetriske problemer kan BiCGSTAB, GMRES, GPBiCG m.fl. overvejes. |
| Parallelt miljø | Ved MPI-parallelisering kombineres en iterativ metode med domænedekomponering. Til prækonditionering under OpenMP-parallelisering kan en multicolor-variant af SSOR overvejes. |
| Prækonditionering (ved iterativ metode) | Prøv først standard-SSOR, og overvej derefter AMG. SSOR er beregningsmæssigt let, når konvergensen er god; AMG-prækonditionering er velegnet til komplekse, store problemer. AMG findes både som en Trilinos-ML-implementering og som HEC-MW's indbyggede SA-AMG; vælg efter buildkonfigurationen. |
| Kontakt og MPC | I analyser med kontakt eller multipunktbegrænsninger påvirker valget af MPC-behandlingsmetode og eliminering af kontaktfrihedsgrader konvergens og robusthed. |
| Eksterne biblioteker | MUMPS, MKL og AMG (Trilinos-ML) anvendes i builds, der er linket med de tilsvarende biblioteker. AMG (SA-AMG) anvendes i builds med LAPACK aktiveret. |
Ved standardanalyser fungerer standardværdierne for konvergenstolerance, maksimalt antal iterationer og diagonal korrektionskoefficient for prækonditionering normalt tilstrækkeligt. Kun hvis konvergensen er langsom eller løsningen divergerer, bør den iterative metode, prækonditioneringen, MPC-behandlingsmetoden og elimineringen af kontaktfrihedsgrader gennemgås i denne rækkefølge. Se nøgleordsreferencen for !SOLVER for parameterværdier og syntaks.
Iterative metoder¶
Iterative metoder løser store sparse systemer ved gentagne matrix-vektor-produkter og prækonditionering, som løbende opdaterer løsningen. FrontISTR tilbyder følgende iterative metoder.
| Iterativ metode | Typisk anvendelse | Bemærkninger |
|---|---|---|
CG | Symmetriske positivt definite problemer | Et standardvalg til strukturanalyse og varmeledningsanalyse. |
BiCGSTAB | Ikke-symmetriske problemer | Et valg, når kontakt eller kobling medfører stærk asymmetri. |
GMRES | Ikke-symmetriske problemer | Anvendes med en angivet størrelse på Krylov-underrummet. |
GPBiCG | Ikke-symmetriske problemer | Anvendes som en forbedret metode i BiCGSTAB-familien. |
GMRESR | Ikke-symmetriske problemer, avancerede anvendelser | En mulighed, der anvender GMRES i indlejret form. |
GMRESREN | Ikke-symmetriske problemer, avancerede anvendelser | En rekursiv variant i GMRESR-familien. |
CG forudsætter, at matricen er symmetrisk positivt definit. Hvis friktionskontakt, ikke-symmetrisk begrænsningsbehandling, koblingseffekter eller lignende giver stærk asymmetri, bør BiCGSTAB, GMRES, GPBiCG eller en anden ikke-symmetrisk løser overvejes. For GMRES kan et større Krylov-underrum forbedre konvergensen, men det øger samtidig hukommelsesforbruget.
Når METHOD2 angives, kan FrontISTR skifte til en alternativ iterativ metode, hvis CG divergerer eller bryder sammen. Funktionen er en fallback, når CG er primær løser; den alternative metode bruger de samme øvrige indstillinger og datalinjer som den primære løser.
CG, BiCGSTAB, GPBiCG og PipeCG opdaterer residualvektoren med en rekursionsformel. Efterhånden som iterationerne skrider frem, ophobes afrundingsfejl, og det rekursivt opdaterede residual kan afvige fra det sande residual. For at forhindre dette genberegnes residualvektoren med faste iterationsintervaller ud fra højresiden og matrix-vektor-produktet. Intervallet kan angives med RECOMPUTE_RESIDUAL. Et længere interval reducerer antallet af matrix-vektor-produkter, men øger risikoen for, at det rekursivt opdaterede residual afviger fra det sande residual, og at en løsning, der ikke er konvergeret, vurderes som konvergeret. Omvendt øger et for kort interval ikke kun antallet af matrix-vektor-produkter, men kan også forstyrre det forhold mellem residualet og hjælpevektorerne, som rekursionen opretholder, så selve konvergensen forringes. Standardværdien for hver metode afbalancerer disse virkninger; hvis den ændres, skal konvergenshistorikken og det endelige relative residual kontrolleres.
Prækonditionering¶
Prækonditionering transformerer koefficientmatricen for at forbedre konvergensen af en iterativ metode og anvendes kun, når en iterativ metode er valgt. Direkte metoder anvender ikke prækonditionering. Selv for den samme iterative metode kan valget af prækonditionering ændre antallet af iterationer og beregningstiden frem til konvergens markant.
| Prækonditionering | Egenskaber | Typisk anvendelse |
|---|---|---|
| SSOR | Standardprækonditionering; understøtter multicolor-ordning. | Første valg at prøve; anvendes bredt i strukturanalyse. |
| Diagonal skalering | Letvægtsprækonditionering baseret på diagonalelementer. | Når lav beregningsomkostning prioriteres. |
| BILU | Blokvis ufuldstændig LU-faktorisering. | Et valg til problemer, der har svært ved at konvergere med SSOR. |
| AMG (Trilinos-ML) | Algebraisk multigrid via det eksterne bibliotek Trilinos-ML. | Et valg til store problemer eller problemer domineret af hierarkiske fejlkomponenter. |
| AMG (SA-AMG) | Algebraisk multigrid af typen Smoothed Aggregation, indbygget i HEC-MW. | Samme anvendelsesområde som ovenfor; et valg, når AMG skal anvendes uden at tilføje et eksternt bibliotek. |
| SAINV | Sparse Approximate Inverse. | En specialiseret mulighed til kontaktproblemer eller distribuerede miljøer. |
| RIF | Robust Incomplete Factorization. | Et andet valg blandt ufuldstændige faktoriseringer. |
SSOR er standardvalget, og under OpenMP-parallelisering anvendes en version med multicolor-ordning. Diagonal skalering er letvægtsmæssig, men hvor meget den forbedrer konvergensen afhænger af problemet. BILU er implementeret som blokvis ufuldstændig LU-faktorisering og understøtter også matricer med et generelt antal frihedsgrader. I BILU-familien findes en vej, der automatisk øger den diagonale korrektionskoefficient SIGMA_DIAG og prøver igen, når en iterativ metode divergerer; se nøgleordsreferencen for angivelse af værdien.
AMG (algebraisk multigrid) findes i to implementeringer: en, der anvender det eksterne bibliotek Trilinos-ML, og HEC-MW's indbyggede SA-AMG. De er uafhængige implementeringer med forskellige krav til buildkonfigurationen og forskellige tilgængelige indstillinger.
AMG med Trilinos-ML kræver, at ML er aktiveret ved build. Smoother, multigridcyklus, grovinddelingsmetode og andre indstillinger kan angives; se nøgleordsreferencen for de konkrete værdier.
SA-AMG er en algebraisk multigrid-prækonditionering af typen Smoothed Aggregation og kræver ikke Trilinos-ML. Den bruger derimod LAPACK internt, så et build med LAPACK aktiveret er påkrævet; vælges den i et build uden LAPACK, afsluttes programmet uden at starte analysen. Til løsningen på grovgitteret kan MUMPS anvendes i builds med MUMPS aktiveret; ellers anvendes den indbyggede direkte metode for tætte matricer.
SA-AMG er primært beregnet til symmetriske positivt definite systemer (CG), men understøtter også ikke-symmetriske reducerede systemer fra friktionskontakt (BiCGSTAB, GMRES m.fl.). Den understøtter 1 (varmeledning), 2 (plan), 3 (solid) og 6 (skal) frihedsgrader pr. knude, men ikke matricer, hvor antallet af frihedsgrader varierer mellem knuder. Grovgitterløser, multigridcyklus, smoothergrad og andre indstillinger kan angives, men standardværdierne kan bruges til almindelige analyser. Se nøgleordsreferencen for værdier og syntaks. I builds med GPU (OpenACC) aktiveret udføres prækonditioneringens anvendelsesfase på GPU'en.
Når SAINV anvendes i en parallel analyse med kontakt- eller MPC-begrænsninger, kan overlapdybden ved domænedekomponering påvirke konvergensen.
Direkte metoder¶
Direkte metoder løser lineære ligninger ved at faktorisere koefficientmatricen. Da de ikke afhænger af et iterationsantal, er de robuste og kan være et stabilt valg ved analyser med kontakt eller begrænsningsbetingelser. Hukommelsesforbruget stiger dog med problemstørrelsen.
| Direkte metode | Parallelt miljø | Anvendelse |
|---|---|---|
MUMPS | MPI-parallel | Løser sparse matricer med en direkte metode i distribuerede hukommelsesmiljøer. |
MKL | Intel MKL / OpenMP | Direkte løser baseret på Intel MKL. Internt anvendes Intel PARDISO. Med flere MPI-processer bruges Cluster MKL-vejen. DIRECTmkl er et alias for MKL. |
Direkte metoder kan anvendes til både symmetriske og ikke-symmetriske matricer. MUMPS og MKL kræver, at de tilsvarende biblioteker er linket ved build. De kan ikke anvendes i miljøer uden disse biblioteker; se buildguiden for nødvendige afhængigheder og CMake-indstillinger.
FrontISTR har også en indbygget direkte løservej uden eksterne biblioteker, men ved almindelige analyser, hvor en direkte metode ønskes, bør MUMPS eller MKL normalt overvejes først.
Prækonditionering anvendes ikke ved direkte metoder. Selv hvis en prækonditionering er angivet i !SOLVER, bruges den ikke på den direkte løservej.
MPC-behandlingsmetoder¶
MPC-behandlingsmetoden bestemmer, hvordan frihedsgrader, der er koblet ved multipunktbegrænsninger, indarbejdes i de lineære ligninger. Selv med de samme begrænsningsligninger i inputdataene ændrer behandlingsmetoden koefficientmatricens egenskaber og konvergensadfærd.
| MPC-behandlingsmetode | Karakteristik | Standardanvendelse |
|---|---|---|
| Penaltymetode | Opfylder begrænsningerne approksimativt ved at tilføje store stivhedsled til begrænsningsligningerne. | Standard for direkte metoder. |
| Eksplicit eliminering af frihedsgrader | Eliminerer begrænsede frihedsgrader og løser det reducerede lineære system. | Standard for iterative metoder. |
Penaltymetoden er standard for direkte metoder, mens eksplicit eliminering af frihedsgrader er standard for iterative metoder. Den tidligere tilgængelige MPC-CG-metode er fjernet; ved input med MPCMETHOD=2 udsendes en advarsel, og behandlingen følger disse standardvalg.
Ved eksplicit eliminering af frihedsgrader reduceres de koncentrerede masser, der anvendes i modalanalyse og eksplicit dynamisk analyse, også med samme transformation som stivhedsmatricen. Da den reducerede massematrix generelt ikke er diagonal, anvendes dens rækkesummer som koncentrerede masser. Ved koblings- eller interpolationsbetingelser, hvor summen af betingelsesligningens koefficienter er 1, fordeles massen fra slavefrihedsgraden til masterfrihedsgraderne proportionalt med koefficienterne.
MPC-behandlingsmetoden kan angives eksplicit med MPCMETHOD i !SOLVER. Se nøgleordsreferencen for værdiernes betydning og syntaks.
Eliminering af kontaktfrihedsgrader¶
Eliminering af kontaktfrihedsgrader reducerer de ekstra kontaktfrihedsgrader, som indføres ved SLAGRANGE-kontakt, før systemet sendes til den lineære løser. Eliminering af disse kontaktfrihedsgrader kan forbedre egenskaberne for det lineære system, der behandles med en iterativ metode.
I den automatiske standardtilstand udføres eliminering af kontaktfrihedsgrader ved iterative metoder, men ikke ved direkte metoder. For direkte metoder findes en vej, der løser det udvidede system med kontaktfrihedsgrader direkte.
Hvis CONTACT_ELIM angives eksplicit, kan kontaktfrihedsgrader også elimineres ved brug af en direkte metode. Se siden om kontakt og indlejring for valg af kontakttype, kontaktpar og kontaktalgoritme på inputsiden.
Hjælpefunktioner¶
Estimering af konditionstal, matrixdump og logoutput kan bruges til at undersøge løserens konvergens og ydelse. Funktionerne er ikke nødvendige ved normale analyser og aktiveres primært til fejlfinding eller ydelsesevaluering.
| Funktion | Formål | Bemærkninger |
|---|---|---|
| Estimering af konditionstal | Skriver en indikator for konditionstallet for CG og GMRES. | Tilgængelig i builds med LAPACK aktiveret. |
| Matrixdump | Gemmer matricen og højresiden, der sendes til løseren, i en fil. | Understøtter Matrix Market-, CSR- og BSR-format. |
DUMPEXIT | Afslutter analysen efter matrixdump. | Bruges, når kun matricen skal udtages til ekstern verifikation. |
ITERLOG | Skriver konvergenshistorikken for den iterative metode. | Bruges til at kontrollere residualets udvikling. |
TIMELOG | Skriver løserens beregningstid. | VERBOSE skriver en mere detaljeret opdeling. |
STEPLOG | Skriver trinoplysninger. | Bruges til at kontrollere analyseforløbet. |
LOGLEVEL | Skriver diagnostiske oplysninger, f.eks. om hierarkiopbygningen for AMG-prækonditionering. | Angives uafhængigt af ITERLOG og TIMELOG. En højere værdi øger outputmængden. |
Matrixdump gør det muligt at kontrollere den koefficientmatrix, der er samlet under analysen, med eksterne værktøjer. Når DUMPEXIT er aktiveret, afsluttes analysen, så snart matricen og højresiden er gemt. Estimering af konditionstal er en eksperimentel funktion til CG og GMRES og kan bruges til diagnosticering af konvergens.
Relaterede emner¶
- Lineær løser (teori) — Matematiske principper for iterative metoder og prækonditionering.
- Ikke-lineær iteration og tidsintegration — Ramme for Newton-iterationer, kontaktiterationer og tidsintegration, som kalder den lineære løser.
- Domænedekomponering — MPI-parallel analyse og indstilling af overlapdybde.
- Kontakt og indlejring — Valg af kontakttype og kontaktalgoritme.
- !SOLVER — Værdier og syntaks for løser- og prækonditioneringsparametre.
- Nødvendige og valgfrie afhængighedsbiblioteker — Afhængigheder som
MUMPS,MKL(Intel PARDISO), Trilinos-ML og LAPACK.