Press "Enter" to skip to content

Abaqus automatisieren mit Python

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 mit Python (python.org) Befehlen automatisiert werden
  • Python 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 von numpy lassen sich Daten aus Textdateien laden. Die Option delimiter gibt an, durch welche Zeichen die Spalten getrennt sind (default: ‘ ‘) und mit der Option skiplines=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-Funktion savetxt 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:
  1. Das Fenster (viewport) soll nicht maximiert sein, damit das erzeugte Bild nicht von der aktuellen Bildschirmauflösung abhängig ist,
  2. Die Ansicht muss gespeichert werden (mit “save current“) und für das Skript dann wieder geladen,
  3. Das Bildformat png ist zu empfehlen und dort wird der Hintergrund transparent.