## 1.4 DYNAMISCHER SPEICHER Z88

Speichersteuerdatei Z88.DYN und Filechecker Z88V

Alle Z88- Module fordern Memory dynamisch an. Obgleich Z88 mit Standardwerten in Z88.DYN geliefert wird, kann und soll der Anwender diese Werte anpassen. Dazu wird die Datei Z88.DYN editiert.

Ferner wird in Z88.DYN die Sprache definiert. Tragen Sie in eine Zeile, am besten zwischen DYNAMIC START und NET START, die gewünschte Sprache als GERMAN oder ENGLISH ein.

Z88.DYN beginnt mit dem Schlüssel DYNAMIC START und endet mit DYNAMIC END. Dazwischen gibt es eine Sektion für den Netzgenerator (NET START, NET END), eine für alle Module gemeinsame Sektion (COMMON START, COMMON END) und eine Sektion für das Cuthill-McKee-Programm (CUTKEE START, CUTKEE END). Dazwischen können beliebig Leerzeilen oder Kommentare sein, es werden nur die großgeschriebenen Schlüsselworte erkannt. Nach dem jeweiligen Schlüssel folgt eine Integerzahl, durch mindestens ein Leerzeichen getrennt. Die Reihenfolge der Schlüsselworte ist beliebig.

Mit dem Filechecker Z88V können Sie den in Z88.DYN definierten Datenspeicherbedarf für die speicherkritischen Module Z88F, Z88I1 und Z88I2 feststellen. Ein Anpassen der Speicheranforderung ist durchaus sinnvoll.

Fordern Sie aber nicht unnötig viel Speicher an, da dies, insbesonders bei virtuellem Memory, Geschwindigkeitseinbußen bedingt.

Bei großen Strukturen lassen Sie am besten einen Test laufen. Je nach Solver gehen Sie wie folgt vor:

Der direkte Cholesky-Solver Z88F:

Windows: Z88F > Mode > Testmode, Berechnung > Start

UNIX: z88f -t (Console) oder Z88F -T (Z88COM)

laufen. Erhalten Sie hier z.B. GS= 100.000, dann schreiben Sie in Z88.DYN für MAXGS vielleicht 120.000, aber nicht 1.000.000! Dann überschlagen Sie den Gesamtspeicherbedarf, wie weiter unten beschrieben, bzw. nutzen Sie Z88V.

Bei großen Strukturen für Z88 gehen Sie also beim direkten Solver in zwei Schritten vor:

1. MAXGS feststellen mit

Windows: Z88F > Mode > Testmode, Berechnung > Start

UNIX: z88f -t (Console) oder Z88F -T (Z88COM)

2. Z88.DYN ggf. korrigieren, Datenspeicherbedarf Z88F mit Z88V ermitteln

Ablesen des Speicherbedarfs MAXGS und MAXKOI bei Windows. Bei UNIX ähnlich.

Die Sparsematrix-Solver Z88I1/Z88I2 und Z88I1/Z88PAR :

Hier gibt es keinen Testmode, denn der erste Teil der Sparsematrix-Solvers, also Z88I1, ermittelt diesen Bedarf und zeigt ihn für den zweiten Part, d. h. Z88I2 oder Z88PAR, an:

Ablesen des Speicherbedarfs MAXGS und MAXKOI bei Windows. Bei UNIX ähnlich.

Allerdings ist das Vorgehen bei den Sparsematrix-Solvern etwas subtiler, denn Sie müssen vorab Speicher MAXIEZ 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.

Bei großen Strukturen für Z88 gehen Sie also bei den Sparsematrix-Solvern 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 bzw. Z88PAR eingestellt.

3. Wenn Z88I1 abbrach, weil MAXIEZ zu niedrig war, MAXIEZ in Z88.DYN erhöhen und Z88I1 erneut starten. Ggf. diesen Schritt solange wiederholen, bis Z88I1 sauber durchläuft.

Stellen Sie sicher, daß Ihr Swap-Space ausreichend ist. Windows: Start > Systemsteuerung > System > Erweitert > Systemleistung. LINUX: ggf. zweite Swap-Partition anlegen.

Von Z88 her gibt es keinerlei Grenzen für die Größe der Strukturen. Die maximale Größe wird nur durch den virtuellen Speicher Ihres Computers und Ihre Vorstellungskraft begrenzt! Ggf. müssen Sie bei sehr großen Strukturen auf 64-Bit Integers und Pointer übergehen (Z88 Versionen 64-Bit für Windows und LINUX), damit die internen Schleifenzähler nicht überlaufen.

Die Z88-Module prüfen, ob die vorgegebenen Werte für das aktuelle Problem ausreichen, bzw. Limits erreicht sind, und brechen ggf. ab. Bei kommentarlosem Abbruch eines Z88-Moduls dessen .LOG -Datei betrachten. Oft ist MAXKOI zu klein gewesen! In den .LOG- Dateien wird bei Erfolg der erforderliche Datenspeicher protokolliert, dazu kommt natürlich der Speicher für das eigentliche Programm, lokale Arrays und Stack, den man allerdings bei Windows und UNIX vernachlässigen kann. Beachte:

Z88 arbeitet bei den 32-Bit-Versionen Windows und LINUX mit

· Gleitkomma-Zahlen mit doubles = 8 Bytes und

· Ganzzahlen und Pointer mit longs = 4 Bytes.

Z88 arbeitet bei den 64-Bit-Versionen Windows und LINUX mit

· Gleitkomma-Zahlen mit doubles = 8 Bytes und

· Ganzzahlen und Pointer mit longs = 8 Bytes.

Bei bestimmten UNIX-Maschinen können die Solvermodule so compiliert (Compiler-Switches und Direktive FR_XQUAD, vgl. Kap. 1.3.2) werden, daß sie mit

· Gleitkomma-Zahlen mit long doubles = 16 Bytes

· Ganzzahlen mit 64-Bit longs = 8 Bytes.

rechnen. 64-Bit Integers können für sehr große Strukturen > 2~3 Mio. Freiheitsgrade ohne weiteres erforderlich sein, damit die internen Pointer- und Ganzzahl-Berechnungen noch funktionieren! Hingegen brauchen Gleitkomma-Zahlen mit Quad-Precision, d.h. 128 Bit, unverhältnismäßig viel Rechenzeit gegenüber Gleitkomma-Zahlen mit Double-Precision, d.h. 64 Bit. Tests mit einer SUN FIRE V890 mit Quad-Precision ergaben bei uns am Lehrstuhl eine fünf- bis zehnfache Verlängerung der Rechenzeit gegenüber Double-Precision. Ich würde also auf größeren Maschinen zu jeweils 64-Bit für Ganz- und Gleitkommazahlen raten.

Speicherkritisch sind Z88F, Z88I1 und Z88I2. Wenn diese Module laufen, läuft auch der Rest. Bei Z88PAR kann es während des Laufs zu Abbrüchen kommen, weil sehr viel Speicher ständig dynamisch nachgefordert wird. Wenn das passiert, starten Sie eben den Solver Z88I2.

Es folgt die allgemeine Beschreibung für Z88.DYN:

DYNAMIC START

Sprache einstellen:

GERMAN oder ENGLISH. Wird hier nichts bzw. falsch angewählt,

wird automatisch englische Sprache eingestellt.

Sektion Netzgenerator:

NET START

MAXSE Maximale Anzahl interner Knoten für FE- Netzerzeugung. Muß

deutlich höher sein als erzeugte FE- Knoten.

MAXESS Maximale Anzahl Superelemente

MAXKSS Maximale Anzahl Superknoten

MAXAN Maximale Anzahl von Knoten, die jeweils an ein Superelement

anschließen können. Der Standardwert von 15 hat sich selbst

für komplexe Raumstrukturen mit Hexaedern Nr. 10 bewährt.

Kann im Zweifelsfall hochgesetzt werden.

NET END

Gemeinsame Daten:

COMMON START

MAXGS Maximale Anzahl Plätze in der Gesamtsteifigkeitsmatrix.

Anzahl GS wird bei Z88F und Z88I1 ausgewiesen.

MAXKOI Maximale Anzahl Plätze im Koinzidenzvektor = Anzahl Knoten

pro Element mal Anzahl Finite Elemente. Beispiel: 200 Finite

Elemente Typ 10 = 20 Knoten/Element x 200 = 4000. Bei

gemischten Strukturen geht man von dem Elementtyp aus, der

die meisten Knoten hat und multipliziert mit der Gesamtanzahl

Elemente. Benötigte Anzahl NKOI wird bei Z88F und Z88I2

ausgewiesen.

MAXK Maximale Anzahl Knoten der Struktur.

MAXE Maximale Anzahl Elemente der Struktur.

MAXNFG Maximale Anzahl Freiheitsgrade der Struktur.

MAXNEG Maximale Anzahl Elastizitätsgesetze der Struktur.

MAXPR Maximale Anzahl der Flächenlasten

MAXRBD Maximale Anzahl Randbedingungen (nur für Z88O)

MAXIEZ Nur für Sparsematrix-Solver Part 1, d. h. Z88I1. Z88I1 verwendet

einen Vektor IEZ, der die Größe MAXIEZ hat.

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 erhöhen und Z88I1 erneut starten.

MAXGP Maximale Anzahl Gausspunkte (nur für Z88O)

COMMON END

Für den Cuthill- McKee- Algorithmus:

CUTKEE START

MAXGRA Maximaler Grad der Knotenpunkte

MAXNDL Stufen des Algorithmus

CUTKEE END

DYNAMIC END

Mit Z88V können Sie feststellen, was die diversen Z88-Module an Speicher anfordern: