5.8 MOTORRAD- KURBELWELLE, TETRAEDER NR. 16

Die Beispieldatei B11_G.COS in die Z88-Eingabedatei Z88G.COS umkopieren.

Es soll eine Kurbelwelle für einen Einzylinder-Motorradmotor berechnet werden. Als Last wirkt die Kolbenkraft von -5.000 N. Die Vernetzung wurde direkt in Pro/ENGINEER vorgenommen.

Das Besondere an diesem Beispiel ist die Definition der Randbedingungen, was für dieses Beispiel etwas tricky ist: An einer Stirnseite der Kurbelwelle wird zentral ein Bezugspunkt gesetzt. Er wird später die Verschiebungen in Z-Richtungen, d.h. in Längsrichtung der Kurbelwelle, blockieren.

Die Kugellager, die ja gewisse Winkelbewegungen aufnehmen können und daher als momentenfreie Auflager angesehen werden können und müssen, sollen auf den dickeren Wellenabsätzen sitzen. Es werden die Wellenabsatzflanken in X- und Y-Richtung festgehalten. Da hier ganze Flächen gesperrt werden, dürfte keinesfalls einer oder gar beide dieser Flächen in Z-Richtung blockiert werden. Damit würde man dem System die Momentenfreiheit nehmen (wie man leicht ausprobieren kann):

Am Kurbelzapfen selbst wird eine Gesamtlast von -5.000N auf die Umfangsfläche gegeben.

Das Netz wurde automatisch mit Pro/MECHANICA erzeugt, und es werden Tetraeder mit quadratischem Ansatz gewählt. Nach Erzeugen der COSMOS-Datei kann die Z88-Berechnung erfolgen:

B11_G.COS umkopieren in Z88G.COS COSMOS-Datei für Konverter Z88G

Konvertieren Sie also zunächst Z88G.COS mit Z88G

Windows: COSMOS Konverter Z88G. Sieht bei UNIX ähnlich aus.

und, da durch die Tetraeder mit quadratischen Ansätzen sehr schlechte Numerierungen zu erwarten sind, starten Sie dann gleich den Cuthill-McKee-Algorithmus Z88H.

Windows: Cuthill-McKee Programm Z88H. Sieht bei UNIX ähnlich aus.

Nach Öffnen der Eingabedatei Z88I1.TXT entnehmen Sie die ersten Zeile:

MAXKOI muß mindestens sein: 3.941 Elemente * 10 Knoten je Element = 39.410.

Damit würde Z88.DYN wie folgt aussehen:

MAXGS zunächst beliebiger Wert
MAXKOI mindestens 39410
MAXK mindestens 6826
MAXE mindestens 3941
MAXNFG mindestens 20478
MAXNEG mindestens 1

Dann können Sie mit Z88O die Struktur betrachten und anschließend Z88F im Testmode starten. Dann müssen Sie MAXGS mit ca. 11.400.000 Speicherplätzen definieren. Starten Sie dann Z88F im Rechenmode. Die Rechenzeit wird ca. 16 sec. bei einem PC betragen (AMD Athlon 64 X2 3800+ Prozessor, 4 GByte Memory, Windows XP).

Sie können sodann die verformte Struktur mit Z88O betrachten. Es ist verblüffend, wie stark sich doch die Wellenenden schief stellen. Sie würden nun an ausgewählten Knoten die Verschiebungen aus der Datei Z88O2.TXT ablesen, mit den entsprechenden Hebelarmen multiplizieren und prüfen, ob Ihre Kugellager diese Schiefstellungen noch mitmachen.

Windows: Rechenlauf mit Z88F. Sieht bei UNIX ganz ähnlich aus.

Windows: Plotprogramm Z88O, unverformte Struktur

Jetzt machen wir den eigentlichen Solverlauf einmal mit dem Sparsematrix-Iterationssolver Z88I1 und Z88I2. Zunächst machen wir eine versuchsweise Einstellung für MAXIEZ in Z88.DYN:

 

COMMON START

    MAXGS  11500000         > hat für Z88I1 keine Bedeutung !

    MAXKOI    40000         > der muss immer gross genug sein !

    MAXK       7000         > können Sie aus Z88I1.TXT ablesen

    MAXE       4000         > können Sie aus Z88I1.TXT ablesen

    MAXNFG    21000               > können Sie aus Z88I1.TXT ablesen

    MAXNEG        1         > können Sie aus Z88I1.TXT ablesen

    MAXPR         1         > für dieses Beispiel beliebig  

    MAXRBD      903         > können Sie aus Z88I2.TXT ablesen

    MAXIEZ  1000000         > wichtig für Z88I1

    MAXGP    500000         > nur für Z88O: max. Anzahl der Gauss-Punkte

COMMON END

Windows: Plotprogramm Z88O, verformte Struktur


