Skip to content

ABAQUS

软件介绍:Abaqus 是一款广泛使用的有限元分析(FEA)软件,由 Dassault Systèmes 提供,主要用于结构分析、热分析、流体分析和多物理场耦合仿真。它广泛应用于工程、航空航天、汽车、土木工程等领域,帮助工程师模拟和分析复杂的物理现象。Abaqus 由多个模块组成,具有强大的求解能力,能够处理静态、动态、线性和非线性问题。

提交脚本

8581

bash
#!/bin/bash
#SBATCH -p INTEL_8581    	##8581C分区正式队列
#SBATCH  -J abaqus            ##指定作业名称
#SBATCH  --nodes=1               ##指定节点数
#SBATCH  --ntasks-per-node=16          ##指定核心数
#SBATCH  -o out.log         ##指定输出文件名
#SBATCH  -e error.log       ##指定报错信息输出文件名


export TMPDIR=$HOME/tmp
export PATH=/home/software/abaqus/abaqus2024/Commands/:$PATH
source /home/software/intel/oneapi/2022.1/setvars.sh
ulimit -l unlimited
nameflag=`scontrol show hostname $SLURM_JOB_NODELIST`
beginflag="mp_host_list=["
endflag="]"
for line in $nameflag
do
tempflag="['$line',96],"
beginflag=$beginflag$tempflag
/usr/bin/ssh -o StrictHostKeyChecking=no -tt $line &
done
eflag=`echo $beginflag | sed 's/.\{0\}.$//'`
endflag=$eflag$endflag
echo $endflag > abaqus_v6.env
#修改xxx为自己算例文件名即可
#单精度
abq2024 analysis job=Job-1 input=xxx.inp cpus=$SLURM_NPROCS mp_mode=mpi interactive
#双精度
#abq2024 analysis job=Job-1 input=xxx.inp cpus=$SLURM_NPROCS mp_mode=mpi double=both interactive

9654

#!/bin/bash
#SBATCH -p AMD_9654    	##9654分区测试队列
#SBATCH -J abaqus            ##指定作业名称
#SBATCH --nodes=1               ##指定节点数
#SBATCH --ntasks-per-node=16          ##指定核心数
#SBATCH -o out.log         ##指定输出文件名
#SBATCH -e error.log       ##指定报错信息输出文件名
mkdir -p $HOME/tmp
export TMPDIR=$HOME/tmp
export PATH=/home/software/abaqus/abaqus2024/Commdans/:$PATH
module use /home/software/modulefiles/
module load openmpi/4.1.6-aocc
ulimit -s unlimited
ulimit -l unlimited
nameflag=`scontrol show hostname $SLURM_JOB_NODELIST`
beginflag="mp_host_list=["
endflag="]"
for line in $nameflag
do
tempflag="['$line',96],"
beginflag=$beginflag$tempflag
/usr/bin/ssh -o StrictHostKeyChecking=no -tt $line &
done
eflag=`echo $beginflag | sed 's/.\{0\}.$//'`
endflag=$eflag$endflag
echo $endflag > abaqus_v6.env


#修改xxx为自己算例文件名即可
#单精度
#abq2024 analysis job=Job-1 input=xxx.inp cpus=$SLURM_NPROCS mp_mode=mpi interactive
#双精度
abq2024 analysis job=Job-1 input=xxx.inp cpus=$SLURM_NPROCS mp_mode=mpi double=both interactive

8576

#!/bin/bash
#SBATCH -J abaqus_job             # 作业名称
#SBATCH --nodes=1                 # 节点数
#SBATCH --ntasks-per-node=64      # 每节点核心数
#SBATCH --time=24:00:00           # 最大运行时间
#SBATCH -o out.log                # 正常输出
#SBATCH -e error.log              # 错误输出

# 设置临时目录
[ -d "$HOME/tmp" ] || mkdir -p "$HOME/tmp"
export TMPDIR=$HOME/tmp

# 加载模块
module swap gnu14 intel/2024.0.0
module swap openmpi5 impi/2021.11

# Abaqus 命令路径
export PATH=/opt/ohpc/pub/software/abaqus/2024/Commands/:$PATH

# 允许锁定内存无限制
ulimit -l unlimited

# 创建作业专用 scratch 目录
SCRATCH_DIR=~/tmp/${SLURM_JOBID}
mkdir -p $SCRATCH_DIR

# 输入文件名(不带扩展名)
INPUT="Job-Triangular-Batch01-20250810_123558"

# Abaqus 参数
CPUS=$SLURM_NTASKS       # 使用的总核心数
ARGS="cpus=$CPUS mp_mode=mpi scratch=$SCRATCH_DIR interactive"

# 单精度运行(默认)
#abq2024 analysis job=$INPUT input=${INPUT}.inp $ARGS

# 如果需要双精度,可取消下面注释
 ARGS_DOUBLE="cpus=$CPUS mp_mode=mpi scratch=$SCRATCH_DIR double=both interactive"
 abq2024 analysis job=${INPUT}_double input=${INPUT}.inp $ARGS_DOUBLE

