2.9 DAS CUTHILL- McKEE PROGRAMM Z88H
Die Wahl der Knotennummerierung ist extrem wichtig für
den Aufbau der Gesamtsteifigkeitsmatrix, und ungünstige
Knotennummerierungen
können den Speicherbedarf ganz unnötigerweise stark
in die Höhe treiben.
Z88H kann den Speicherbedarf für den Direkten Cholesky Solver Z88F sehr merklich verringern; beim Iterationssolver Z88I1/Z88I2 sind die Verbesserungen viel geringer, da der Iterationssolver durch seine Nicht- Nullelemente Speicherung hier a-priori sehr günstig ist.
Grundsätzlich ist anzustreben, daß die sog.
Knotenzahldifferenz
je Element möglichst klein wird, d.h. die Knotennummern an
einem Finiten Element sollen alle ähnlich groß sein.
Das läßt sich nicht immer ganz vermeiden, denn bei
z.B. ringförmigen Strukturen entstehen, wenn man bei 0°
beginnt zu nummerieren und dann im Uhrzeigersinn weiterläuft,
an den "Stoßstellen", wenn man sich also 360°
nähert, dann zwangsläufig Elemente mit großen
Knotenzahldifferenzen.
3D- CAD- Programme enthalten mitunter sog. Automesher, die das
3D- Modell in finite Elemente zerlegen können. Das so erzeugte
Netz kann sodann in einem wählbaren Format passend für
diverse FEA- Programme abgespeichert werden. Viele dieser Automesher
erzeugen aber Netze mit extrem großen Knotenzahldifferenzen.
So erzeugt der Pro/ENGINEER- Modul Pro/MECHANICA
bei der Anforderung parabolischer
Tetraedernetze
intern zunächst Tetraeder mit linearem Ansatz (also statt
10 nur 4 Knoten) bei geraden Elementseiten. Dann werden einfach
Mittenknoten auf die Elementseiten gelegt, um Elemente mit 10
Knoten zu erzeugen. Diese Mittenknoten haben zwangsläufig
hohe Knotennummern, und da die Eckknoten zuerst da waren, weist
nun jedes Finite Element Eckknoten mit relativ niedrigen Knotennummern,
aber Mittenknoten mit relativ hohen Knotennummern auf. Bei Schalen Dreiecken parabolisch
sieht das nicht anders aus. Daher hat bei solchen mit dem Automesher
Pro/MECHANICA erzeugten Netzen jedes Finite Element hohe
Knotenzahldifferenzen.
Diese Netze müssen bei großen Strukturen in geeigneter
Weise umnummeriert werden, damit Finite Elemente mit kleinen
Knotenzahldifferenzen
entstehen. Hier sind in der Literatur verschiedenen Vorgehensweisen
bekannt geworden. Ein guter Kompromiß ist der sog. Cuthill-
McKee- Algorithmus, der von graphentheoretischen Überlegungen
ausgeht. Eine Abwandlung ist der RCMK- Algorithmus (reverse Cuthill-
McKee- Algorithmus). Für tiefergehende Erläuterungen
konsultieren Sie Schwarz, H.R.: Die Methode der finiten Elemente.
Das C-Programm Z88H basiert im Kern auf einem FORTRAN77- Programm
von H.R.Schwarz, das für den Gebrauch mit Z88 umgearbeitet
wurde. Der Rechenkern von H.R.Schwarz entscheidet intern, ob der
normale oder ggf. der umgekehrte Cuthill- McKee- Algorithmus genutzt
wird.
Der Cuthill- McKee Algorithmus Z88H ist eigentlich für FE-
Netze gedacht, die mit dem COSMOS- Konverter Z88G
erzeugt wurden. Aber er kann grundsätzlich für alle
Z88- Netze verwendet werden. Er liest die Z88- Eingabedateien
Z88I1.TXT (allgemeine Strukturdaten) und
Z88I2.TXT (Randbedingungen) ein, erstellt
davon Sicherheitskopien Z88I1.OLD und Z88I2.OLD und berechnet
dann modifizierte Eingabedateien Z88I1.TXT und Z88I2.TXT.
Experimente haben gezeigt, daß mitunter die Nummerierungen in Z88I1.TXT und Z88I2.TXT nach einem ersten Lauf von Z88H durch einen zweiten Lauf von Z88H weiter verbessert werden können. Ein dritter Lauf von Z88H scheint das Ergebnis wieder leicht zu verschlechtern. In Extremfällen erzeugt der Cuthill- McKee- Algorithmus, also Z88H, aber auch kontraproduktive Ergebnisse, d.h. deutlich schlechtere Nummerierungen, als sie die Ursprungsstruktur hatte. Hier müssen Sie einfach etwas probieren, denn der Cuthill- McKee- Algorithmus erzeugt nicht immer optimale Ergebnisse.
Und so gehen Sie gezielt vor:
1) Erstellen Sie ein FE- Netz, also die Eingabedateien
Z88I1.TXT und Z88I2.TXT. Das kann
- von Hand
- mit dem Z88- Netzgenerator Z88N (nur Z88I1.TXT, von Hand dann Z88I2.TXT erstellen)
- aus einem DXF- File mit Z88X
- aus einem COSMOS- File mit Z88G
generiert werden.
2) Passen Sie ggf. Z88.DYN an:
Sehr wichtig ist hier der Wert von MAXKOI (Anzahl der Knoten pro
Element * Elementanzahl), ferner MAXK, MAXE und MAXNFG.
3) Starten Sie Z88F mit der
Testoption,
also
Windows:Z88F > Mode > Testmode, Berechnung > Start
UNIX: z88f -t (Console) oder Z88F mit Option Test
Mode (Z88COM)
Lesen Sie nun die Zahl für GS ab, also erforderliche Anzahl
der Speicherplätze in der Gesamtsteifigkeitsmatrix (wenn
Sie diese Zahl mit 8 multiplizieren, haben Sie den Speicherbedarf
in Bytes).
4) Starten Sie Z88H.
5) Wiederholen Sie Schritt 3, d.h. Z88F mit Testoption,
und prüfen Sie, ob GS kleiner geworden ist. Das wird meist
der Fall sein, wenn Sie die Eingabefiles Z88I1.TXT und Z88I2.TXT
aus einem COSMOS- File mit Z88G gewonnen haben. Sonst wieder
zurückspeichern,
denn Ihre Ausgangsdateien wurden automatisch als Z88I1.OLD und
Z88I2.OLD gesichert.
6) Setzen Sie den Wert von GS in Z88.DYN
als MAXGS ein und starten Sie Z88F
im Rechenmodus, also z.B.
Windows:Z88F > Mode > Compaktmode, Berechnung > Start
UNIX: z88f -c (Console) oder Z88F mit Option
Compact
M (Z88COM)
Anmerkung:
In der zentralen Steuerdatei Z88.DYN gibt es eine Sektion für Z88H:
CUTKEE START
MAXGRA 200 (Maximaler Grad der Knotenpunkte)
MAXNDL 1000 (Stufen des Algorithmus)
CUTKEE END
Diese Werte können bei sehr großen Strukturen erhöht
werden.