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: