Zum Inhalt

!SOLVER

Solversteuerung

Erforderliche Steuerdaten.

Parameter

METHOD =    Lösungsverfahren (CG, BiCGSTAB, GMRES, GPBiCG, CR, DIRECT, DIRECTmkl, MUMPS)
            DIRECT     : Direktes Verfahren außer bei Kontaktanalyse (nur serielle Verarbeitung) (derzeit nicht verfügbar)
            DIRECTmkl  : Direktes Verfahren unter Verwendung von Intel MKL
            MUMPS      : Direktes Verfahren unter Verwendung von MUMPS
            Wenn ein direktes Verfahren ausgewählt ist, werden die Datenzeilen ignoriert.
            Iterative Verfahren für Probleme mit 3 Freiheitsgraden unterstützen threadparallele Ausführung mit OpenMP

PRECOND =   Vorkonditionierungsverfahren für iterative Solver (1, 2, 3, 5, 10, 11, 12, 22)
            1, 2       : (Block-)SSOR (mit Mehrfarbenordnung nur für Probleme mit 3 Freiheitsgraden)
            3          : (Block-)Diagonal Scaling
            5          : AMG unter Verwendung des Mehrgitter-Vorkonditionierungspakets ML
            10         : Block ILU(0)
            11         : Block ILU(1)
            12         : Block ILU(2)
            22         : AMG unter Verwendung des in HEC-MW integrierten SA-AMG (AMG mit geglätteter Aggregation)
            10, 11 und 12 sind nur für Probleme mit 3 Freiheitsgraden verfügbar
            22 ist nur in Builds mit aktiviertem LAPACK verfügbar
            Für threadparallele Ausführung mit OpenMP werden SSOR, Diagonal Scaling, ML oder SA-AMG empfohlen

ITERLOG =   Gibt an, ob der Konvergenzverlauf des iterativen Solvers ausgegeben wird          (YES/NO)(Standardwert: NO)

TIMELOG =   Gibt an, ob die Rechenzeit des Solvers ausgegeben wird                            (YES/NO/VERBOSE)(Standardwert: NO)

LOGLEVEL =  Ausgabestufe für Diagnoseinformationen des Vorkonditionierers                   (Ganzzahl)(Standardwert: keine Ausgabe)
            Wird unabhängig von ITERLOG und TIMELOG angegeben
            Ab 1 werden der Hierarchieaufbau und weitere Informationen für AMG-Vorkonditionierer (PRECOND=5,22) ausgegeben
            Ab 2 werden zusätzlich detailliertere Informationen (z. B. zur Speichernutzung) ausgegeben

USEJAD =    Gibt an, ob eine Ordnung für Vektorprozessoren verwendet wird                     (YES/NO)(Standardwert: NO)
            Nur wirksam, wenn bei einem Problem mit 3 Freiheitsgraden ein iteratives Verfahren verwendet wird

SCALING =   Gibt an, ob die Matrix so skaliert wird, dass die Diagonaleinträge 1 sind         (YES/NO)(Standardwert: NO)
            Nur wirksam, wenn bei einem Problem mit 3 Freiheitsgraden ein iteratives Verfahren verwendet wird

DUMPTYPE =  Format des Matrix-Dumps (NONE, MM, CSR, BSR) (hauptsächlich zum Debuggen)
            NONE : Kein Dump (Standardwert)
            MM   : Matrix-Market-Format
            CSR  : Compressed-Sparse-Row-(CSR)-Format
            BSR  : Blocked-CSR-Format

DUMPEXIT =  Beendet das Programm unmittelbar nach dem Matrix-Dump                             (YES/NO)(Standardwert: NO)

MPCMETHOD = Verfahren zur Behandlung von Mehrpunkt-Zwangsbedingungen (1, 3)
            1: Penalty-Verfahren (Standardwert bei Verwendung eines direkten Verfahrens)
            3: Explizite Elimination von Freiheitsgraden (Standardwert bei Verwendung eines iterativen Verfahrens)
            Das MPC-CG-Verfahren (2) wurde entfernt. Wird 2 angegeben, wird eine Warnung ausgegeben und das Standardverfahren verwendet.

ESTCOND =   Häufigkeit der Schätzung der Konditionszahl (experimentell)
            Die Konditionszahl wird in jedem angegebenen Iterationsintervall sowie am Ende der Iterationen geschätzt
            Bei Angabe von 0 erfolgt keine Schätzung