Das hat geklappt mit unseren Einstellungen, die Sortierzeit war vernachlässigbar. Für MAXGS lesen wir ab: 768.687, aufgerundet 770.000. Das ist doch ein Wort gegenüber dem direkten Cholesky-Solver Z88F mit seinem Bedarf von 11.381.064 Speicherplätzen á 8 Bytes =  87 MByte. Der eigentliche Solverteil des Sparsematrix-Iterationssolvers, also Z88I2, wird nur 768.687 Speicherplätzen a´ 8 Bytes = 6 MByte benötigen.

 

Damit würden wir den Speicher in Z88.DYN wie folgt einstellen (größere Werte dürfen Sie natürlich immer nehmen):

 

COMMON START

    MAXGS    770000         > darauf kommt's an

    MAXKOI    40000         > der muss immer gross genug sein !

    MAXK       7000         > können Sie aus Z88I1.TXT ablesen

    MAXE       4000         > können Sie aus Z88I1.TXT ablesen

    MAXNFG    21000         > können Sie aus Z88I1.TXT ablesen

    MAXNEG        1         > können Sie aus Z88I1.TXT ablesen

    MAXPR         1         > für dieses Beispiel beliebig  

    MAXRBD      903         > können Sie aus Z88I2.TXT ablesen

    MAXIEZ  1000000         > wird nun nicht mehr gebraucht

    MAXGP    500000         > nur für Z88O: max. Anzahl der Gauss-Punkte

COMMON END

Wenn Sie die Iterationsparameter in Z88I4.TXT (Kapitel 3.6) wie folgt einstellen:

10000   1e-7  0.0001  1.  1

also höchstens 10.000 Iterationen, EPS mit 1E-7 und ALPHA mit 0.0001 für den SIC-Vorkonditionierer sowie OMEGA mit 1 für den SOR-Vorkonditionierer (und eine CPU, was aber nur für Z88PAR Bedeutung hat), dann ergibt sich bei Verwendung des SIC-Vorkonditionierers für Z88I2 eine Rechenzeit von ca. 12 Sekunden auf einem PC (Daten wie vorgenannt).

In diesen Fall sind also Sparsematrix-Iterationssolver und direkter Cholesky-Solver also etwa ähnlich schnell, aber der Iterationssolver braucht nicht einmal ein Zehntel des Speichers. Bei großen Strukturen wird dieses Verhältnis noch sehr viel krasser! Beachten Sie aber, daß die Rechenzeiten nicht wirklich vergleichbar sind, denn wenn Sie das Abbruchkriterium EPS verändern, z.B. auf 1E-5 (bedeutet 296 Iterationen und ca. 11 Sekunden) oder 1E-10 (bedeutet 329 Iterationen und ca. 13 Sek.), dann iteriert Z88I2 entsprechend weniger oder mehr und rechnet damit kürzer bzw. länger.

Windows: Der Sparsematrix-Iterationssolver Part 2, also Z88I2

Ein sehr schönes Experiment ist auch folgendes:

Fangen Sie noch einmal ganz am Anfang an, lassen Sie Z88G laufen, aber diesmal nicht den Cuthill-McKee Algorithmus Z88H. Machen Sie direkt nach Z88G einen Testlauf mit Z88F (UNIX: z88f -t):

Windows: Der direkte Cholesky-Solver im Testmodus

Oha, das gibt aber ganz lange Gesichter: Nun würden wir 184.122.663 Speicherplätze á 8 Bytes = 1,4 GByte) brauchen. Das muß doch wirklich nicht sein!

Wenn Sie nun stattdessen zunächst wieder den Iterationssolver Part 1, also Z88I1, laufen lassen, dann stellen Sie fest, daß Sie wiederum nur 768.687 Elemente, d.h. Speicherplätze in der Gesamtsteifigkeitsmatrix brauchen würden. Bitte rechnen Sie mit:

184.122.663 : 768.687 = 240 : 1

Der zweite Part des Iterationssolvers, also Z88I2, braucht jetzt etwas mehr Iterationen (350 gegenüber vormals 308 bei jeweils EPS = 1E-7), weil die Matrix zwar genauso viele Nicht-Nullelemente hat, aber schlechter konditioniert ist durch die sehr schlechte Knoten-Numerierung von Pro/MECHANICA. Das bedeutet: Beim Einsatz des Iterationssolvers brauchen Sie normalerweise den Cuthill-McKee Algorithmus Z88H nicht, um Speicher zu sparen (was beim direkten Cholesky-Solver Z88F eklatant sein kann). Allerdings kann er durchaus die Kondition des Gesamtsteifigkeitsmatrix verbessern.

Probieren Sie nun den direkten Sparsematrix-Solver mit Fill-In:

Wesentlich schneller läuft das Gespann Z88I1 und Z88PAR. Stellen Sie vorher in Z88I4.TXT den fünften Parameter auf die Anzahl Ihrer CPUs ein.  Beachten Sie aber, dass Z88PAR während des Laufs dynamisch Speicher nachfordert, was bei sehr großen Strukturen schnell problematisch wird.  Hier beträgt die Rechenzeit ca. 4 Sek. mit zwei CPUs.

Der direkte Sparsematrix Solver Z88PAR.