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), eine Sektion für das Plotprogramm (PLOT START, PLOT 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, Z88I2, Z88X, Z88N und Z88P feststellen. Zu den jeweiligen Werten müssen Sie noch ca. 200 KByte für die Programm-Module addieren, was bei Windows und bei UNIX allerdings vernachlässigbar ist.

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 mit Option Test (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 in 2 Schritten vor:

1. MAXGS feststellen mit

Windows :Z88F > Mode > Testmode, Berechnung > Start

UNIX: z88f -t (Console) oder Z88F mit Option Test (Z88COM)

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

(Ablesen des Speicherbedarfs MAXGS und MAXKOI bei Windows. Bei UNIX sieht das sinngemäß aus)

Der Iterationssolver Z88I1 und Z88I2:

Hier gibt es keinen Testmode, denn der erste Teil des Iterationssolvers, d.h. Z88I1, ermittelt diesen Bedarf und zeigt ihn für den zweiten Part, d.h. Z88I2, an:

(Ablesen des Speicherbedarfs MAXGS und MAXKOI bei Windows. Bei UNIX sieht das sinngemäß aus)

Allerdings ist das Vorgehen beim Iterationssolver etwas subtiler, denn 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 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
`

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.

Stellen Sie sicher, daß Ihr Swapper-Space ausreichend ist. Gegebenenfalls einstellen:

Windows NT/95:

Start > Einstellungen > Systemsteuerung > System > Leistungsmerkmale > virtueller Arbeitsspeicher , ggf. > ändern. Die Größe der permanenten Auslagerungsdatei wählen Sie nach eigenen Vorstellungen.

UNIX:

Je nach System kann die Swap- Partition problemlos dynamisch vergrößert werden oder es muß ein zusätzliches Swap- File angelegt werden oder die Swap- Area muß gelöscht und vergrößert neu angelegt werden.

Ich empfehle eine Größe zwischen 100 und 1000 MByte. Der Wert hängt von der zu rechnender FE-Strukturgröße ab. Erhalten Sie bei einem Rechenmodul (meist von Z88F) eine Meldung "Nicht genügend dynamisches Memory", dann setzen Sie die Größe der Auslagerungsdatei hoch.

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 !

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!

Die mitgelieferten FEA-Beispieldateien kommen mit den gelieferten Standard-Einstellungen in Z88.DYN absolut aus. Sie nehmen dann in Z88.DYN Veränderungen vor, wenn Sie eigene, große Strukturen rechnen wollen.

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 vernachlässigen kann.

Zu beachten ist: Z88 arbeitet normalerweise bei
Gleitkomma- Zahlen mit doubles = 8 Bytes
Ganzzahlen mit longs = 4 Bytes.
Bei bestimmten UNIX- Maschinen können die Solvermodule so compiliert (Direktiven FR_XQUAD und FR_XLOLO) werden, daß sie mit
Gleitkomma- Zahlen mit long doubles = 16 Bytes
Ganzzahlen mit long longs = 8 Bytes.
rechnen. Nur für Spezialisten!

Speicherkritisch sind Z88F, Z88I1, Z88I2, Z88P, Z88X und Z88N. Für die Module Z88D,Z88E und Z88V gilt: Läuft Z88F bzw. Z88I1 und Z88I2, laufen auch diese Module.

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 anschliessen 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.

MAXSOR Nur für Iterationssolver Part 1, d.h. Z88I1. Z88I1 verwendet einen Vektor für Sortierzwecke, der die Größe MAXSOR 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.

MAXPUF Nur für Iterationssolver Part 1, d.h. Z88I1. Startet das Zwischensortieren. MAXPUF sollte ca. 1/4 bis 1/10 von MAXSOR betragen

COMMON END

Für Plotprogramm Z88P:

PLOT START

MFACCOMMON Folgende Werte aus COMMON werden mit dem hier stehenden Faktor multipliziert: MAXKOI, MAXE, MAXK. Standardfaktor 2. Ist für Überprüfungen von Eingabefiles, die der Netzgenerator erzeugt hat, sinnvoll.

MAXGP Maximale Anzahl Gaußpunkte für Spannungsplots. Beispiel: 200 Finite Elemente Typ 10, Integrationsordnung 3: Pro Element dann 3 x 3 x 3 = 27 Gaußpunkte/Element, also 27 x 200 = 5400 Gaußpunkte.

PLOT END

Für den Cuthill- McKee- Algorithmus:

CUTKEE START

MAXGRA Maximaler Grad der Knotenpunkte

MAXNDL Stufen des Algorithmus

CUTKEE END

DYNAMIC END

Wie schon erwähnt, können Sie mit Z88V feststellen, was die diversen Z88- Module an Speicher anfordern.

(Definierten Speicher bei Windows anzeigen lassen. Geht bei UNIX sinngemäß)