RECOMPUTE_RESIDUAL = Häufigkeit der Neuberechnung des Residualvektors
            Nur wirksam, wenn für METHOD CG, BiCGSTAB, GPBiCG oder PipeCG angegeben ist
            Iterative Verfahren aktualisieren den Residualvektor mit einer Rekursionsformel, wodurch sich Rundungsfehler akkumulieren
            In jedem angegebenen Iterationsintervall wird der Residualvektor aus {b}-[A]{x} neu berechnet
            Bei Angabe von 0 wird der Standardwert des jeweiligen Verfahrens verwendet (CG: 50, BiCGSTAB: 100, GPBiCG: 20, PipeCG: 50)
            Bei Angabe eines negativen Werts erfolgt keine periodische Neuberechnung
            Die Neuberechnung zur Bestätigung beim Erreichen des Konvergenzkriteriums wird unabhängig von dieser Einstellung immer durchgeführt
            Ein zu kurzes Intervall erhöht nicht nur die Anzahl der Matrix-Vektor-Produkte,
            sondern kann auch die Konvergenz verschlechtern oder dazu führen, dass keine Konvergenz erreicht wird
            Wenn der Standardwert geändert wird, sind der Konvergenzverlauf und das endgültige relative Residuum zu prüfen

METHOD2 =   Sekundäres Lösungsverfahren (BiCGSTAB, GMRES, GPBiCG) (experimentell)
            Nur wirksam, wenn für METHOD CG angegeben ist
            Wenn CG divergiert, wird automatisch auf das sekundäre Verfahren umgeschaltet und die Lösung fortgesetzt
            Für die übrigen Parameter und Datenzeilen werden dieselben Werte verwendet

CONTACT_ELIM = Legt fest, ob bei der Kontaktanalyse Freiheitsgrade eliminiert werden (0,1)
               0: Freiheitsgrad-Elimination nur bei Verwendung eines iterativen Verfahrens durchführen (Standardwert)
               1: Freiheitsgrad-Elimination immer durchführen (auch bei Verwendung eines direkten Verfahrens)

** Ab der 2. Zeile **

(2. Zeile) NITER, iterPREmax, NREST, NCOLOR_IN, RECYCLEPRE
Variablenname Typ Beschreibung
NITER I Anzahl der Iterationen (Standardwert: 100)
iterPREmax I Anzahl der Iterationen der Additive-Schwarz-Vorkonditionierung (Standardwert: 1)
(Empfohlener Wert: 1; bei einigen Parallelrechnungen kann 2 wirksam sein)
NREST I Anzahl der Krylov-Unterräume (Standardwert: 10)
(Nur wirksam, wenn GMRES als Lösungsverfahren ausgewählt ist)
NCOLOR_IN I Zielanzahl der Farben für die Mehrfarbenordnung (Standardwert: 10)
(Nur wirksam, wenn die Anzahl der OpenMP-Threads 2 oder größer ist)
RECYCLEPRE I Anzahl der Wiederverwendungen der Informationen zum Aufbau des Vorkonditionierers (Standardwert: 3)
(Nur bei nichtlinearer Analyse wirksam)
(3. Zeile) RESID, SIGMA_DIAG, SIGMA
Variablenname Typ Beschreibung
RESID R Abbruchfehler (Standardwert: 1.0e-8)
SIGMA_DIAG R Skalierungsfaktor für Diagonaleinträge bei der Berechnung der Vorkonditionierungsmatrix (Standardwert: 1.0)
(Wenn bei ILU-Vorkonditionierung eine Division durch null oder Divergenz auftritt, kann das Problem bei Angabe eines Werts größer als 1.0 konvergieren)
SIGMA R Nicht verwendet (Standardwert: 0.0)

Bei PRECOND=5 (optional)

Wenn für PRECOND weder 5 noch 22 angegeben ist, wird die 4. Zeile ignoriert.

