2.2 DER ITERATIONSSOLVER Z88I1/Z88I2
HINWEIS:
Immer ohne Ausnahme FE- Berechnungen mit analytischen Überschlagsrechnungen,
Versuchsergebnissen, Plausibilitätsbetrachtungen und anderen
Überprüfungen kontrollieren !
Die vornehmlichste Aufgabe jedes FE- Programms ist die Berechnung
der Verschiebungen. Das erledigt der Iterationssolver. Die berechneten
Verschiebungen sind der Ausgangspunkt für eine Spannungs-
Berechnung mit Z88D bzw. Knotenkraft- Berechnung
mit Z88E.
Der Iterationssolver ist genau das Richtige für große
Strukturen. Für kleine und mittlere Strukturen wählen
Sie den direkten Solver Z88F.
Der Iterationssolver arbeitet nur mit den sog. Nicht- Nullelementen
- was ein absolutes Minimum an Speicherbedarf bedeutet - und besteht
aus zwei Teilen:
Iterationssolver Part 1: Z88I1: Er baut folgende Pointer für die untere Hälfte der Gesamt- Steifigkeitsmatrix GS auf:
Dazu wird zunächst eine Structure IJ aufgebaut, die dann
mit einem QSORT- Algorithmus sortiert (nach einer Idee von Dipl.-Ing
Frank Koch) wird. Dieser Schritt kann durchaus sehr viel Speicher
brauchen, aber da es reine Integer- Operationen sind, geschieht
dies relativ schnell.
Beispiel (vgl. Schwarz, H.R: Methode der finiten Elemente) : Sei
die untere Hälfte von GS
GS(1,1) | |||||
GS(2,1) | GS(2,2) | ||||
GS(3,2) | GS(3,3) | ||||
GS(4,1) | GS(4,4) | ||||
GS(5,1) | GS(5,3) | GS(5,5) | |||
GS(6,2) | GS(6,4) | GS(6,6) |
GS wird zu folgendem Vektor der Nicht- Nullelemente:
GS(1,1) | GS(2,1) | GS(2,2) | GS(3,2) | GS(3,3) | GS(4,1) | GS(4,4) |
GS(5,1) | GS(5,3) | GS(5,5) | GS(6,2) | GS(6,4) | GS(6,6) |
Damit wird IEZ:
1 | 1 | 2 | 2 | 3 | 1 | 4 | 1 | 3 | 5 | 2 | 4 | 6 |
und IP:
1 | 3 | 5 | 7 | 10 | 13 |
Die Structure IJ besteht aus MAXSOR Elementen, vgl. Speichersteuerdatei
Z88.DYN. Sie müssen vorab Speicher
MAXSOR für den eigentlichen Aufbau der Sparse- Matrix bereitstellen.
Es gibt leider keine Möglichkeit, diesen Speicherbedarf vorab
zu schätzen, aber Z88I1 teilt Ihnen mit, wenn dieser Wert
zu klein war. Sie müssen ihn dann in Z88.DYN erhöhen
und Z88I1 erneut starten. Den Wert MAXPUF (sorgt für ein
Zwischensortieren) in Z88.DYN stellen Sie so ein, daß er
etwa ein Viertel bis ein Zehntel des Wertes von MAXSOR hat, z.B.
so:
MAXSOR 5000000
MAXPUF 500000
Z88I1 schreibt die beiden Pointervektoren in eine Binärdatei
Z88O4.BNY, die recht groß werden kann.
Z88I1 teilt Ihnen mit, wieviel Speicher Sie für GS (= MAXGS)
und KOI (= MAXKOI) vorsehen müssen; dies in Z88.DYN
einstellen. Hier ein beispielhafter Ausschnitt aus Z88.DYN:
COMMON START
MAXGS 600000 das müssen Sie
vor Z88I2 einstellen
MAXKOI 132000 das müssen Sie vor Z88I2 einstellen
MAXK 11000
MAXE 33000
MAXNFG 32000
MAXNEG 32
MAXSOR 5000000 das müssen Sie vor Z88I1 einstellen
MAXPUF 500000 das müssen Sie vor Z88I1 einstellen
COMMON END
Bei großen Strukturen für Z88 gehen Sie also beim direkten
Solver in 3 oder mehr Schritten vor:
1. Z88I1 starten
2. Wenn Z88I1 sauber gelaufen ist, Werte für MAXGS und
MAXKOI ablesen und Z88.DYN ggf. korrigieren. Damit ist der
Speicher für den eigentlichen Solver Z88I2 eingestellt.
3. Wenn Z88I1 abbrach, weil MAXSOR zu niedrig war, MAXSOR in
Z88.DYN erhöhen und Z88I1 erneut starten. Wählen Sie
für MAXPUF etwa Viertel bis ein Zehntel des Wertes von MAXSOR.
Ggf. diesen Schritt solange wiederholen, bis Z88I1 sauber durchläuft.
Iterationssolver Part 2: Z88I2: Er berechnet die Elementsteifigkeitsmatrizen,
compiliert die Gesamt- Steifigkeitsmatrix, baut die Randbedingungen
ein, skaliert das Gleichungsystem und löst das (riesige)
Gleichungssystem mit dem Verfahren der Konjugierten Gradienten.
Zuvor wird vorkonditioniert, um eine schnellere Konvergenz zu
erreichen. Dabei können Sie wählen, ob mit einem SOR-
Schritt vorkonditioniert wird oder eine sog. Partielle Cholesky-
Zerlegung zur Vorkonditionierung eingesetzt wird. Standard ist
SOR- Vorkonditionierung, das braucht auch weniger Speicher.
Die Partielle Cholesky- Zerlegung (shiftet incomplete Cholesky
decomposition SIC) verwenden Sie nur in Sonderfällen.
1.) Konjugierte Gradienten mit SOR- Vorkonditionierung:
Windows: Z88I2 > Mode > Vorkon: Überrelaxation, Berechnung > Start
UNIX: z88i2 -s (Console) oder Solver: Z88I2 -S
(Z88COM)
2.) Konjugierte Gradienten mit SIC- Vorkonditionierung:
Windows: Z88I2 > Mode > Vorkon: unvoll. Cholesky Zer., Berechnung > Start
UNIX: z88i2 -c (Console) oder Solver: Z88I2 -C
(Z88COM)
Ferner müssen Sie noch drei Steuerwerte in die Steuerdatei Z88I4.TXT geben:
HINWEIS:
Die hier genannten Dateien Z88I1.TXT, Z88I2.TXT und Z88I4.TXT
sind in Kapitel 3 näher beschrieben.
Eingabedateien:
Z88I1.TXT (allgemeine Strukturdaten)
Z88I2.TXT (Randbedingungen)
Z88I4.TXT (Steuerdatei für den Iterationssolver
Part 2: Z88I2)
Ausgabedateien:
Z88O0.TXT (aufbereitete Strukturdaten für Dokumentation)
Z88O1.TXT (aufbereitete Randbedingungen für Dokumentation)
Z88O2.TXT (Verschiebungen)
Ferner werden generell die beiden Binärfiles Z88O1.BNY und
Z88O3.BNY erzeugt. Diese Binärfiles werden dann von Z88D
(Spannungsprozessor) und Z88E (Knoten- Kraftprozessor) genutzt.