目录
一、软件介绍
二、脚本编写
2.1 jou文件
2.2 slurm脚本文件
三、作业提交及查看
四、案例演示
4.1 网格模型
4.2 jou脚本
4.3 slurm脚本
4.4 计算
4.5 结果查看
从本文开始,我们将介绍如何在超级计算机上使用科学计算、工程仿真计算软件开展计算,包括计算流体力学、有限元、热分析、电磁、多物理场耦合、分子动力学等,涵盖流体力学、固体力学、热力学、电磁等领域。各软件内容主要包括软件介绍、脚本编写、作业提交及查看、案例演示等。所有软件均采用命令行的形式进行使用。
一、软件介绍
ANSYS Fluent是全球领先的通用计算流体力学软件,主要用于模拟从不可压缩到高度可压缩范围内的各种复杂流动,它在转捩与湍流、热传递与相变、化学反应、燃烧、多相流等多方面有广泛应用,具有丰富的物理模型、数值方法和非常强大的前后处理功能。Fluent拥有多种多相流模型及传热燃烧模型,可以应用于从可压到不可压、低速到高超音速、单相流到多相流、化学反应、燃烧、气固混合等几乎所有与流体相关的领域。用户可对显式或隐式差分格式进行选择,从而在计算速度、稳定性和精度方面达到最佳。同时,经过大量算例验证,Fluent稳定性好,计算精度高。
软件主要应用于航空航天、汽车设计、船舶制造、电子电气、化工机械、生物医药等领域。
二、脚本编写
以命令行模式使用软件,需要编写软件脚本.jou文件、slurm脚本文件。
2.1 jou文件
jou脚本文件主要用于fluent软件计算流程控制。其中以“;”开头的语句为注释语句,大致的计算流程为:读取case文件→读入data→设置迭代步数→计算结果case保存→退出。
①稳态计算 run.jou
;算例输入文件
/file/read-case "steady.cas"
;从头开始计算,初始化
/solve/initialize/initialize-flow
;数据输入文件(如果从头开始计算,则无需该语句)
/file/read-data "steady.dat"
;设置迭代步数
/solve/iterate 1000
;保存结果case文件
/file/write-case "results.cas"
;保存结果data文件
/file/write-data "results.dat"
;退出
exit
yes
②瞬态计算 run.jou
;算例输入文件
/file/read-case "unsteady.cas"
;从头开始计算,初始化
/solve/initialize/initialize-flow
;数据输入文件(如果从头开始计算,则无需该语句)
/file/read-data "unsteady.dat"
;每迭代100步保存一次
/file/auto-save/data-frequency 100
;时间步长为0.01s
/solve/set/time-step 0.01
;设置总迭代步数10000,每步迭代50次
/solve/dua-time-iterate 10000 50
;保存结果case文件
/file/write-case "results.cas"
;保存结果data文件
/file/write-data "results.dat"
;退出
exit
yes
③瞬态计算(包含UDF) run.jou
;算例输入文件
/file/read-case "unsteady-UDF.cas"
;从头开始计算,初始化
/solve/initialize/initialize-flow
;数据输入文件(如果从头开始计算,则无需该语句)
/file/read-data "unsteady-UDF.dat"
;编译test.c UDF文件,c文件与cas、dat文件放在同一个目录下
/define/user-defined/compiled-function/compiler libudf yes test.c
;每迭代100步保存一次
/file/auto-save/data-frequency 100
;时间步长为0.01s
/solve/set/time-step 0.01
;设置总迭代步数10000,每步迭代50次
/solve/dua-time-iterate 10000 50
;保存结果case文件
/file/write-case "results-UDF.cas"
;保存结果data文件
/file/write-data "results-UDF.dat"
;退出
exit
yes
2.2 slurm脚本文件
针对采用slurm作业调度系统的超算集群,需要通过编写slurm脚本文件进行作业提交。Fluent.slurm内容如下:
#!/bin/bash
#SBATCH -J Fluent #指定作业名称
#SBATCH -p test #指定分区队列
#SBATCH -N 2 #指定节点数
#SBATCH -n 64 #指定进程数
#SBATCH --ntasks-per-node=32 #指定单个节点使用多少核
#SBATCH --cpus-per-task=1 #指定单个核使用多少线程
export PATH=/path/your/fluent:$PATH #添加Fluent软件路径
MACHINEFILE="nodes.$SLURM_JOB_ID"
srun -l /bin/hostname | sort -n | awk '{print $2}' > $MACHINEFILE
fluent 3ddp -g -mpi=intel -cnf=$MACHINEFILE -t $SLURM_NTASKS -slurm -i run.jou
#3d为三维单精度 3ddp为三维双精度 2d为二维单精度 2ddp为二维双精度
三、作业提交及查看
采用sbatch命令提交Fluent作业。
sbatch Fluent.slurm
使用squeue命令查看作业提交情况。
squeue
四、案例演示
这里我们使用Fluent 2022R1对鼓风机进行仿真模拟。
4.1 网格模型
采用双精度计算,总网格数为300万。
Viscous Model采用Transition SST模型,参数设置如下:
4.2 jou脚本
算例的run.jou脚本文件如下:
/file set-tui-version "20.1"
/file read-case "./air-blower.cas"
/define named-expressions edit "H" definition "123.9[m]" q
/solve iterate 100
parallel/time/usage
/file/write-case "results.cas"
/file/write-data "results.dat"
exit
yes
4.3 slurm脚本
算例的Fluent.slurm脚本文件如下:
#!/bin/bash
#SBATCH -J Fluent
#SBATCH -p test
#SBATCH -N 4
#SBATCH -n 64
#SBATCH --ntasks-per-node=16
#SBATCH --cpus-per-task=1
export PATH=/path/your/fluent:$PATH #添加Fluent软件路径
MACHINEFILE="nodes.$SLURM_JOB_ID"
srun -l /bin/hostname | sort -n | awk '{print $2}' > $MACHINEFILE
fluent 3ddp -g -mpi=intel -cnf=$MACHINEFILE -t $SLURM_NTASKS -slurm -i run.jou
4.4 计算
使用sbatch提交作业:
sbatch Fluent.slurm
迭代计算完成。
4.5 结果查看
计算结果保存在results.cas文件中,可以将文件下载到本地,使用可视化软件进行结果查看。这里使用Fluent 2022R1进行查看。
湍动强度分布云图
速度分布云图
静压分布云图
速度流线分布