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 Dr.-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, Z88I4.TXT und Z88I6.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)
Z88I5.TXT (Strecken- und Flächenlasten, wenn
vorhanden)
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.