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