Zum Inhalt

Solver und Vorkonditionierung

Der lineare Solver von FrontISTR ist so aufgebaut, dass ein direktes oder ein iteratives Verfahren gewählt wird, um die linearen Gleichungen zu lösen; bei einem iterativen Verfahren wird zusätzlich eine Vorkonditionierung kombiniert. Die MPC-Behandlungsmethode und die Elimination der Kontakt-Freiheitsgrade sind zusätzliche Auswahlmöglichkeiten, die festlegen, in welcher Form ein lineares System mit Mehrpunktzwangsbedingungen oder Kontaktbedingungen behandelt wird.

Gesamtüberblick der Funktion

Solver und Vorkonditionierung setzen sich aus den folgenden Auswahlmöglichkeiten zusammen. Zunächst wird als linearer Solver entweder ein iteratives oder ein direktes Verfahren gewählt, und nur wenn ein iteratives Verfahren gewählt wird, wird zusätzlich eine Vorkonditionierung kombiniert.

Kategorie Wesentliche Optionen Rolle
Iterative Verfahren CG, BiCGSTAB, GMRES, GPBiCG, GMRESR, GMRESREN Lösen großskalige, dünnbesetzte Matrizen speichereffizient.
Vorkonditionierung für iterative Verfahren SSOR, Diagonalskalierung, BILU, AMG, SAINV, RIF Verbessert die Konvergenz der iterativen Verfahren. Wird bei direkten Verfahren nicht verwendet.
Direkte Verfahren MUMPS, MKL Lösen die linearen Gleichungen durch Zerlegung robust.
MPC-Behandlungsmethode Penalty-Verfahren, MPC-CG-Verfahren, explizite Freiheitsgrad-Elimination Bringt Mehrpunktzwangsbedingungen in das lineare System ein.
Elimination der Kontakt-Freiheitsgrade Automatisch, stets aktiv Steuert die Behandlung der durch SLAGRANGE-Kontakt hinzugefügten Kontakt-Freiheitsgrade.
Zusatzfunktionen Kondition­sschätzung, Matrixdump, Protokollausgabe Unterstützt Debugging, Konvergenzprüfung und Leistungsbewertung.

Bei paralleler Ausführung lassen sich MPI-Parallelität durch Gebietszerlegung und OpenMP-Thread-Parallelität kombinieren. Iterative Verfahren sind die Standardwahl für großskalige parallele Analysen, während direkte Verfahren in Umgebungen mit gelinkter Bibliothek eingesetzt werden, wenn eine robustere Lösung benötigt wird.

Auswahl von Solver und Vorkonditionierung

Zunächst wird entschieden, ob ein iteratives oder ein direktes Verfahren verwendet wird; wird ein iteratives Verfahren gewählt, wird anschließend eine Vorkonditionierung gewählt.

Entscheidungsachse Empfohlene Denkweise
Problemgröße Bei kleinen bis mittleren Problemgrößen ist ein direktes Verfahren stabil und einfach zu handhaben. Bei großen Problemgrößen ist ein iteratives Verfahren speichereffizienter.
Symmetrie der Matrix Bei symmetrischen, positiv definiten Problemen CG in Betracht ziehen. Bei nichtsymmetrischen Problemen BiCGSTAB, GMRES, GPBiCG usw. in Betracht ziehen.
Parallele Umgebung Bei MPI-Parallelität ein iteratives Verfahren mit Gebietszerlegung kombinieren. Bei Vorkonditionierung unter OpenMP-Parallelität eine mehrfarbige (multicolor) SSOR-Variante in Betracht ziehen.
Vorkonditionierung (bei Wahl eines iterativen Verfahrens) Zunächst das voreingestellte SSOR ausprobieren, danach AMG prüfen. Bei guter Konvergenz ist SSOR rechnerisch leichtgewichtig; für komplexe, großskalige Probleme ist die AMG-Vorkonditionierung geeignet.
Kontakt/MPC Bei Analysen mit Kontakt oder Mehrpunktzwangsbedingungen beeinflusst die Wahl der MPC-Behandlungsmethode und der Elimination der Kontakt-Freiheitsgrade Konvergenz und Robustheit.
Externe Bibliotheken MUMPS, MKL und AMG werden in einem Build verwendet, in dem die entsprechenden Bibliotheken gelinkt sind.