# 清理 scratch
rm -rf $SCRATCH_DIR

计算方式

前置准备:

在 abaqus 的计算界面选择写入数据文件

找到刚刚写入的文件并上传到超算平台上自己新建的计算文件夹,将提供的脚本复制到跟计算文件一个目录的文件夹

修改脚本以及核心数并进行提交计算的方式:

u_abaqus

计算单精度则将单精度执行命令一行的 # 去掉,将双精度一行用 # 去掉,如果是计算双精度,则相反。

最佳实践

为每个算例创建一个算例目录,以便清晰的管理算例数据

上传自己数据后,将脚本里的最后一行的xxx.inp修改为自己的inp文件,xxx为自己的文件名,然后进入到终端,正常进行sbatch abaqus.slurm即可

常见问题与解答

1、tmp目录空间不足

在计算中有时会遇到: Error: could not write file 'xxx stdsolver factor,local 8': check the disk space on your system

image-20250621113042661

这个是提示作业当前的计算节点tmp目录空间不足,此时可以使用命令把tmp文件写进自己的目录里,随后跑完删除

先依次执行

mkdir -p /home/$USER/tmp

再在脚本里加入

export TMPDIR=$HOME/tmp

完整脚本示例

#!/bin/bash
#SBATCH -p INTEL_8581    	## 使用8581C分区测试队列
#SBATCH -J abaqus            ## 指定作业名称为abaqus
#SBATCH --nodes=1            ## 指定使用1个计算节点
#SBATCH --ntasks-per-node=16 ## 指定每个节点使用16个核心
#SBATCH -o out.log           ## 指定标准输出文件名
#SBATCH -e error.log         ## 指定错误输出文件名

export TMPDIR=$USER/tmp
export PATH=/home/software/abaqus/2022/Commands/:$PATH  ## 添加 Abaqus 命令到环境变量
source /home/software/intel/oneapi/2022.1/setvars.sh    ## 加载 Intel 编译器环境
ulimit -l unlimited                                     ## 设置内存锁定限制为无限制
nameflag=`scontrol show hostname $SLURM_JOB_NODELIST`   ## 获取分配的计算节点主机名
beginflag="mp_host_list=["                              ## 初始化主机列表字符串
endflag="]"                                             ## 设置主机列表结束符
for line in $nameflag                                   ## 遍历所有分配的节点
do
tempflag="['$line',16],"                                ## 为每个节点创建配置项,16 为处理器数量,和节点核心数保持一致
beginflag=$beginflag$tempflag                           ## 将节点信息添加到主机列表
/usr/bin/ssh -o StrictHostKeyChecking=no -tt $line &    ## 建立到计算节点的 SSH 连接
done
eflag=`echo $beginflag | sed 's/.\{0\}.$//'`            ## 处理主机列表字符串,移除末尾字符
endflag=$eflag$endflag                                  ## 组合完整的主机列表配置
echo $endflag > abaqus_v6.env                           ## 将主机列表写入 Abaqus 环境配置文件

# 修改 xxx 为自己算例文件名即可,不含 inp 后缀
case_name=xxx

# 单精度
# abq2022 analysis job=${case_name} input=${case_name}.inp cpus=$SLURM_NPROCS mp_mode=mpi interactive  ## 单精度计算命令(已注释)

# 双精度
abq2022 analysis job=${case_name} input=${case_name}.inp cpus=$SLURM_NPROCS mp_mode=mpi double=both interactive  ## 双精度计算命令

2、锁文件残留

遇到报错提示

Abaqus Error:; Detected lock file Job-1.Ick. please confirm that no other aplications are attempting to write to the output database associated with this job be Abaqus/Analysis exited with error(s).

关键词是Job-1.Ick,这个文件就是锁文件,出现这个的原因是上一个计算取消或者完成后残留的文件,如果在当前目录继续进行下一个计算时,新产生的文件无法替换旧文件,就会报错

解决思路

每一个inp文件都放置在不同的文件夹下,即方便管理,也方便后续查询计算结果。

3、abaqus输出日志

job-1.msg 文件是 Abaqus 运行时的 消息文件(message file)

这个 .msg 文件主要记录 Abaqus 作业执行过程中的运行信息和提示消息

包含求解过程中的各种状态信息、警告(warnings)、错误(errors)简要提示、以及计算进度等。

它是检查 Abaqus 计算是否正常进行的重要日志文件之一。

其他相关文件:

  • job-1.dat — 数据文件
  • job-1.odb — 输出数据库文件(结果文件)
  • job-1.sta — 状态文件(详细记录步骤状态)
  • job-1.log — 日志文件(更详细的运行日志)

4、abaqus计算遇到publickey问题

Warning: Permanently added 'node01' (ED25519) to the list of known hosts. Permission denied, please try again. Permission denied, please try again. Liu_bo126914064@node01: Permission denied (publickey,gssapi-keyex,gssapi-with-mic,password).

这是一类错误,是计算无法ssh到其他节点。

解决思路

s_abaqus_keys

成都天玑智算科技有限公司