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, 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-preconditionering is geschikt voor complexe, grootschalige problemen. AMG is beschikbaar als Trilinos-ML-implementatie en als ingebouwde SA-AMG van HEC-MW; kies op basis van de buildconfiguratie. |
| 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 (Trilinos-ML) zijn beschikbaar in builds die aan de overeenkomstige bibliotheken zijn gekoppeld. AMG (SA-AMG) is beschikbaar in builds waarin LAPACK is ingeschakeld. |
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.
CG, BiCGSTAB, GPBiCG en PipeCG werken de restvector bij met een recurrente relatie. Daardoor stapelen afrondingsfouten zich tijdens de iteraties op en kan de berekende rest van de werkelijke rest gaan afwijken. Om dit te voorkomen wordt de restvector na een bepaald aantal iteraties opnieuw berekend uit het rechterlid en het matrix-vectorproduct. Deze periode kan met RECOMPUTE_RESIDUAL worden opgegeven. Een langere periode vermindert het aantal matrix-vectorproducten, maar vergroot het risico dat de recurrent bijgewerkte rest afwijkt van de werkelijke rest en dat een nog niet geconvergeerde oplossing als geconvergeerd wordt beoordeeld. Een te korte periode verhoogt daarentegen niet alleen het aantal matrix-vectorproducten, maar kan ook de door de recurrente relatie behouden samenhang tussen de rest en de hulpvectoren verstoren, waardoor de convergentie zelf verslechtert. De standaardwaarde houdt voor elke oplossingsmethode rekening met deze afweging; controleer na een wijziging de convergentiegeschiedenis en de uiteindelijke relatieve rest.
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 (Trilinos-ML) | Algebraïsche multigrid met de externe Trilinos-ML-bibliotheek. | Een kandidaat voor grootschalige problemen of problemen die door hiërarchische foutcomponenten worden gedomineerd. |
| AMG (SA-AMG) | In HEC-MW ingebouwde algebraïsche multigrid van het type gladgestreken aggregatie (Smoothed Aggregation). | Als hierboven; een kandidaat wanneer AMG zonder extra externe bibliotheek wordt gebruikt. |
| 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 (algebraïsche multigrid) heeft twee implementaties: één met de externe Trilinos-ML-bibliotheek en de in HEC-MW ingebouwde SA-AMG. Het zijn onafhankelijke implementaties met verschillende vereiste buildconfiguraties en beschikbare opties.
AMG met Trilinos-ML vereist dat ML tijdens het bouwen is ingeschakeld. De smoother, multigridcyclus, coarseningmethode en andere instellingen kunnen worden opgegeven; zie de trefwoordreferentie voor gedetailleerde waarden.
SA-AMG is een algebraïsche-multigridpreconditioner van het type gladgestreken aggregatie en vereist geen Trilinos-ML. Intern wordt echter LAPACK gebruikt, zodat een build met ingeschakeld LAPACK vereist is; als SA-AMG in een build zonder LAPACK wordt geselecteerd, eindigt de uitvoering zonder dat de analyse wordt gestart. Voor oplossingen op het grove rooster kan MUMPS worden gebruikt in builds waarin MUMPS is ingeschakeld; anders wordt de ingebouwde directe methode voor dichte matrices gebruikt.
SA-AMG is primair bedoeld voor symmetrische positief-definiete stelsels (CG), maar ondersteunt ook niet-symmetrische gereduceerde stelsels die door wrijvingscontact ontstaan (BiCGSTAB, GMRES en andere). Het ondersteunt 1 (warmtegeleiding), 2 (vlak), 3 (massief) en 6 (schaal) DOF’s per knoop, maar geen matrices waarbij het aantal DOF’s per knoop verschilt. De solver voor het grove rooster, de multigridcyclus, de graad van de smoother en andere opties kunnen worden opgegeven, maar voor standaardanalyses kunnen de standaardwaarden worden gebruikt. Zie de trefwoordreferentie voor waarden en syntaxis. In builds met ingeschakelde GPU (OpenACC) wordt de toepassingsfase van de preconditioner op de GPU uitgevoerd.
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. |
| 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 voorheen beschikbare MPC-CG-methode is verwijderd; bij invoer met MPCMETHOD=2 wordt een waarschuwing gegeven en wordt de verwerking volgens deze standaardinstellingen uitgevoerd.
Bij expliciete DOF-eliminatie wordt ook de geconcentreerde massa die in modale analyse en dynamische analyse met de expliciete methode wordt gebruikt, met dezelfde transformatie als de stijfheidsmatrix gereduceerd. Omdat de gereduceerde massamatrix in het algemeen niet diagonaal is, worden de rijsommen ervan als geconcentreerde massa gebruikt. Bij koppelings- of interpolatiebeperkingen waarbij de som van de coëfficiënten in de beperkingsvergelijking 1 is, wordt de massa van de slavevrijheidsgraad naar verhouding van de coëfficiënten over de mastervrijheidsgraden verdeeld.
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. |
LOGLEVEL | Geeft diagnostische informatie weer, zoals de hiërarchieopbouw van AMG-preconditioners. | Wordt onafhankelijk van ITERLOG en TIMELOG opgegeven. Hogere waarden vergroten de hoeveelheid uitvoer. |
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 tijdintegratie — Raamwerk voor Newton-iteraties, contactiteraties en tijdsintegratie dat de lineaire solver aanroept.
- Meshpartitionering — 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 afhankelijkheden — Afhankelijkheden zoals
MUMPS,MKL(Intel PARDISO), Trilinos-ML en LAPACK.