(4. Zeile) ML_CoarseSolver, ML_Smoother, ML_MGCycle, ML_MaxLevels, ML_CoarseningScheme, ML_NumSweep
Variablenname Typ Beschreibung
ML_CoarseSolver I Grobgitter-Solver für ML (1: Smoother verwenden, 2: KLU (serielles direktes Verfahren), 3: MUMPS (paralleles direktes Verfahren)) (Standardwert: 1)
(Empfohlen: 3 oder 2 für schwierige Probleme, 1 für gewöhnliche Probleme)
ML_Smoother I ML-Smoother (1: Chebyshev, 2: SymBlockGaussSeidel, 3: Jacobi) (Standardwert: 1)
(Empfohlen: 1)
ML_MGCycle I ML-Mehrgitterzyklus (1: V-Zyklus, 2: W-Zyklus, 3: Full-V-Zyklus) (Standardwert: 1)
(Empfohlen: 2 für schwierige Probleme, 1 für gewöhnliche Probleme)
ML_MaxLevels I Maximale Anzahl der ML-Ebenen (Standardwert: 10)
(Für besonders schwierige Probleme einen direkten Grobgitter-Solver und 2 Ebenen verwenden (oder 3, wenn der Speicher nicht ausreicht); für gewöhnliche Probleme werden 10 empfohlen)
ML_CoarseningScheme I ML-Coarsening-Schema (1: UncoupledMIS, 2: METIS, 4: Zoltan, 5: DD) (Standardwert: 1)
(Empfohlen: 1 oder 5)
ML_NumSweep I Anzahl der ML-Smoother-Durchläufe (Polynomgrad bei Chebyshev) (Standardwert: 2)
(Empfohlen: 2 für Chebyshev, 1 für SymBlockGaussSeidel)

Bei PRECOND=22 (optional)

Wenn für PRECOND ein anderer Wert als 22 angegeben ist, wird die 5. Zeile ignoriert. Die 4. und 5. Zeile können jeweils vollständig weggelassen werden; außerdem können die am Ende einer Zeile stehenden Einträge weggelassen werden. Für jeden mit 0 angegebenen Eintrag wird der Standardwert verwendet.

Die Einträge 1 bis 7 der 4. Zeile stehen in derselben Reihenfolge wie in der Optionszeile für PRECOND=5 (ML), sodass die ML-Optionszeile unverändert wiederverwendet werden kann. Die Einträge 8 bis 10 sind SA-AMG-spezifisch.

(4. Zeile) SA_CoarseSolver, SA_Smoother, SA_MGCycle, SA_MaxLevels, (nicht verwendet), SA_ChebyDegree, SA_CoarseSize, SA_MaxAggSize, SA_GalerkinLowMem, (nicht verwendet)
Variablenname Typ Beschreibung
SA_CoarseSolver I Grobgitter-Solver (0: automatisch, 1: Smoother verwenden, 2: direktes Verfahren für dichte Matrizen, 3: MUMPS (paralleles direktes Verfahren)) (Standardwert: 0)
(Im Automatikmodus wird bei Builds mit aktiviertem MUMPS MUMPS verwendet, andernfalls das direkte Verfahren für dichte Matrizen)
SA_Smoother I Smoother (0 oder 1: Chebyshev) (Standardwert: 0)
(Nur Chebyshev wird unterstützt. Bei Angabe eines anderen Werts wird eine Warnung ausgegeben und Chebyshev verwendet)
SA_MGCycle I Mehrgitterzyklus (0: Standard (W-Zyklus), 1: V-Zyklus, 2: W-Zyklus) (Standardwert: 0)
(Der Full-V-Zyklus wird nicht unterstützt)
SA_MaxLevels I Maximale Anzahl der Ebenen (Standardwert: 20)
(nicht verwendet) I Position entsprechend dem ML-Coarsening-Schema. Da SA-AMG stets ungekoppelte Aggregation verwendet, wird bei einem Wert ungleich 0 eine Warnung ausgegeben und der Wert ignoriert
SA_ChebyDegree I Polynomgrad des Chebyshev-Smoothers (Standardwert: 2)
SA_CoarseSize I Grenzgröße des Grobgitters (Standardwert: 50000, wenn MUMPS als Grobgitter-Solver verwendet wird; andernfalls 100)
SA_MaxAggSize I Maximale Aggregatgröße (Standardwert: 96)
SA_GalerkinLowMem I Berechnungsverfahren für die Grobgittermatrix (0: normal (Geschwindigkeit hat Vorrang), positiver Wert: speichersparend) (Standardwert: 0)
(Bei unzureichendem Speicher während der Einrichtung einen positiven Wert angeben)
(nicht verwendet) I Für zukünftige Erweiterungen reserviert

Die 5. Zeile ist ausschließlich für SA-AMG vorgesehen und wird von ML nicht eingelesen.

