First, let’s answer this question: “What do we mean when we say Abaqus scripting?” Scripting means that write some commands and instructions in a way (using scripting languages such as Python) to extend, speed up or automate the applications and features of a software like Abaqus. Therefore, when we say Abaqus scripting, generally, we mean to automate tasks, customize workflows, and extend the functionality of the Abaqus software.
Abaqus uses two programming languages for scripting: Python and Fortran. Both of them are used to extend the Abaqus features and functions, but each one is suitable for a series of specific tasks; for example, Python scripting is usually used for automating model creation, automating repetitive tasks, running parameter studies and optimization routines, etc.; and the Fortran is used for developing and implementing finite element analysis algorithms, developing custom subroutines for Abaqus solvers, and so on.
Here, we’re going to talk about the Abaqus Python scripting: What is Python, why do we need Python scripting, how to do it, and how to use it in the Abaqus.
1. Why do we need Abaqus Scripting? | Abaqus Python
Abaqus is powerful FEM software that helps engineers analyze their designs to make them the best. Sometimes, the designs and structures get complex, and it is time-consuming to manually set up the simulation settings, especially when there are large datasets; so, isn’t it better to automate this process? For example, in a 3D printing simulation, you need to create 1000 layers and if you want to do this manually, it takes much time and becomes an exhausting and boring task; but you can automate this task with Python scripting or so called Abaqus Scripting. Another example is in order to sketch a model like a truss, which some of its parts repeated continuously, we can use the scripting to save our time in sketching. In the model below, the parametric script allows you to generate and execute the result of multiple analyses that differ only in the value of the length of the cantilever beam; hence, there is no need to do all simulation steps.
By adding Python extension to the Abaqus, we can employ process automation which can deliver repeatability, productivity, and quality to proven workflow and methods throughout the design and validation process. In addition, we can have the entire simulation in a small size Python file.
Scripting lets you use the Abaqus environment files to customize some default settings of Abaqus/CAE. Furthermore, you can create a plug-in, which can be a simple kernel script that performs a routine task; in this scenario, the advantage is that of convenience. If the script is packaged as a plug-in, everyone using Abaqus/CAE will have easy access. For example, the below picture represents a plug-in for designing composite tanks.
Another reason we need to script is to read from and write to an output database file; that is why we can read our desired results, save them in a report file, and visualize them in the viewport. Moreover, our desired output database file can be sent to us immediately after the job is completed successfully.
Python scripting is incredibly powerful for automating tasks in tools like Abaqus, but it also plays a key role in cutting-edge fields like autonomous systems and self-driving cars. In our Autonomous Systems and Self-Driving Cars course, you’ll learn how Python, along with ROS, is used to develop crucial components like sensor fusion, computer vision, and deep learning. This hands-on experience opens up exciting opportunities in the fast-evolving world of autonomous driving. |
1.1. Python advantages over other programming languages
In this section, it will be explained why we use Python for scripting in Abaqus and what are the advantages of Python over other programming languages.
- Easy to learn: It is very easy, and there is no need to learn and understand advanced programming concepts.
- Free (Open-source): It is a free and open-source software, which makes it accessible to developers of all levels and backgrounds.
- Mixable: it is mixable, that means can be used with components written in other languages, such as Java and C++.
- Interpreted language: It is interpreted, not complied language, which means there is no need to separate stages for compiling the code and then executing it. Python directly executes the code by converting it into an intermediate code, usually called the byte code; This definitely increases the speed of execution.
- Object-oriented programming (OOP): The most significant feature of this language is object-oriented. Object-oriented programming (OOP) is a method of structuring a program by bundling related properties and behaviors into individual objects.
- Cross-platform compatibility: It runs on all major platforms including Windows, MacOS and Linux.
- High productivity: Python is a powerful programming language. It incorporates dynamic typing, high-level built-in objects and tools, library utilities, etc., which make it powerful.
In the picture below, you can see the most important Python advantages in a glance.
If you need deep training, our Abaqus Course offerings have you covered. Visit our Abaqus course today to find the perfect course for your needs and take your Abaqus knowledge to the next level! |
1.2. Terminology
Graphical User Interface (GUI): GUI or graphical user interface is a graphical environment between the user and the Abaqus CAE kernel. The interface allows users to specify geometry and select options from dialog boxes. The GUI is an operating system interface that relies on graphical elements such as icons and menus, as well as a mouse to interact with the software. Users can click on the icons or pull down the menus to manage their interactions with the Abaqus, including creating parts, material properties, analysis steps, etc.
Script and Script file: A script refers to a set of commands written in a programming language. A script file includes a set of programming codes, commands, or instructions written in a programming language that can be executed by an interpreter or a computer program to run its commands. Script files in Abaqus have a “.py” extension, indicating that they are written in the Python programming language; they can be written in the Abaqus PDE, Notepad++, or any other text editor software and must be saved with the “.py” extension.
Abaqus Scripting Interface (ASI): ASI, which is abbreviated as Abaqus scripting interface, is a Python-based application programming interface (API) to Abaqus. ASI commands are issued to the Abaqus Python interpreter from either the GUI, the command line interface, or a script.
Application Programming Interface (API): API is a set of routines, protocols, and tools that make developing a software application easier.
Abaqus/CAE kernel: It is the main brain of the Abaqus software. This gets the scripting commands, creates an internal representation of the model, and then saves it as an input file with the extension “.inp”
Abaqus/CAE: Abaqus/CAE is an all-inclusive Abaqus environment that offers a straightforward and consistent interface for generating, submitting, monitoring, and assessing results from Abaqus/Standard and Abaqus/Explicit simulations. The commands in Abaqus/CAE are scripted in Python, and you can utilize Abaqus Python to improve the scripts produced by Abaqus/CAE. Most activities carried out during an Abaqus/CAE session can be replicated using a script (script_name.py) that includes a series of Abaqus Scripting Interface commands. Similarly, executing a script in Abaqus/CAE is the same as performing the related actions using the various menus, toolboxes, and dialog boxes provided by Abaqus/CAE.
You didn’t understand the Terminology up there, Do Not worry? Here we have the video version of it. |
1.3. Python role in Abaqus | Abaqus Python scripting
There are three ways to send Python commands to the Python interpreter, including GUI, CLI, and script, which were explained before (see flowchart below). After interpreting commands by the Python interpreter, they are sent to the kernel in order to create an input file. In addition, a replay file containing Python commands is created in case of using GUI. All these steps, from writing commands to creating an input file, are called Abaqus/CAE (see flowchart below). After creating the input file, it is sent to solvers, Abaqus standard or Abaqus explicit, to solve the problem and then write an output database file.
1.4. Related Abaqus Files to Python Scripting
- “.rpy” (replay) file: Most actions performed in ABAQUS/CAE are automatically recorded in the replay file (abaqus.rpy) as ABAQUS Scripting Interface commands. Running the replay file is equivalent to redoing the same sequence of actions, including any mistakes and corrections made. The replay file also covers canvas operations, such as creating a new viewport. You can run the commands in a replay file either at the start of ABAQUS/CAE or during a session. However, executing a replay file that generates an error may lead to different results.
- “abaqusMacro.py” file: Abaqus/CAE enables users to automate repetitive tasks by executing Python scripts, but creating such scripts from scratch can be challenging for beginners. To simplify the process of generating scripts, Abaqus/CAE provides a macro recording feature that enables users to record a series of actions and save them as a Python script. When a macro is generated, ABAQUS/CAE captures a series of ABAQUS Scripting Interface commands in a macro file as you interact with the software. Each command corresponds to a specific action within ABAQUS/CAE, and replaying the macro replays the same sequence of actions. The macros are saved in a file named abaqusMacros.py.
- “.inp” (input) file: In Abaqus, an input file is a text file that contains all of the information required to define and run a finite element simulation. The input file specifies the geometry of the model, the material properties, the boundary conditions, and the analysis settings. The input file is created using either Abaqus/CAE or a text editor, and it is typically saved with the extension “.inp”. The format of the input file is specific to Abaqus, and it follows a predefined syntax. When the simulation is run, Abaqus reads the input file and uses the information contained within it to generate the finite element mesh, apply the loads and boundary conditions, solve the equations, and produce the results.
- “.jnl” (journal) file: In Abaqus, a journal file is a text file that records the sequence of commands and interactions performed by the user in Abaqus/CAE. The journal file is created automatically when the user performs actions in Abaqus/CAE, and it contains a record of the actions taken, including the menus and options chosen, the dialogs opened, and the commands executed. The journal file can be used as a starting point for creating Python scripts that can be executed in Abaqus/CAE. The commands contained in the journal file can be edited and modified to create a customized Python script that automates specific tasks.
- “.py” file: This is the Python script that we write by ourselves, which was explained in the previous sections.
I know, I know! You need some practical examples to work with, right? what is the better way to learn something by examples, huh?
Have you seen the free version of Abaqus Scripting tutorial? If you do, time to level up your skills with these great tutorial packages with more examples:
Here are the list of examples of this package: |
Here are the list of examples of this package: |
Or you can get this one to get access not only the Part 1 and Part 2 of Abaqus scripting tutorial, but also an advanced and more practical example, Composite pressure vessel simulation in Abaqus. |
2. Data Types in Python
Before start learning Python scripting for Abaqus, it is necessary to learn the basics of the Python programming language, such as Python variables, data structures, symbols, functions, etc. In this section, you learn these things just enough to start with.
In programming, notably the Python programming language, data types are a fundamental concept. The type of data that can be kept in a variable and the functions and operations that can be carried out on that data are both defined by data types in Python. Numeric types, Boolean types, sequence types, mapping types, and set types are just a few of the built-in data types in Python, each with its own special traits and applications. This section will define the data types to become one step closer to Python scripting in Abaqus.
The table below, shows the data types in Python in one glance, which the necessary ones for Python scripting in Abaqus will be explained with examples:
Type | Categories | Class | Description |
Numeric | Integer, float, complex | int, float, complex | Holds numeric values |
Sequence | list, tuple, range, string | list, tuple, range, str | Holds collection of items |
Binary | Bytes, Bytearray, Memoryview | bytes, bytearray, memoryview | Represents sequences of binary data |
Mapping | Dictionary | dict | Holds data in key-value pair form |
Boolean | Boolean | bool | Holds either True or False |
Set | Set, Frozen set | set, frozenset | Collection of unique elements |
2.1. Numeric Data Types
Numeric data type represents the numeric values in Python and they are categorized in three categories: Integer, float, and complex.
Integer: This is a whole number data type that can be positive, negative or zero. In Python, integers are represented by the “int” class. Here an example of integer values:
# Integer x = 5 y = -10 z = 0 |
Complex: A complex number is a number that has both a real and an imaginary component. This data type represents complex numbers. The “complex” class in Python is used to represent complex numbers. Here is an example:
# Complex d = 2 + 3j e = -4j f = 0 + 1j |
Float: This is a decimal number data type that can be positive, negative or zero. In Python, floating-point numbers are represented by the float class. Here is an example:
# Float a = 3.14 b = -2.5 c = 0.0 |
On variables with various numeric data types in Python, you may also apply mathematical operations. The most “complex” data type will be used to automatically convert the outcome. For instance:
# Integer and float result = 5 + 2.5 print(result) # Float and complex result = 3.14 + (-2.5j) print(result) # Integer and complex result = 5 + 3j print(result) Outputs: 7.5 (3.14-2.5j) (5+3j) |
2.2. Sequence Data Types
In Python, a sequence is a data type that represents an ordered collection of items; in other words, sequence data types are used in the Python programming language to store data in containers. List, Tuple, String, and Range are some of the different types of containers that are utilized to hold the data.
List: A collection of things, which may be of different data kinds, is represented using lists. Each item is separated by a comma and written within square brackets “[]”. See the example below:
# List my_list = [1, 2, “three”, 4.0, True] |
Each item is assigned a unique index starting from 0 “[a0, a1, …, an-1]”. We can access each element of the list. The following example demonstrates how to generate a list and retrieve its elements using index notation. We used both positive and negative indexing methods. Negative indexing starts counting from the end, where -1 refers to the final item, -2 refers to the second-to-last item, and so on.
my_list = [1, 2, “three”, 4.0, “True”, “best”, “good”] print(my_list[0]) print(my_list[3]) print(my_list[-2]) print(my_list[-1]) print(my_list[0:2]) # elements in [0, 2) Outputs: 1 4.0 “best” “good” [1, 2] |
Several operations can be carried out on the list, including but not limited to append, remove, insert, extend, reverse, sorted, and more. These operations can be modified and executed as needed. For example:
my_list = [1, 2, “three”, 4.0, “True”, “best”, “good”] my_list.append(3) #insert at the end of the list print(my_list) Outputs: [1, 2, “three”, 4.0, “True”, “best”, “good”, 3] Another example: my_list = [1, 2, “three”, 4.0, “True”, “best”, “good”] my_list.reverse() #reverse the order print(my_list) Outputs: [“good”, “best”, “True”, 4.0, “three”, 2, 1] |
String: Strings are used to represent text data in Python. They are written within single quotes (‘…’) or double quotes (“…”) and can contain any combination of letters, digits, and special characters. Note that spaces are significant.
>>>” the king of spain” the king of spain >>>’ the king said” hello.”‘ the king said” hello.” |
Also, you can perform various operations on the string data. Here are some of them:
Combining two or more strings:
str1 = “Hello” str2 = “World” result = str1 + ” ” + str2 print(result) #Output: “Hello World” Finding the length of the string: >>> len(’the df’) 6 |
To convert a string to uppercase or lowercase, you can use the ‘upper’ and ‘lower’ methods:
str = “Hello World” result = str.upper() print(result) #Output: “HELLO WORLD” result = str.lower() print(result) #Output: “hello world” |
Tuple: Unlike lists, tuples are immutable, thus once they are generated, their contents cannot be altered. Each item is separated by a comma and written within parentheses “()”.
# Tuple
my_tuple = (10, 20, 30, “forty”, 50.0) |
Range: A series of numbers is represented using the range data type in Python. It is a form of immutable sequence that creates numbers instantly without storing them in memory. It creates the numbers instead as they are required, which is efficient when dealing with lengthy sequences. The range type takes three arguments: start, stop, and step. The start argument specifies the starting value of the sequence (inclusive), the stop argument specifies the ending value of the sequence (exclusive), and the step argument specifies the difference between each number in the sequence. See the example below:
>>> range(10)
[0, 1, 2, 3, 4, 5, 6, 7, 8, 9] >>> range(2.2,20.4,4) [2, 6, 10, 14, 18] |
I’m sure you have noticed by now that some examples are written by using the arrow shape marks (>>>), which, if you remember, is used in the CLI of the Abaqus for scripting. Our goal here is just to show you both Python and CLI interfaces.
2.3. Mapping Data Type
The dictionary type, abbreviated as “dict”, represents the mapping data type in Python. It is a collection of key-value pairs that are not ordered, where each key is distinct and linked to a corresponding value. This one is like a list, but indexes (keys) can be anything, not just integers. Dictionaries are defined like this: {key1:val1, key2:val2,…}.
>>> numbers = {‘one’:1, ‘two’:2, ‘three’:3} |
You can access the values using keys:
>>> numbers[‘three’] 3 >>>numbers[‘two’] 2 |
Also, you can perform some operations on dictionaries. The table below shows the operations available for dictionaries (Note: d is a defined dictionary):
Remove all the items from d | d.clear() |
Creates a copy of d | d.copy() |
Checks if key m exists in d | d.has_key(m) |
Returns a view object that contains the keys of d | d.keys() |
Returns a view object that contains the values of d | d.values() |
>>> determiners = {‘the’:‘def’, ‘an’:‘indef’, ‘a’:’inde’}
>>> determiners.keys() [‘an’, ‘a’, ‘the’] >>> determiners.has_key(‘an’) 1 >>> del determiners[‘an’] >>> determiners.has_key(‘an’) 0 >>>determiners.values() [‘def’, ‘indef’, ‘inde’] |
2.4. Boolean Data Type
In Python, the boolean data type is a built-in data type that represents the truth values True and False. Booleans are used in logical expressions and conditional statements to represent the truth or falsity of a condition. You can see some examples below:
>>> 5 == 3+2 # == tests for equality True >>> 5 != 3*2 # != tests for inequality False >>> 5 > 3*2 # >, <, >=, <= test for ordering False >>> 5 > 3*2 or 5<3*2 # or, and combine truth values False |
2.5. Set Data Type
In Python, the set data type is a built-in data type that represents a collection of unique elements. Sets are unordered and mutable, which means that you can add or remove elements from a set, but you cannot access them by index.
Here’s an example of using sets in Python:
# Define a set my_set = {1, 2, 3, 4, 5} # Print the set print(my_set) # Output: {1, 2, 3, 4, 5} # Add an element to the set my_set.add(6) # Print the set again print(my_set) # Output: {1, 2, 3, 4, 5, 6} # Remove an element from the set my_set.remove(3) # Print the set again print(my_set) # Output: {1, 2, 4, 5, 6} |
Also, you can perform some operations on set data:
# Define two sets set1 = {1, 2, 3, 4, 5} set2 = {4, 5, 6, 7, 8} # Use set operations union_set = set1.union(set2) print(union_set) # Output: {1, 2, 3, 4, 5, 6, 7, 8} intersection_set = set1.intersection(set2) print(intersection_set) # Output: {4, 5} difference_set = set1.difference(set2) print(difference_set) # Output: {1, 2, 3} |
The CAE Assistant is committed to addressing all your CAE needs, and your feedback greatly assists us in achieving this goal. If you have any questions or encounter complications, please feel free to share it with us through our social media accounts including WhatsApp.
You can always learn more about Abaqus in Abaqus Documentation.
Explore our comprehensive Abaqus tutorial page, featuring free PDF guides and detailed videos for all skill levels. Discover both free and premium packages, along with essential information to master Abaqus efficiently. Start your journey with our Abaqus tutorial now!
You can learn all these types with examples in this free version of Abaqus tutorial: |
Or get these three depending on your needs:
Here are the list of examples of this package: |
Here are the list of examples of this package: |
Or you can get this one to get access not only the Part 1 and Part 2 of Abaqus scripting tutorial, but also an advanced and more practical example, Composite pressure vessel simulation in Abaqus. |