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: