Solver en preconditionering¶
Lineaire solvers in FrontISTR worden geconfigureerd door een directe of iteratieve methode te kiezen; iteratieve methoden worden gecombineerd met een preconditioner om de lineaire vergelijkingen op te lossen. De MPC-verwerkingsmethode en eliminatie van contactvrijheidsgraden zijn aanvullende keuzes die bepalen hoe een lineair stelsel met meerpunts- of contactbeperkingen wordt behandeld.
Functioneel overzicht¶
De instellingen voor solver en preconditionering bestaan uit de volgende keuzes. Selecteer eerst een iteratieve of directe methode als lineaire solver. Een preconditioner wordt alleen met een iteratieve methode gecombineerd.
| Categorie | Belangrijkste opties | Rol |
|---|---|---|
| Iteratieve methoden | CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN |
Grote ijle matrices oplossen met relatief efficiënt geheugengebruik. |
| Preconditioners voor iteratieve methoden | SSOR, diagonale schaling, BILU, AMG, SAINV, RIF | De convergentie van iteratieve methoden verbeteren. Niet gebruikt met directe methoden. |
| Directe methoden | MUMPS, MKL |
Lineaire vergelijkingen robuust oplossen via matrixfactorisatie. |
| MPC-verwerkingsmethoden | Penaltymethode, MPC-CG-methode, expliciete DOF-eliminatie | Meerpuntsbeperkingen in het lineaire stelsel opnemen. |
| Eliminatie van contact-DOF's | Automatisch, altijd ingeschakeld | Regelt de verwerking van contactvrijheidsgraden die door SLAGRANGE-contact worden toegevoegd. |
| Hulpfuncties | Schatting van het conditiegetal, matrixdump, logging | Ondersteunen foutopsporing, beoordeling van convergentie en prestatie-evaluatie. |
Voor parallelle uitvoering kan MPI-parallellisme op basis van domeindecompositie worden gecombineerd met OpenMP-threadparallellisme. Iteratieve methoden zijn de standaardkeuze voor grootschalige parallelle analyses, terwijl directe methoden worden gebruikt wanneer de vereiste bibliotheken zijn gekoppeld en een robuustere oplossing nodig is.
Een solver en preconditioner kiezen¶
Bepaal eerst of een iteratieve of directe methode wordt gebruikt. Als een iteratieve methode wordt gekozen, kies dan vervolgens een preconditioner.
| Beslissingsfactor | Aanbevolen benadering |
|---|---|
| Probleemgrootte | Directe methoden zijn stabiel en eenvoudig te gebruiken voor kleine tot middelgrote problemen. Iteratieve methoden zijn geheugenefficiënter voor grote problemen. |
| Matrixsymmetrie | Overweeg CG voor symmetrische positief-definiete problemen. Overweeg voor niet-symmetrische problemen BiCGSTAB, GMRES, GPBiCG of vergelijkbare methoden. |
| Parallelle omgeving | Combineer bij MPI-parallellisme een iteratieve methode met domeindecompositie. Overweeg voor preconditionering bij OpenMP-parallellisme een multicolor-SSOR-implementatie. |
| Preconditioner (bij gebruik van een iteratieve methode) | Probeer eerst de standaard-SSOR en overweeg daarna AMG. SSOR heeft een lage rekenlast wanneer de convergentie goed is; AMG is geschikt voor complexe, grootschalige problemen. |
| Contact en MPC | In analyses met contact of meerpuntsbeperkingen beïnvloedt de keuze van MPC-verwerkingsmethode en eliminatie van contact-DOF's de convergentie en robuustheid. |
| Externe bibliotheken | MUMPS, MKL en AMG zijn beschikbaar in builds die aan de overeenkomstige bibliotheken zijn gekoppeld. |
Voor standaardanalyses zijn de standaard convergentietolerantie, het maximale aantal iteraties en de diagonale correctiecoëfficiënt voor de preconditioner doorgaans voldoende. Alleen wanneer de convergentie traag is of de oplossing divergeert, moet u achtereenvolgens de iteratieve methode, preconditioner, MPC-verwerkingsmethode en eliminatie van contact-DOF's heroverwegen. Zie de trefwoordreferentie van !SOLVER voor parameterwaarden en syntaxis.
Iteratieve methoden¶
Iteratieve methoden lossen grote ijle stelsels op door de oplossing herhaaldelijk bij te werken via matrix-vectorproducten en preconditionering. FrontISTR biedt de volgende iteratieve methoden.
| Iteratieve methode | Typische toepassing | Opmerkingen |
|---|---|---|
CG |
Symmetrische positief-definiete problemen | Een standaardkandidaat voor structurele analyses en warmtegeleidingsanalyses. |
BiCGSTAB |
Niet-symmetrische problemen | Een kandidaat wanneer contact of gekoppelde effecten sterke asymmetrie veroorzaken. |
GMRES |
Niet-symmetrische problemen | Wordt gebruikt met een opgegeven grootte van de Krylov-deelruimte. |
GPBiCG |
Niet-symmetrische problemen | Wordt gebruikt als verbeterde methode binnen de BiCGSTAB-familie. |
GMRESR |
Niet-symmetrische problemen, geavanceerde toepassingen | Een optie die GMRES in geneste vorm gebruikt. |
GMRESREN |
Niet-symmetrische problemen, geavanceerde toepassingen | Een recursieve variant binnen de GMRESR-familie. |
CG veronderstelt dat de matrix symmetrisch positief-definiet is. Als wrijvingscontact, niet-symmetrische verwerking van beperkingen, koppelingseffecten of vergelijkbare factoren sterke asymmetrie introduceren, overweeg dan BiCGSTAB, GMRES, GPBiCG of een andere niet-symmetrische solver. Bij GMRES kan een grotere Krylov-deelruimte de convergentie verbeteren, maar ook het geheugengebruik verhogen.
Wanneer METHOD2 is opgegeven, kan FrontISTR overschakelen op een alternatieve iteratieve methode als CG divergeert of faalt. Deze functie is een fallback voor gevallen waarin CG de primaire solver is; de alternatieve methode gebruikt dezelfde overige instellingen en gegevensregels als de primaire solver.
Preconditionering¶
Preconditionering transformeert de coëfficiëntenmatrix om de convergentie van een iteratieve methode te verbeteren en wordt alleen toegepast wanneer een iteratieve methode is geselecteerd. Directe methoden gebruiken geen preconditionering. Zelfs bij dezelfde iteratieve methode kan de keuze van preconditioner het aantal iteraties en de rekentijd die voor convergentie nodig zijn aanzienlijk veranderen.
| Preconditioner | Kenmerken | Typische toepassing |
|---|---|---|
| SSOR | Standaardpreconditioner; ondersteunt multicolor-ordening. | Eerste kandidaat om te proberen; veel gebruikt in structurele analyse. |
| Diagonale schaling | Lichtgewicht preconditioner die diagonale elementen gebruikt. | Wanneer lage rekenkosten de voorkeur hebben. |
| BILU | Blokgewijze incomplete LU-factorisatie. | Een kandidaat voor problemen die met SSOR moeilijk convergeren. |
| AMG | Algebraïsche multigrid met Trilinos-ML. | Een kandidaat voor grootschalige problemen of problemen die door hiërarchische foutcomponenten worden gedomineerd. |
| SAINV | Sparse Approximate Inverse. | Een gespecialiseerde preconditioneringsoptie voor contactproblemen of omgevingen met gedistribueerd geheugen. |
| RIF | Robust Incomplete Factorization. | Een andere optie voor incomplete factorisatie. |
SSOR is de standaardkeuze en onder OpenMP-parallellisme wordt een versie met multicolor-ordening gebruikt. Diagonale schaling is lichtgewicht, hoewel de verbetering van de convergentie afhangt van het probleem. BILU is geïmplementeerd als blokgewijze incomplete LU-factorisatie en ondersteunt ook matrices met een algemeen aantal vrijheidsgraden. Voor de BILU-familie bestaat een pad dat bij divergentie van een iteratieve methode automatisch de diagonale correctiecoëfficiënt SIGMA_DIAG verhoogt en opnieuw probeert; zie de trefwoordreferentie voor de specificatie van de waarde.
AMG gebruikt Trilinos-ML, dus ML moet tijdens het bouwen zijn ingeschakeld. Smoothers, multigridcycli, coarsening-methoden en andere instellingen kunnen worden opgegeven; zie de trefwoordreferentie voor gedetailleerde waarden. Wanneer SAINV wordt gebruikt in een parallelle analyse met contact- of MPC-beperkingen, kan de overlapdiepte voor domeindecompositie de convergentie beïnvloeden.
Directe methoden¶
Directe methoden lossen lineaire vergelijkingen op door de coëfficiëntenmatrix te factoriseren. Omdat ze niet afhankelijk zijn van een iteratieaantal, zijn ze robuust en kunnen ze een stabiele keuze vormen voor analyses met contact- of beperkingsvoorwaarden. Hun geheugengebruik neemt echter toe met de probleemgrootte.
| Directe methode | Parallelle omgeving | Toepassing |
|---|---|---|
MUMPS |
MPI-parallel | Lost ijle matrices op met een directe methode in omgevingen met gedistribueerd geheugen. |
MKL |
Intel MKL / OpenMP | Directe solver gebaseerd op Intel MKL. Intern wordt Intel PARDISO gebruikt. Bij meerdere MPI-processen wordt het Cluster MKL-pad gebruikt. DIRECTmkl is een alias van MKL. |
Directe methoden kunnen zowel voor symmetrische als niet-symmetrische matrices worden gebruikt. MUMPS en MKL vereisen dat de overeenkomstige bibliotheken tijdens het bouwen zijn gekoppeld. Ze kunnen niet worden gebruikt in omgevingen zonder die bibliotheken; zie daarom de bouwgids voor de vereiste afhankelijkheden en CMake-opties.
FrontISTR bevat ook een ingebouwd direct-solverpad dat geen externe bibliotheek gebruikt, maar voor gewone analyses waarvoor een directe methode nodig is, moeten MUMPS of MKL normaliter als eerste worden overwogen.
Preconditionering wordt niet toegepast op directe methoden. Zelfs als in !SOLVER een preconditioner is opgegeven, wordt deze op het direct-solverpad niet geraadpleegd.
MPC-verwerkingsmethoden¶
De MPC-verwerkingsmethode bepaalt hoe vrijheidsgraden die door meerpuntsbeperkingen zijn verbonden in de lineaire vergelijkingen worden opgenomen. Zelfs met dezelfde beperkingsvergelijkingen in de invoergegevens verandert de verwerkingsmethode de eigenschappen en het convergentiegedrag van de coëfficiëntenmatrix.
| MPC-verwerkingsmethode | Positionering | Standaardgebruik |
|---|---|---|
| Penaltymethode | Voldoet bij benadering aan de beperkingen door grote stijfheidstermen aan de beperkingsvergelijkingen toe te voegen. | Standaard voor directe methoden. |
| MPC-CG-methode | Verouderde methode die matrix-vectorproducten met beperkingen binnen de iteratieve solver verwerkt. | Afgeraden. |
| Expliciete DOF-eliminatie | Elimineert beperkte vrijheidsgraden en lost het gereduceerde lineaire stelsel op. | Standaard voor iteratieve methoden. |
De penaltymethode is standaard voor directe methoden, terwijl expliciete DOF-eliminatie standaard is voor iteratieve methoden. De MPC-CG-methode is een verouderde compatibiliteitsoptie en wordt voor nieuwe analyses niet aanbevolen; gebruik normaal gesproken expliciete DOF-eliminatie of de standaardverwerking voor de geselecteerde directe methode.
De MPC-verwerkingsmethode kan expliciet worden opgegeven met MPCMETHOD in !SOLVER. Zie de trefwoordreferentie voor de betekenis en syntaxis van elke waarde.
Eliminatie van contact-DOF's¶
Eliminatie van contact-DOF's reduceert de extra contactvrijheidsgraden die door SLAGRANGE-contact worden geïntroduceerd voordat het stelsel aan de lineaire solver wordt doorgegeven. Het elimineren van deze contactvrijheidsgraden kan de eigenschappen van het lineaire stelsel dat door een iteratieve methode wordt verwerkt verbeteren.
In de standaard automatische modus is eliminatie van contact-DOF's ingeschakeld voor iteratieve methoden en uitgeschakeld voor directe methoden. Voor directe methoden is een pad beschikbaar dat het vergrote stelsel met de contactvrijheidsgraden rechtstreeks oplost.
Wanneer CONTACT_ELIM expliciet wordt opgegeven, kan eliminatie van contact-DOF's ook worden uitgevoerd wanneer een directe methode wordt gebruikt. Zie de pagina Contact en inbedding voor keuzes van contacttype, contactpaar en contactalgoritme aan de invoerzijde.
Hulpfuncties¶
Schatting van het conditiegetal, matrixdumps en logging kunnen worden gebruikt om convergentie en prestaties van de solver te onderzoeken. Deze functies zijn niet nodig voor normale analyses en worden vooral voor foutopsporing of prestatie-evaluatie ingeschakeld.
| Functie | Doel | Opmerkingen |
|---|---|---|
| Schatting van het conditiegetal | Geeft een indicator van het conditiegetal voor CG en GMRES. |
Beschikbaar in builds waarin LAPACK is ingeschakeld. |
| Matrixdump | Slaat de matrix en rechterzijde op die aan de solver worden doorgegeven. | Ondersteunt de formaten Matrix Market, CSR en BSR. |
DUMPEXIT |
Beëindigt de analyse nadat de matrix is gedumpt. | Gebruikt wanneer alleen de matrix voor externe verificatie nodig is. |
ITERLOG |
Geeft de convergentiegeschiedenis van een iteratieve methode weer. | Wordt gebruikt om resttrends te inspecteren. |
TIMELOG |
Geeft de rekentijd van de solver weer. | VERBOSE geeft een gedetailleerdere uitsplitsing. |
STEPLOG |
Geeft stapinformatie weer. | Wordt gebruikt om de analyseprocedure te inspecteren. |
Met een matrixdump kan de coëfficiëntenmatrix die door de analyse is samengesteld met externe hulpmiddelen worden geïnspecteerd. Wanneer DUMPEXIT is ingeschakeld, eindigt de analyse nadat de matrix en rechterzijde zijn opgeslagen. Schatting van het conditiegetal is een experimentele functie die beschikbaar is met CG en GMRES en kan worden gebruikt om het convergentiegedrag te diagnosticeren.
Gerelateerde onderwerpen¶
- Lineaire solver (theorie) — Wiskundige principes van iteratieve methoden en preconditionering.
- Niet-lineaire iteratie en tijdsintegratie — Raamwerk voor Newton-iteraties, contactiteraties en tijdsintegratie dat de lineaire solver aanroept.
- Domeindecompositie — MPI-parallelle analyse en instellingen voor overlapdiepte.
- Contact en inbedding — Selectie van contacttypen en contactalgoritmen.
- !SOLVER — Waarden en syntaxis van solver- en preconditionerparameters.
- Vereiste en optionele afhankelijkheidsbibliotheken — Afhankelijkheden zoals
MUMPS,MKL(Intel PARDISO), Trilinos-ML en LAPACK.