This is an old revision of the document!
Table of Contents
Abaqus is a commercial finite element package. Nguyen lab shares Abaqus license with other WSE faculties via MARCC. Abaqus/ Standard is an implicit finite element solver while Abaqus/ Explicit implements explicit algorithm for nonlinear finite element problems. Abaqus/ Standard allows Fortran based (C++ support is also available) user-defined material (UMAT), user-defined element (UEL) subroutines to develop new constitutive models and elements in Abaqus/ Standard. Abaqus/ Explicit counterparts are known as VUMAT and VUEL. While these are popular user-defined features in Abaqus, it also offers few more features to be programmed by user.
Abaqus is officially supported on Windows and Red Hat Linux (and CentOS). Although the installation script can be hacked to get Abaqus installed on Ubuntu and other desktop distros of Linux, but previous experience wasn't great with it. It often lacks in multiple features. Windows is highly suggested for Abaqus.
Abaqus CAE is a pre- and post-processing package bundled with Abaqus solver. It allows creating the CAD model, meshing the model, define boundary conditions and loading via GUI. But you might want to learn creating Abaqus input file, if you're using user-defined features. In order to use Abaqus's user-defined features, you will need Intel Fortran (and C++) compiler installed with Microsoft Visual Studio. Abaqus output is written in .odb file format and you will need Abaqus CAE (or Viewer) to view and process those results.
Installing Abaqus on Windows
Abaqus is available via WSE IT. Please contact [email protected] for scheduling installation. You might be able to download from https://software.wse.jhu.edu and install it yourself by getting the license information from WSE IT. If you have multiple versions of Abaqus installed, then you will need to configure abaqus.bat file located in C:\SIMULIA\Commands to call version of your choice.
Intel oneAPI and Visual Studio
To be able to leverage user-defined features of Abaqus, Microsoft Visual Studio and Intel Fortran Compiler are needed to be installed in that order. Intel Fortran (and C++) compiler is a part of Intel oneAPI Toolkit which is available for free. Download the latest stable version of Intel oneAPI, both Base Toolkit and HPC Toolkit. Please make sure to check which version of Microsoft Visual Studio is compatible with that particular Intel oneAPI version. Download the compatible version of community edition of Visual Studio.
Start the installation procedure with Visual Studio. Make sure to select “Desktop development with C++” on the installation page while other settings could be default. Installation process is trivial. Then install Intel oneAPI Base Toolkit and Intel oneAPI HPC Toolkit, respectively. Default installation should work and both of these software will recognize existing Visual Studio and link itself. This process might take 30-40 minutes.
Once the installation is done, please locate abqXXXX.bat file (XXXX for version) in C:\SIMULIA\Commands. Open the abqXXXX.bat file with any text editor and add following lines in the beginning of file. Save the file as administrator.
SET PATH=%PATH%;C:\Program Files (x86)\Intel\oneAPI\compiler\2021.1.1\windows\bin\intel64;
call “C:\Program Files (x86)\Intel\oneAPI\compiler\2021.1.1\env\vars.bat” intel64
Open either of Abaqus Commands, cmd, Powershell from Windows start menu and type following to check and verify installation.
abaqus info=system
This should return all the system information, including linker and compiler on the terminal.
abaqus verify -user_std
This verifies the installation procedure for Abaqus/ Standard. If installation and linking was successful, it should return PASS. To verify complete installation, type
abaqus verify -all
Executing Abaqus User Subroutine
Open Abaqus Commands, cmd, or Powershell and use following command to run Abaqus analysis.
abaqus interactive analysis double ask_delete=off job=job_name input=input_file,inp user=user_subroutine.for cpus=no_of_processors
interactive processes run sequentially, double is machine precision, ask_delete=off will delete overwrite old job with same name without asking (if that's what you want). You can create a batch script to run multiple jobs at the same time.
Open job_name.dat and job_name.msg file in any text editor to see the details of simulation. To check convergence log during simulation, open a new pane or tab on terminal and write. You might have to install tail package on Windows (available on Linux).
tail -f job_name.sta
Abaqus on MARCC
As of Spring 2021, MARCC has few different versions of Abaqus and Intel Fortran compiler installed. Abaqus lacks backward compatibility, so load the appropriate version of Abaqus, i.e., same or older than the version installed on local workstation. You won't be able to open the .odb files on local computer if you run the simulation on MARCC with newer Abaqus version. Please note, MARCC is not configured to run Abaqus job on more than single node. Make sure you're not running the job on login node. Please use the following bash script template to run Abaqus on MARCC. Make necessary changes to the parameters, based on MARCC website.
#!/bin/bash
# BEGIN PARAMETERS
WORKDIR=/scratch/groups/tnguy108/yourdirectory
JOBNAME=abaqus_job_name # abaqus job name -- same as input file name
INPUTFILE=abaqus_input_file.inp # abaqus input file name -- job name with .inp extension
USERFILE=user_subroutine.for # user defined subroutine
# check out MARCC website while changing following parameters
PARTITION=unlimited # marcc partition
NUM_NODES=1 # number of nodes to be used
TASKS_PER_NODE=24 # number of simulations running per node
CPUS_PER_TASK=1 # number of core/ threads to be used
# TASKS_PER_NODE*CPUS_PER_TASK = 24 (available core on each node)
# total number of cpu cores to be used
TOTAL_CPUS=$((NUM_NODES*TASKS_PER_NODE*CPUS_PER_TASK))
MAX_TIME=168:00:00 # maximum simulation time before exiting: 7 days
[email protected] # email for notification
EMAIL_TYPES=BEGIN,FAIL,END # type of notifications to be received
# END PARAMETERS
#SBATCH --job-name=$JOBNAME
#SBATCH --partition=$PARTITION
#SBATCH --nodes=$NUM_NODES
#SBATCH --ntasks-per-node=$TASKS_PER_NODE
#SBATCH --cpus-per-task=$CPUS_PER_TASK
#SBATCH --time=$MAX_TIME
#SBATCH --mail-type=$EMAIL_TYPES
#SBATCH --mail-user=$EMAIL
echo "All parameters are set"
# if sbatch script is in a different folder then uncomment following lines
# cd $WORKDIR
# echo "Working directory is: $WORKDIR"
module load abaqus
echo "Abaqus loaded"
abaqus double interactive analysis ask_delete=off job=$JOBNAME input=$INPUTFILE cpus=$TOTAL_CPUS user=$USERFILE
echo "Abaqus JOB $JOBNAME with SLURM JOB ID $SLURM_JOB_ID is completed"