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 Mehrpunkt-Zwangsbedingungen oder Kontaktbedingungen behandelt wird.

Funktionsübersicht

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, explizite Freiheitsgrad-Elimination Bringt Mehrpunkt-Zwangsbedingungen 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 eine AMG-Vorkonditionierung geeignet. AMG ist als Trilinos-ML-Implementierung und als in HEC-MW integriertes SA-AMG verfügbar; die Wahl richtet sich nach der Build-Konfiguration.
Kontakt/MPC Bei Analysen mit Kontakt oder Mehrpunkt-Zwangsbedingungen beeinflusst die Wahl der MPC-Behandlungsmethode und der Elimination der Kontakt-Freiheitsgrade Konvergenz und Robustheit.
Externe Bibliotheken MUMPS, MKL und AMG (Trilinos-ML) sind in Builds verfügbar, in denen die entsprechenden Bibliotheken gelinkt sind. AMG (SA-AMG) ist in Builds mit aktiviertem LAPACK verfügbar.

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 dient als Ausweichlösung für den Fall, dass CG als Hauptsolver verwendet wird; die übrigen Einstellungswerte und Datenzeilen sind dieselben wie beim Hauptsolver.

CG, BiCGSTAB, GPBiCG und PipeCG aktualisieren den Residualvektor rekursiv. Dadurch sammeln sich über viele Iterationen Rundungsfehler an, und das rekursiv aktualisierte Residuum kann vom tatsächlichen Residuum abweichen. Um dies zu verhindern, wird der Residualvektor in bestimmten Intervallen aus der rechten Seite und dem Matrix-Vektor-Produkt neu berechnet. RECOMPUTE_RESIDUAL legt dieses Intervall fest. Ein längeres Intervall reduziert die Anzahl der Matrix-Vektor-Produkte, erhöht jedoch das Risiko, dass das rekursiv aktualisierte Residuum vom tatsächlichen Residuum abweicht und eine noch nicht konvergierte Lösung als konvergiert beurteilt wird. Umgekehrt erhöht ein zu kurzes Intervall nicht nur die Anzahl der Matrix-Vektor-Produkte, sondern kann auch die durch die Rekursion aufrechterhaltene Beziehung zwischen Residuum und Hilfsvektoren stören und damit die Konvergenz selbst verschlechtern. Der Standardwert jedes Verfahrens stellt einen Ausgleich zwischen diesen Effekten dar; wenn Sie ihn ändern, prüfen Sie den Konvergenzverlauf und das endgültige relative Residuum.

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 (Trilinos-ML) Algebraisches Mehrgitterverfahren mit der externen Bibliothek Trilinos-ML. Ein Kandidat für großskalige Probleme oder Probleme, bei denen hierarchische Fehlerkomponenten dominieren.
AMG (SA-AMG) In HEC-MW integriertes algebraisches Mehrgitterverfahren mit geglätteter Aggregation. Wie oben; ein Kandidat, wenn AMG ohne zusätzliche externe Bibliothek verwendet werden soll.
SAINV Dünnbesetzte Näherungsinverse. Ein Kandidat für eine spezielle Vorkonditionierung bei Kontaktproblemen oder in verteilten Umgebungen.
RIF Robuste unvollständige Faktorisierung. Eine weitere Alternative im Bereich unvollständiger Faktorisierungen.

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.

Für AMG (das algebraische Mehrgitterverfahren) stehen zwei Implementierungen zur Verfügung: eine mit der externen Bibliothek Trilinos-ML und das in HEC-MW integrierte SA-AMG. Beide Implementierungen sind unabhängig und unterscheiden sich hinsichtlich der erforderlichen Build-Konfiguration und der verfügbaren Optionen.

AMG mit Trilinos-ML setzt voraus, dass ML beim Build aktiviert ist. Glätter, Mehrgitterzyklus, Vergröberungsverfahren und weitere Einstellungen können angegeben werden; detaillierte Werte sind der Keyword-Referenz zu entnehmen.

SA-AMG ist ein algebraisches Mehrgitterverfahren mit geglätteter Aggregation zur Vorkonditionierung und benötigt Trilinos-ML nicht. Intern verwendet sie jedoch LAPACK; daher ist ein Build mit aktiviertem LAPACK erforderlich. Wird sie in einem Build ohne LAPACK ausgewählt, beendet sich das Programm, bevor die Analyse beginnt. Für die Lösung auf dem groben Gitter kann in Builds mit aktiviertem MUMPS MUMPS verwendet werden; andernfalls kommt das integrierte dichte direkte Verfahren zum Einsatz.

SA-AMG ist primär für symmetrische, positiv definite Systeme (CG) vorgesehen, unterstützt jedoch auch nichtsymmetrische reduzierte Systeme, die durch reibungsbehafteten Kontakt entstehen (BiCGSTAB, GMRES u. a.). Unterstützt werden 1 (Wärmeleitung), 2 (ebener Fall), 3 (Volumenkörper) und 6 (Schalen) Freiheitsgrade je Knoten; Matrizen mit einer von Knoten zu Knoten unterschiedlichen Zahl von Freiheitsgraden werden nicht unterstützt. Solver für das grobe Gitter, Mehrgitterzyklus, Glättergrad und weitere Optionen können angegeben werden; für Standardanalysen können die Vorgabewerte verwendet werden. Werte und Syntax sind der Keyword-Referenz zu entnehmen. In Builds mit aktivierter GPU-Unterstützung (OpenACC) wird die Anwendung der Vorkonditionierung auf der GPU ausgeführt.

Wird SAINV in einer parallelen Analyse mit Kontakt oder MPC verwendet, kann die bei der Gebietszerlegung verwendete Überlappungstiefe 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 Mehrpunkt-Zwangsbedingungen 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.
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 früher verfügbare MPC-CG-Verfahren wurde entfernt; bei Eingaben mit MPCMETHOD=2 wird eine Warnung ausgegeben und die Verarbeitung erfolgt mit diesen Standardeinstellungen.

Bei der expliziten Eliminierung von Freiheitsgraden werden auch die in der Modalanalyse und der expliziten dynamischen Analyse verwendeten konzentrierten Massen mit derselben Transformation wie die Steifigkeitsmatrix reduziert. Da die reduzierte Massenmatrix im Allgemeinen nicht diagonal ist, werden ihre Zeilensummen als konzentrierte Massen verwendet. Bei Kopplungs- oder Interpolationsbedingungen, deren Koeffizienten in der Zwangsgleichung die Summe 1 ergeben, wird die Masse des Slave-Freiheitsgrads proportional zu den Koeffizienten auf die Master-Freiheitsgrade verteilt.

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.
LOGLEVEL Gibt Diagnoseinformationen wie den Hierarchieaufbau von AMG-Vorkonditionierungen aus. Wird unabhängig von ITERLOG und TIMELOG angegeben. Größere Werte erhöhen die Ausgabemenge.

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