You are located in service: RWTH High Performance Computing (Linux)

ABAQUS

ABAQUS

Kurzinformation

Abaqus is a software suite for finite element analysis and computer aided engineering.

Table of Contents

  1. How to access the software
  2. Example batch scripts
  3. Best practices for Abaqus jobs
  4. Submitting Abaqus jobs with fortran user subroutines
  5. General information about Abaqus

Detailinformation

How to access the software

Load the module:

module load ABAQUS

This will load the default version which is usually the latest available version. Other available Abaqus versions can be listed with module avail ABAQUS.
 

Example batch scripts

Abaqus Batch Job:

#!/usr/bin/zsh

### Job name
#SBATCH --job-name=abaqus_slurm_job

### File/Path where STDOUT will be written to, %J is the job id
#SBATCH --output abaqus-job-log.%J

### Request the time you need for execution. The full format is D-HH:MM:SS
### You must at least specify minutes or days and hours and may add or
### leave out any other parameters
#SBATCH --time=5:00

### Request the memory you need for your job. You can specify this
### in either MB (1024M) or GB (4G). BEWARE: This is a per-cpu limit,
### and will be multiplied with cpus-per-task for the total requested memory
#SBATCH --mem-per-cpu=3900M

### Request one host
#SBATCH --nodes=1

### Request number of CPUs/MPI Ranks
#SBATCH --ntasks=4

### Initialization of the software
module load ABAQUS/2023

### Set the amount of memory to be passed to Abaqus as a command line argument
### Beware: This HAS to be lower than the value you requested via --mem-per-cpu
export ABAQUS_MEM_ARG="3584 mb"

### Change (!) to your desired work directory
cd "/path/to/your/dir"

### name your job HERE, name it DIFFERENT from your input file!
JOBNAME=name_of_my_job
INPUTFILE=input_file.inp

unsetopt -o NOMATCH
rm -f $JOBNAME.* 2>/dev/null
setopt -o NOMATCH

### Execute your application
### Please remember, to adjust the memory, it must be less than requested above
abaqus interactive job=$JOBNAME input=$INPUTFILE cpus=$SLURM_NTASKS memory="$ABAQUS_MEM_ARG"

Abaqus Batch Job (Abaqus 2019 and older):

#!/usr/bin/zsh

### Job name
#SBATCH --job-name=abaqus_slurm_job

### File/Path where STDOUT will be written to, %J is the job id
#SBATCH --output abaqus-job-log.%J

### Request the time you need for execution. The full format is D-HH:MM:SS
### You must at least specify minutes or days and hours and may add or
### leave out any other parameters
#SBATCH --time=5:00

### Request the memory you need for your job. You can specify this
### in either MB (1024M) or GB (4G). BEWARE: This is a per-cpu limit,
### and will be multiplied with cpus-per-task for the total requested memory
#SBATCH --mem-per-cpu=3900M

### Request number of hosts
#SBATCH --nodes=1

### Request number of CPUs/MPI Ranks
#SBATCH --ntasks=4

### Initialization of the software
module load ABAQUS/2019

### Set the amount of memory to be passed to Abaqus as a command line argument
### Beware: This HAS to be lower than the value you requested via --mem-per-cpu
export ABAQUS_MEM_ARG="3584 mb"

### Change (!) to your desired work directory
cd "/path/to/your/dir"

### Create ABAQUS environment file for current job, you can set/add your own options (Python syntax)
env_file=abaqus_v6.env

cat << EOF > ${env_file}
import os
#verbose = 3
#ask_delete = OFF
#usub_lib_dir=os.getcwd()
mp_mpi_implementation = IMPI
mp_mpirun_path = {IMPI: os.getenv("EBROOTIMPI") + "/mpi/latest/bin/mpiexec.hydra"}
mp_file_system = (SHARED, LOCAL)
mp_host_list = $R_WLM_ABAQUSHOSTLIST
EOF

unset SLURM_GTIDS

### name your job HERE, name it DIFFERENT from your input file!
JOBNAME=name_of_my_job
INPUTFILE=input_file.inp

unsetopt -o NOMATCH
rm -f $JOBNAME.* 2>/dev/null
setopt -o NOMATCH

### Execute your application
### Please remember, to adjust the memory, it must be less than requested above
abaqus interactive job=$JOBNAME input=$INPUTFILE cpus=$SLURM_NTASKS memory="$ABAQUS_MEM_ARG"

Best practices for Abaqus jobs

  • Don't name your input file $JOBNAME.inp. It will be deleted by the batch script and your job won't start.
  • Use separate directories for each job. The file abaqus_v6.env could be overwritten by a newly starting job.
  • Use the checkpoint functionality of ABAQUS to save the current state and restart from there. This is especially useful for long running jobs that may run into the maximum time limit. The following is taken as-is from Sheffield HPC Documentation:

    Add the following to the input file (refer to official Abaqus documentation for detail):

    *RESTART, WRITE, OVERLAY, FREQUENCY=10

    OVERLAY saves only one state, i.e. overwrites the restart file every time new restart information is written

    FREQUENCY=N writes restart information every N timesteps

    And, to restart the job, create a new input file newJobName with only a single line:

    *RESTART, READ

    Then run Abaqus specifying both the new and old job names:

    abaqus jobname=newJobName oldjob=oldJobName
  • Use job dependencies or job arrays, such that only one or at least a few jobs run concurrently. They might "steal" licenses from each other.

Submitting Abaqus jobs with fortran user subroutines

Pre-compile your subroutine as a shared library with the following command line:

module load ABAQUS/2023
abaqus make -library yoursubfile.f

Abaqus on Claix is configured to automatically add the job's working directory to the library directories in which Abaqus searches for subroutines.

General information about Abaqus

Look here for more information about Abaqus and especially this PDF document about the license model of Abaqus.

But in short, the following table shows the token usage for a number of cores for an Abaqus job.

number of cores
1
2
4
8
12
16
24
32
64
128
needed tokens56812141619212838

or as a picture:

Abaqus Tokens


 Zusatzinformation

I am not able to see my model in Abaqus/CAE, I only get a "blue" screen.

Open abaqus cae with MESA support ( thanks to Mrs. Toups for the tip ). Use abaqus cae -mesa. This can be done via

  • FastX ( the preferred way )
  • ssh, which is horrably slow

I am getting an error: Abaqus Error: The following file(s) could not be located: ....inp

Don't name your input file $JOBNAME.inp, it got deleted! Also make sure that you did use an existing .inp filename and the right path.

I am getting an error: Abaqus Error: It is required that the local host is in the host list for this run. Local host: ncm0100.hpc.itc.rwth-aachen.de, mp_host_list: (('ncm1234.hpc.itc.rwth-aachen.de', 12),)

Use separate directories for each job, abaqus_v6.env got overwritten by another starting job!

I am getting an error: "..." license request queued for the License Server. Total time in queue: ... seconds.

Too many licenses have been checked out. The Slurm scheduler does not check if free Abaqus licenses are available before a job is started. Unfortunately, if no license is available, Abaqus does not directly abort but waits until a license becomes available. From Slurm's point of view however, the job is running and will therefore be accounted as usual.

So only let one or at least a few jobs run at one time. This could be done with job dependencies or with array jobs.

My multi-node job with ABAQUS <= 2020 fails to start up.

This is a known issue. Unfortunately we do not have a fix at the moment. Please change your batch script to limit your simulation to one node.

last changed on 03/11/2024

How did this content help you?

Creative Commons Lizenzvertrag
This work is licensed under a Creative Commons Attribution - Share Alike 3.0 Germany License