Mit dem Python-Skript wird zunächst das Abaqus-Modul odbAccess eingebunden. Dann wird die ODB-Datei MyJob geöffnet, aus der die abgespeicherten Felder CSLIP1, CTANDIR1, CSLIP2 und CTANDIR2 mit den Zeilen 4 bis 8 geladen werden. CSLIP1 und CSLIP2 enthalten Beträge von Relativverschiebungen, in CTANDIR1 und CTANDIR2 sind die jeweils zugehörigen Richtungsvektoren abgelegt, so dass das neue Vektorfeld SlipVec angelegt werden kann:
SlipVec = CSLIP1 CTANDIR1 + CSLIP2 CTANDIR2
Hinweis: Mit frames [-1] wird die Relativverschiebung zum zuletzt abgespeicherten Berechnungsinkrement ausgewertet.
Im Folgenden werden der Reihe nach ein neuer Step, Frame und Field Output angelegt. Die Methode addData (siehe Zeile 42) verlangt neben den Knotennummern und Komponenten der zugeordneten Vektoren unter anderem den Namen der "Instance", für die das neue Datenfeld anzulegen ist (siehe Zeile 21).
Python durchläuft nun alle Datensätze in CSLIP1 mit:
while i < len(Mag1.values) :
Welche Zeilen innerhalb der while-Bedingung wiederholt durchlaufen werden, legt deren Einrückung fest. Gleiches gilt für die Fallunterscheidung in den Zeilen 34 bis 39. So gehört Zeile 39 noch zur Fallunterscheidung, während Zeile 40 wieder der while-Bedingung zugeordnet ist.
Im Rechenteil (Zeile 26 bis 32) sieht man, wie die Richtungsvektoren mit den zugehörigen Werten von CSLIP1 und CSLIP2 multipliziert und dem jeweils resultierenden Vektor mit seinen Komponenten l1, l2 und l3 additiv zugewiesen werden.
Für eine schnellere Auswertung können die Arrays nodeLabelData und dispData für i = 0 auch außerhalb der while-Bedingung angelegt werden. Da in diesem Artikel nicht die Performance von Python-Skripten im Vordergrund steht, ist hier die Anlage der Felder in die while-Bedingung mit integriert. Abschließend ist darauf hingewiesen, dass die addData-Methode nach Datenfeldern vom Typ Tuple verlangt, so dass beim Ablegen der Knotennummern und der Vektor-Komponenten in den grün markierten Zeilen zuletzt ein Komma gesetzt ist.
Hinweis: Datenfelder vom Typ Tupel können, wenn einmal angelegt, nicht modifiziert werden.
Nachdem das Element-Set abgespeichert und die ODB-Datei geschlossen ist, wird das eigens erstellte Python-Skript über das Hauptmenü > File > Run Script… aufgerufen. Wenn die ODB-Datei geschlossen ist, kann das Python-Skript alternativ auch über die Kommandozeile ausgeführt werden mit:
abaqus viewer database=MyJob.odb replay=Post.py
Das vorgestellte Skript ermittelt die kinetische Energie mit Zeile 20, auf Grundlage von elementweise gemittelten Geschwindigkeiten (Zeile 15 bis 18). Für jedes Element von MYELE wird dazu zunächst der Geschwindigkeitsvektor Vi zu Null gesetzt. Dann wird mit der Konnektivität des jeweiligen Elementes über dessen Knoten gelaufen und der Geschwindigkeitsvektor in Schritten aufgebaut. Alle Knotengeschwindigkeiten erhalten dabei dieselbe Wichtung. Sie ist mit
Weitere Beispiele zum Abaqus-Scripting finden Sie im "Abaqus Scripting Reference Guide" Kapitel 9.10 "Example scripts that access data from an output database". Dort ist neben Field Outputs auch der Zugriff auf History Outputs im Detail beschrieben.
Tipp: Für lineare Algebra wird das Python-Modul NumPy empfohlen, Datenmanagement ist einfach mit dem OS-Modul möglich. Mit os.system("abaqus viewer database=MyJob.odb replay=Post.py") können Sie zum Beispiel den Abaqus Viewer innerhalb eines Python-Skripts anstarten.