Abaqus is one of the tools that can be fed an almost unlimited computing power, over the years we have seen it been used on everything from old laptops (!!) to centralized well-driven HPC clusters. In this post I highlight some of the commands and functions that are useful when working on a Linux server. Some of these commands will still be useful on a windows platform.
Almost all of these topics deserve their own posts. The motivation behind this blog is to give a few useful pointers for readily available functionality, commands and tools for working on a remote server.
Starting, Pausing and Stopping Abaqus Jobs (Linux / Windows)
Most are familiar with submitting a job using the command line:
Abaqus job=AAA cpus=BBB or
Abaqus job=AAA input=CCC cpus=BBB
The input parameter refers to the name of the inputfile (excluding ‘.inp’). If this parameter is omitted, then Abaqus assumes that the job name is equal to the input filename.
There are cases where you want to stop/pause a job, run something else and resume the job afterwards. This can be done by using the following commands:
Abaqus terminate job=AAA – terminates the job
Abaqus suspend job=AAA – pauses the job
Abaqus resumes job=AAA – resumes the job
Overview of Available FlexLM Licences
Abaqus ships with tools to keep track of license usage for both FlexLM and DSLS installations. Regardless of system it is possible to fetch current license usage report with:
Abaqus licensing ru
This gives you an overview of available QAX (GUI tokens) and QXT (analysis tokens). The output include these lines:
Users of cae: (Total of 5 licenses issued; Total of 0 licenses in use)
Users of abaqus: (Total of 16 licenses issued; Total of 0 licenses in use)
Based on these lines we can conclude that we have:
- 5 of 5 QAX tokens available
- 16 of 16 QXT tokens available
If licenses are in use, it reports which user at what computer is using them. Making it possible to contact these users if there is any need to discuss resource allocation.
Note that ”Abaqus licensing reporttool”
is more powerful function that can be used to generate usage reports from a DSLS and/or FlexLM license pools.
Check Differences Between Files (Linux / Windows)
VIM automatically collapses large data blocks in the Inputfile providing an easy to read overview of the relevant keywords. This text editor is available by default on most Linux systems too and provides an easy to use function to compare similar inputfiles:
Vim -d inputfile_1.inp inputfile_2.inp
It is one of several good alternatives when you want review and edit files within the command line. Miguel at TechnoDigitalSchool has written a great post about the use of VIM and Abaqus, available here.
PS: Do not forget that you exit VIM by using the “:q!” command.
Working With Remote Systems
Log on the server using SSH and Transfer files between the machines using Secure Copy (SCP)
Windows comes with built-in accessible tools for SSH (Secure Shell) and SCP (secure copy).
ssh -l user server_namescp file_to_transfer user@server_name:destination_path
scp user@server_name:path/file_to_copy file_to_copy
Note: There exists great tools such as WinSCP that makes this even easier!
Monitor STA/MSG/DAT and LOG files using tail -f
tail is a tool used to display the last lines of a file. With the “ -f” argument it will provide the latest changes to the command line interface. Ctrl+C to quit the command.
tail -f jobName.sta
While there are a bunch of great tools that enable the same functionality such baretail, tail for win32, cygwin the native Power-Shell function Get-Content can be used to monitor the .sta file:
Get-Content jobName.sta -Wait
Monitor Server Usage using TOP or HTOP
HTOP is an improved version of top (table of processes) which provided an overview of process and resource utilization on the machine you are running on. Both TOP and HTOP can be used to terminate hanging abaqus processes.
htop or top
Split Screen and Log Sessions With Tmux (or Screen)
TUX enables us two primary functions which are useful:
- Enable us to attach and detach to a current session. Very useful if you start a python script on a remote server. Now you can start the script, detach and attach at ease – knowing that the session will continue without you.
- Split your session into several pieces providing a powerful monitoring suite. View htop, status files and message files simultaneously in one session.
tmux or screen
Reducing Obd Sizes for Lower Transfer Times
There are many strategies to reduce ODBs sizes. This is especially important when you are racking up large sizes above 100GB as transferring such files start to become a nuance.
There are two primary ways to dramatically reduce the ODB size:
- Frequency of Outputs (especially field Output)
- Number of Fields
The tendency to compromise on these might be low for jobs running for several days and even weeks. No one wants to explain to a client that you must rerun a massive simulation because you do not have enough information to quality check your results because you wanted to reduce file sizes.
Luckily, you can do several things. Following notes does not even scratch the surface of these techniques but hopefully give you some ideas of the tools we can use.
Reducing ODB Content
Having a feature rich output for all nodes leads to huge ODBs. If you only want to create contour plots or debug, “exterior only” reduces the output by a huge factor.
You can easy drop 30%-50% of the size by reducing the frequency at nice-to-have output fields without compromising overall information density. Do you really need accelerations and velocities for every increment?
Compressing With ZIP or 7z
ZIP and 7z can deflate the odb by 30%-50% depending on analysis type and content.
7z a archive.7z big.odb
ODB Reducer With GUI or noGUI
If the solutions above is not viable of effective enough, we have one last ace up our sleeves. A colleague here at TECHNIA has written about What Can You Do with the Abaqus ODB Reducer.
Short story is that it allows us to extract bits and pieces of an existing ODB into a new one. Great functionality when you want to preview large ODBs or share limited content with a contractor or client. The good news is that it is possible to use this functionality on a server using the:
abaqus viewer noGUI=reduceODB.py
We do have a proof of concept of this functionality, and we might write a future blogpost about the usage. For now, we just want to let you know it exists!
Closing Remarks
We are fully aware that there are many more tools and techniques available for managing jobs on a Linux system. In this post we have tried to focus on native available tools. Please feel free to share your tips and tool tips in the comments!
References
[1] https://info.simuleon.com/blog/how-to-submit-and-monitor-abaqus-jobs-through-command-window
[2] https://tecnodigitalschool.com/the-best-editor-for-abaqus-input-files/
[3] ODB Reducer, https://blogs.3ds.com/simulia/maintaining-agile-results-data-abaqus-odbs/?utm_campaign=202107_spe_simulia_agile-results-data_en&utm_medium=socialnetwork&utm_source=linkedin&utm_content=txt&utm_term=social_simulia&linkId=124322674
[4] What Can You Do with the Abaqus ODB Reducer/Builder Plug-in? | TECHNIA