Abaqus is a finite element analysis software used for engineering simulations. Using Abaqus, you can find solutions about stress and strain, natural frequencies and mode shape, forced response, fatigue, and more. Documentation for Abaqus can be found on its official website.

Currently, Abaqus versions 2016, 2017, 2020 are available on the cluster.

Basics

To use Abaqus through the command line, first load the Abaqus module, then use a command similar to below:

abaqus job=jobname input=inputscript.inp

where jobname is used to specify the output file name for the job run, and inputscript.inp is the input file with script to be run in Abaqus. Abaqus input files, ending with the extension *.inp, describe the model and simulation to be performed.

When running Abaqus jobs, it is advised that users create a new directory located in /data to store the data in, and a new directory in /work to run the job in.

Abaqus also provides sample input files, subroutine files, journal files, and parametric study script files in their Example Problems Guide

These files can be fetched from Abaqus using the command

abaqus fetch job=filename

where filename is the name of the file you would like to fetch. To fetch a specific file, use the file’s extension:

abaqus fetch job=filename.inp

Else, to fetch all files associated with that filename, leave the extension off.

Running Abaqus through a job script

1. Create an Abaqus input file. This repository provides the file tennis_surfcav.inp, which performs analysis on the impact of a tennis ball onto a racket, as well as the files tennis_ef1.inp and tennis_ef2.inp, which are referenced in the analysis.

2. Prepare the submission script, which is the script that is submitted to the Slurm scheduler as a job in order to run the Abaqus script.

job.sh


#!/bin/sh
#SBATCH -o aba_out%j.out
#SBATCH -e aba_err%j.err
#SBATCH --ntasks-per-node=28
#SBATCH -N 1
#SBATCH -p defq

## this example simulates the impact of a tennis ball onto a racket

## creates a directory to throw all the files in located in /data, creates directory in /local to run the job in
fdir=abaqus_test$SLURM_JOB_ID
resultsDir=/work/$USER/abaqus-examples/results/$fdir
mkdir /work/$USER/abaqus-examples/scratrch/$fdir
mkdir $resultsDir

scratchDir=/work/$USER/abaqus-examples/scratch/

## initializes locations of inFile and paramFile to be copied to local later
inFile=/work/$USER/abaqus-examples/tennis_surfcav.inp
paramFile="/work/$USER/abaqus-examples/tennis_ef1.inp /work/$USER/abaqus-examples/tennis_ef2.inp"
## change into local directory where results file will be stored temp
cd /work/$USER/abaqus-examples/scratch/$fdir

## copy over input file from home directory
cp $inFile .
## copy over param files
for f in $paramFile
do
        cp $f .
done

## loads the matlab module
module load abaqus
## runs the abaqus job, giving it the name testP and using the tennis_surfcav file
time abaqus job=aba_test \
            scratch=$scratchDir \
            cpus=$SLURM_JOB_CPUS_PER_NODE \
            mp_mode=THREADS \
            parallel=domain \
            input=$inFile interactive

## copys the results to the created results directory
cp -r * $resultsDir/

## removes the results from local
rm *
cd /work/$USER/abaqus-examples/scratch/
rmdir $fdir

echo 'done'
        
3. Submit the job using sbatch job.sh

4.Examine the results by opening the new directory, abaqus_test. More information about what each file contains can be found in the Abaqus User’s Manual