Bei einer Standardanalyse funktionieren Konvergenzkriterium, maximale Iterationszahl und der Diagonalkorrekturkoeffizient der Vorkonditionierung mit den Standardwerten ausreichend gut. Nur wenn die Konvergenz langsam ist oder die Lösung divergiert, sollten der Reihe nach das iterative Verfahren, die Vorkonditionierung, die MPC-Behandlungsmethode und die Elimination der Kontakt-Freiheitsgrade überprüft werden. Werte und Schreibweise der Parameter sind in der Keyword-Referenz unter !SOLVER zu finden.

Iterative Verfahren

Iterative Verfahren lösen großskalige, dünnbesetzte Matrizen, indem sie die Lösung durch wiederholte Matrix-Vektor-Produkte und Vorkonditionierung aktualisieren. FrontISTR bietet folgende iterative Verfahren zur Auswahl.

Iteratives Verfahren Anwendungsrichtwert Anmerkung
CG Symmetrische, positiv definite Probleme Ein Standardkandidat für Struktur- und Wärmeleitungsanalysen.
BiCGSTAB Nichtsymmetrische Probleme Ein Kandidat, wenn Kontakt oder Kopplung eine starke Nichtsymmetrie erzeugen.
GMRES Nichtsymmetrische Probleme Wird mit angegebener Krylov-Unterraumgröße verwendet.
GPBiCG Nichtsymmetrische Probleme Wird als verbessertes Verfahren der BiCGSTAB-Familie eingesetzt.
GMRESR Nichtsymmetrische Probleme, fortgeschrittene Anwendungen Eine Option, die GMRES geschachtelt verwendet.
GMRESREN Nichtsymmetrische Probleme, fortgeschrittene Anwendungen Eine rekursive Variante der GMRESR-Familie.

CG setzt voraus, dass die Matrix symmetrisch und positiv definit ist. Wenn durch reibungsbehafteten Kontakt, nichtsymmetrische Zwangsbedingungsbehandlung, Kopplungseffekte usw. eine starke Nichtsymmetrie auftritt, sollten BiCGSTAB, GMRES, GPBiCG u. Ä. in Betracht gezogen werden. Bei GMRES kann eine Vergrößerung der Krylov-Unterraumgröße die Konvergenz verbessern, erhöht jedoch auch den Speicherbedarf.

Wird METHOD2 angegeben, kann auf ein alternatives iteratives Verfahren umgeschaltet werden, wenn CG divergiert oder abbricht. Diese Funktion ist ein Fallback für den Fall, dass CG als Hauptsolver verwendet wird; die übrigen Einstellungswerte und Datenzeilen sind dieselben wie beim Hauptsolver.

Vorkonditionierung

Die Vorkonditionierung ist eine Verarbeitung, die die Koeffizientenmatrix transformiert, um die Konvergenz eines iterativen Verfahrens zu verbessern, und wird nur angewendet, wenn ein iteratives Verfahren gewählt ist. Bei direkten Verfahren wird keine Vorkonditionierung verwendet. Selbst beim gleichen iterativen Verfahren können sich die Anzahl der bis zur Konvergenz benötigten Iterationen und die Rechenzeit je nach gewählter Vorkonditionierung erheblich ändern.

Vorkonditionierung Merkmale Anwendungsrichtwert
SSOR Standardvorkonditionierung. Unterstützt Multicolor-Ordering. Erster zu probierender Kandidat. In der Strukturanalyse weit verbreitet.
Diagonalskalierung Leichtgewichtige Vorkonditionierung, die Diagonalelemente verwendet. Wenn geringe Rechenkosten erwünscht sind.
BILU Blockweise unvollständige LU-Zerlegung. Ein Kandidat für Probleme, die mit SSOR schwer konvergieren.
AMG Algebraisches Mehrgitterverfahren mit Trilinos-ML. Ein Kandidat für großskalige Probleme oder Probleme, bei denen hierarchische Fehlerkomponenten dominieren.
SAINV Sparse Approximate Inverse. Ein Kandidat für eine spezielle Vorkonditionierung bei Kontaktproblemen oder in verteilten Umgebungen.
RIF Robust Incomplete Factorization. Eine weitere Alternative im Bereich unvollständiger Zerlegungen.