(5. Zeile) SA_Theta, SA_ChebyAlpha, SA_Safety, SA_TaperK, SA_AggOrder, SA_MinAggSize, SA_Verify, SA_DumpVTK
Variablenname Typ Beschreibung
SA_Theta R Schwellenwert zur Bestimmung starker Verbindungen (Standardwert: 0.0)
(Bei 0.0 wird die Nichtnullstruktur der Matrix direkt als Graph verwendet)
SA_ChebyAlpha R Verhältnis zur Festlegung der Untergrenze des vom Chebyshev-Smoother behandelten Eigenwertintervalls (Standardwert: 20.0)
SA_Safety R Sicherheitsfaktor, der auf den geschätzten maximalen Eigenwert angewendet wird (Standardwert: 1.1)
SA_TaperK R Taper-Koeffizient K für die Vergröberung (Standardwert: 100)
(Ab Ebene 2 wird die Vergröberung so abgeschwächt, dass mindestens ungefähr K Aggregate verbleiben. Ein negativer Wert deaktiviert das Tapering)
SA_AggOrder R Durchlaufreihenfolge der Aggregation (0: Standard (BFS-Reihenfolge), 1: BFS-Reihenfolge, 2: Hash-Reihenfolge der Knotennummern (experimentell), 3: aufsteigende Reihenfolge des Knotengrads (experimentell), 4: absteigende Reihenfolge des Knotengrads (experimentell), negativer Wert: Reihenfolge der Knotennummern) (Standardwert: 0)
SA_MinAggSize R Mindestgröße eines Aggregats (Standardwert: 3)
SA_Verify R Gibt an, ob während der Einrichtung eine Selbstprüfung ausgeführt wird (0: nein, positiver Wert: ja) (Standardwert: 0) (hauptsächlich für die Fehlersuche)
SA_DumpVTK R Gibt an, ob die Aggregation der höchsten Ebene im VTK-Format ausgegeben wird (0: keine Ausgabe, positiver Wert: Ausgabe) (Standardwert: 0) (hauptsächlich für die Fehlersuche)

Anwendungsbeispiel

CG mit SSOR-Vorkonditionierung verwenden und die maximale Anzahl der Iterationen auf 10000 sowie den Abbruchfehler auf 1.0e-8 setzen

!SOLVER, METHOD=CG, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

GMRES mit SSOR-Vorkonditionierung verwenden und die Anzahl der Krylov-Unterräume auf 40 sowie die Zielanzahl der Farben für die Mehrfarbenordnung auf 100 setzen

!SOLVER, METHOD=GMRES, PRECOND=1, ITERLOG=YES, TIMELOG=YES
  10000, 1, 40, 100
  1.0e-8, 1.0, 0.0

CG mit ILU(0)-Vorkonditionierung verwenden und den Skalierungsfaktor für die Diagonaleinträge bei der Berechnung der Vorkonditionierungsmatrix auf 1.1 setzen

!SOLVER, METHOD=CG, PRECOND=10, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.1, 0.0

AMG von ML als Vorkonditionierer für CG verwenden

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

AMG von ML als Vorkonditionierer für CG und MUMPS als Grobgitter-Solver verwenden (für schwierige Probleme)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

AMG von ML als Vorkonditionierer für CG und den W-Zyklus als Mehrgitterzyklus verwenden (für schwierige Probleme)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  1, 1, 2

AMG von ML als Vorkonditionierer für CG und MUMPS als Grobgitter-Solver verwenden sowie die maximale Anzahl der Ebenen auf 2 setzen (für sehr schwierige Probleme)

!SOLVER, METHOD=CG, PRECOND=5, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3, 1, 1, 2

Das in HEC-MW integrierte SA-AMG als Vorkonditionierer für CG verwenden

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0

SA-AMG als Vorkonditionierer für CG und MUMPS als Grobgitter-Solver verwenden

!SOLVER, METHOD=CG, PRECOND=22, ITERLOG=YES, TIMELOG=YES
  10000, 1
  1.0e-8, 1.0, 0.0
  3

Bei einer Reibkontaktanalyse BiCGSTAB mit SA-AMG-Vorkonditionierung verwenden und die Hierarchie des AMG-Vorkonditionierers ausgeben

!SOLVER, METHOD=BiCGSTAB, PRECOND=22, ITERLOG=YES, TIMELOG=YES, LOGLEVEL=1
  10000, 1
  1.0e-8, 1.0, 0.0