Motivation und erste Abaqus/Python Skripte
Selten baut man ein finite Elemente Modell einmal auf, es funktioniert auf Anhieb, und man braucht nur eine Variante davon. Oft ist es deswegen sinnvoll, die CAE Oberfläche des Finite Elemente Programms Simulia Abaqus über Skripte zu steuern. Diese Anleitung ist für alle gedacht, die bereits mit der Oberfläche von Abaqus vertraut sind, und damit schneller und eleganter arbeiten wollen. Diese Anleitung war Teil der FEM Rechenübung auf der Montanuniversität Leoben im Sommersemester 2020.
1a) Motivation
Wozu soll man Abaqus Cae skripten und wie geht das?
Zusammengefasst:
ABAQUS Cae
kann mitPython
(python.org) Befehlen automatisiert werdenPython
Einstieg (gratis und Interaktiv): sololearn.com- Sollen viele Varianten eines Modells gerechnet werden, ist das Automatisieren besonders sinnvoll.
# my scripted Abaqus model from abaqus import * from abaqusConstants import * from caeModules import * # new Modell Mdb() model = mdb.models['Model-1'] # build model here ... # load odb and elvaluate vp = session.viewports['Viewport: 1'] odb = session.openOdb(name='plate_1.odb') vp.setValues(displayedObject=odb) # evaluate model here ...
1b) Erstes Beispiel
Wie führt man Python Befehle in Abaqus aus? Welche Befehle brauche ich?
Zusammengefasst:
- Python-Kommandozeile in Abaqus: Zeilenweises Ausführen von Python-Befehlen
- File/Run Script: Ein Python-File in Abaqus Ausführen
- Makros aufzeichnen (File/Macro Manager) oder in das
.jnl
oder.rpy
-File schauen - Schleifen sind praktisch!
Jetzt geht es nur noch darum, das selbst auszuprobieren und zu üben. Wenn man die ersten paar Lektionen von Python in Sololearn macht, wird man sich dabei um einiges leichter tun.
2) Drei praktische Skripte
2a) Materialdaten aus File laden
Ich habe meine Materialkurven in Textfiles: Wie lade & verwende ich sie in Abaqus?
Zusammengefasst:
- Mit der Funktion
loadtxt
vonnumpy
lassen sich Daten aus Textdateien laden. Die Option delimiter gibt an, durch welche Zeichen die Spalten getrennt sind (default: ‘ ‘) und mit der Optionskiplines=1
kann die erste Zeile übersprungen werden. - Das so geladenen
numpy
-Array kann einfach beim Hinzufügen von Materialeigenschaften verwendet werden.
2b) History Output ausgeben
Mir gefallen die Diagramme aus Abaqus nicht, und will History Output in Textfiles schreiben!?
Zusammengefasst:
- Beliebige Ergebnisvariablen können als History Output ausgegeben werden, was Listen dieser Variablen über die Zeit erzeugt. Gibt es wie beim Tankmodell einen Knoten, dessen Verschiebung und Reaktionskraft über die Zeit interessant ist, so ist so eine Ausgabe von History Output sinnvoll.
- Die odb-Files (also Ergebnisfiles von Abaqus) entahlten historyRegions, in denen wiederum der History Output enthalten ist: Im Video wird gezeigt, wie man darauf zugreifen kann.
- Mit der
numpy
-Funktionsavetxt
können die damit erhaltenen Ergebnisse in Textfiles geschrieben werden.
2c) Ergebnisbild erzeugen
Wie erzeuge ich für meherere ähnliche odb-Files automatisiert Spannungs-Plots?
Zusammengefasst:
- Ein Speichern und Laden der Ansichtsoptionen ist in Abaqus zwar prinzipiell möglich, aber sehr unpraktisch.
- Bei der Darstellung der Ergebnisse kann auch ein Makro aufgezeichnet werden, dass dann automatisiert Bilder heraus schreibt. Dabei gibt es zu beachten:
- Das Fenster (viewport) soll nicht maximiert sein, damit das erzeugte Bild nicht von der aktuellen Bildschirmauflösung abhängig ist,
- Die Ansicht muss gespeichert werden (mit “save current“) und für das Skript dann wieder geladen,
- Das Bildformat
png
ist zu empfehlen und dort wird der Hintergrund transparent.