SSOR ist die Standardoption, und unter OpenMP-Parallelität wird die Multicolor-Ordering-Version verwendet. Die Diagonalskalierung ist leichtgewichtig, ihre Konvergenzverbesserung hängt jedoch vom Problem ab. BILU ist als blockweise unvollständige LU-Zerlegung implementiert und unterstützt auch Matrizen mit allgemeiner Anzahl von Freiheitsgraden. Für die BILU-Familie existiert ein Pfad, der bei Divergenz des iterativen Verfahrens den Diagonalkorrekturkoeffizienten SIGMA_DIAG automatisch erhöht und einen erneuten Versuch unternimmt; die Angabe des Werts wird der Keyword-Referenz überlassen.

AMG verwendet Trilinos-ML, weshalb ML zum Build-Zeitpunkt aktiviert sein muss. Smoother, Mehrgitterzyklen, Coarsening-Verfahren usw. lassen sich angeben, die detaillierten Werte werden jedoch der Keyword-Referenz überlassen. Wird SAINV bei einer parallelen Analyse mit Kontakt oder MPC verwendet, kann die bei der Gebietszerlegung verwendete Überlapptiefe die Konvergenz beeinflussen.

Direkte Verfahren

Ein direktes Verfahren löst die linearen Gleichungen durch Zerlegung der Koeffizientenmatrix. Da es nicht von einer Iterationszahl abhängt, ist es robust und stellt bei Analysen mit Kontakt oder Zwangsbedingungen eine stabile Wahl dar. Andererseits nimmt der Speicherbedarf mit zunehmender Problemgröße zu.

Direktes Verfahren Parallele Umgebung Anwendung
MUMPS MPI-Parallelität Löst dünnbesetzte Matrizen in verteilten Speicherumgebungen mittels direktem Verfahren.
MKL Intel MKL / OpenMP Das direkte Verfahren von Intel MKL. Intern läuft Intel PARDISO. Bei mehreren MPI-Prozessen wird der Cluster-MKL-Pfad verwendet. DIRECTmkl ist ein Alias von MKL.

Direkte Verfahren lassen sich sowohl für symmetrische als auch für nichtsymmetrische Matrizen einsetzen. MUMPS und MKL erfordern, dass die entsprechenden Bibliotheken zum Build-Zeitpunkt gelinkt sind. In Umgebungen ohne diese Bibliotheken lassen sie sich nicht verwenden; die erforderlichen abhängigen Bibliotheken und CMake-Optionen sind dem Build-Guide zu entnehmen.

FrontISTR verfügt auch über einen eingebauten direkten Lösungspfad ohne externe Bibliothek, doch für gewöhnliche Analysen, bei denen ein direktes Verfahren gewählt wird, sollten MUMPS oder MKL als Kandidaten dienen.

Bei direkten Verfahren wird keine Vorkonditionierung angewendet. Auch wenn in !SOLVER eine Vorkonditionierung angegeben ist, wird sie auf dem direkten Lösungspfad nicht berücksichtigt.

MPC-Behandlungsmethode

Die MPC-Behandlungsmethode ist die Art und Weise, wie durch Mehrpunktzwangsbedingungen verbundene Freiheitsgrade in die linearen Gleichungen eingebracht werden. Selbst bei gleichen Zwangsbedingungsgleichungen auf der Eingabeseite ändert die Behandlungsmethode die Eigenschaften der Koeffizientenmatrix und das Konvergenzverhalten.

