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; bei den Sparsematrix-Solvern Z88I1/Z88I2 und Z88I1/Z88PAR sind die Verbesserungen viel geringer, da die Sparsematrix-Solver durch ihre Nicht-Nullelemente Speicherung hier a-priori sehr günstig sind.

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 3D-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), ggf. auch Z88I5.TXT (Flächenlasten) ein, erstellt davon Sicherheitskopien Z88I1.OLD und Z88I2.OLD und ggf. Z88I5.OLD und berechnet dann modifizierte Eingabedateien Z88I1.TXT und Z88I2.TXT und ggf. Z88I5.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 und ggf. Z88I5.TXT. Das kann

- von Hand
- mit dem Z88-Netzgenerator Z88N (nur Z88I1.TXT, von Hand dann Z88I2.TXT und Z88I5.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 -T (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 und ggf. Z88I5.TXT aus z.B. einem Pro/E-File mit Z88G gewonnen haben. Sonst wieder zurückspeichern, denn Ihre Ausgangsdateien wurden automatisch als Z88I1.OLD und Z88I2.OLD und ggf. Z88I5.TXT 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 > Rechenmode, Berechnung > Start

UNIX: z88f -c (Console) oder Z88F -C (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.