MPC-Behandlungsmethode Einordnung Standardanwendung
Penalty-Verfahren Erfüllt die Zwangsbedingungsgleichungen näherungsweise durch Hinzufügen großer Steifigkeitswerte. Standard bei direkten Verfahren.
MPC-CG-Verfahren Herkömmliches Verfahren, das das Matrix-Vektor-Produkt mit Zwangsbedingungen innerhalb des iterativen Verfahrens behandelt. Nicht empfohlen.
Explizite Freiheitsgrad-Elimination Eliminiert die Zwangsfreiheitsgrade und löst das reduzierte lineare System. Standard bei iterativen Verfahren.

Bei direkten Verfahren ist das Penalty-Verfahren die Standardeinstellung, bei iterativen Verfahren die explizite Freiheitsgrad-Elimination. Das MPC-CG-Verfahren ist eine herkömmliche Option zur Kompatibilität, die für gewöhnliche neue Analysen nicht empfohlen wird; üblicherweise wird die explizite Freiheitsgrad-Elimination oder die Standardeinstellung des direkten Verfahrens verwendet.

Die MPC-Behandlungsmethode kann über MPCMETHOD in !SOLVER explizit angegeben werden. Bedeutung und Schreibweise der Werte sind der Keyword-Referenz zu entnehmen.

Elimination der Kontakt-Freiheitsgrade

Die Elimination der Kontakt-Freiheitsgrade ist eine Funktion, die die durch SLAGRANGE-Kontakt zusätzlich eingeführten Kontakt-Freiheitsgrade reduziert, bevor das System an den linearen Solver übergeben wird. Durch die Elimination der Kontakt-Freiheitsgrade können sich die Eigenschaften des vom iterativen Verfahren behandelten linearen Systems verbessern.

Im standardmäßigen automatischen Modus wird die Elimination der Kontakt-Freiheitsgrade bei Verwendung eines iterativen Verfahrens durchgeführt und bei Verwendung eines direkten Verfahrens nicht durchgeführt. Bei direkten Verfahren steht ein Pfad zur Verfügung, der das erweiterte System einschließlich der Kontakt-Freiheitsgrade unverändert behandelt.

Wird CONTACT_ELIM explizit angegeben, lässt sich die Elimination der Kontakt-Freiheitsgrade auch bei Verwendung eines direkten Verfahrens durchführen. Für die eingabeseitige Auswahl von Kontakttyp, Kontaktpaar und Kontaktalgorithmus siehe die Seite Kontakt und Einbettung.

Zusatzfunktionen

Um die Konvergenz und Leistung des Solvers zu untersuchen, lassen sich Konditionsschätzung, Matrixdump und Protokollausgabe verwenden. Diese sind für gewöhnliche Analysen nicht erforderlich und werden zu Zwecken des Debuggings oder der Leistungsbewertung aktiviert.

Funktion Verwendung Anmerkung
Konditionsschätzung Gibt bei CG und GMRES einen Indikator für die Kondition aus. Verfügbar in einem Build mit aktiviertem LAPACK.
Matrixdump Speichert die an den Solver übergebene Matrix und die rechte Seite in einer Datei. Unterstützt die Formate Matrix Market, CSR und BSR.
DUMPEXIT Beendet die Analyse nach dem Matrixdump. Wird verwendet, wenn nur die Matrix zur externen Prüfung entnommen werden soll.
ITERLOG Gibt den Konvergenzverlauf des iterativen Verfahrens aus. Wird verwendet, um den Verlauf des Residuums zu prüfen.
TIMELOG Gibt die Rechenzeit des Solvers aus. Bei VERBOSE wird eine detaillierte Aufschlüsselung ausgegeben.
STEPLOG Gibt Schrittinformationen aus. Wird zur Prüfung des Analyseablaufs verwendet.

Der Matrixdump ist eine Funktion, mit der die in der Analyse aufgebaute Koeffizientenmatrix mit externen Werkzeugen überprüft werden kann. Wird DUMPEXIT aktiviert, endet die Analyse zu dem Zeitpunkt, an dem Matrix und rechte Seite gespeichert wurden. Die Konditionsschätzung ist eine experimentelle Funktion, die bei CG und GMRES verwendet wird, um das Konvergenzverhalten zu diagnostizieren.

Verwandte Themen