Andrew Moa Blog Site

Slurm提交Fluent和CFX的计算脚本

1. Fluent

首先要编写Fluent的jou脚本:

/file/read-case "small_fan.cas.h5" 
/solve/initialize/hyb-initialization 
/solve/iterate 100 
/file/write-case "small_fan_results.cas.h5" ok 
/file/write-data "small_fan_results.dat.h5" ok 
/exit ok 

这个jou文件很简单,就是告诉Fluent读取哪个文件、怎么初始化、迭代多少步、如何保存直至最后退出。如果计算比较复杂的,比如涉及到UDF加载或特殊条件初始化设置的,还需要增加相应的命令行。不熟悉怎么编写TUI命令的话,可以通过Fluent图形界面下面的命令行窗口录制脚本。

编写Slurm脚本:

#!/bin/bash 

#SBATCH --job-name=fluent_test	# 任务名称
#SBATCH --partition=debug 
#SBATCH --output=%j.out 
#SBATCH --error=%j.err 
#SBATCH -N 1	# 计算节点数
#SBATCH --ntasks-per-node=32	# 每节点计算进程数

cd $SLURM_SUBMIT_DIR

source ${HOME}/opt/ansys2025r1.env	# 载入许可证设置环境变量,这里应该使用绝对路径
export FLUENT=/ansys_inc/v251/fluent/bin/fluent	# fluent可执行文件路径
export MPI_TYPE=intel # intel or openmpi 
export JOU_FILE=`find . -name "*.jou"`
export MACHINEFILE=$SLURM_JOBID.node 
scontrol show hostnames $SLURM_JOB_NODELIST > $MACHINEFILE 

#注意fluent根据2维3维单双精度的不同有4钟计算模式:2d、3d、2ddp、3ddp,根据自己的需求选择对应的计算模式
$FLUENT 3ddp -g -t$SLURM_NPROCS -cnf=$MACHINEFILE -mpi=$MPI_TYPE -ssh -i $JOU_FILE

保存以上脚本,将待提交的cas文件和jou文件放到脚本所在文件夹,通过sbatch命令提交脚本即可。计算完成后将输出的结果文件下载到本地机器上处理。

2. CFX

相比fluent,cfx计算脚本简单很多:

阅读时长1分钟
Andrew Moa

PowerShell编写STAR-CCM+自动排队计算脚本

以前用STAR-CCM+在Windows工作站做计算的时候(没钱,公司舍不得上超算……),有时候一晚上要提交十几二十个计算任务(瞎卷ㄟ( ▔, ▔ )ㄏ),当然不可能十几个任务全都一起跑(机器遭不住),也不可能全程盯着它跑一个个手动提交(人遭不住)。几年前用PowerShell编写了这个简易的排队计算的模板,在这里分享给大家。

$title = "STAR-CCM+ 19.06.009-r8"	# 窗口标题,怎么填随你喜欢
$host.ui.RawUI.WindowTitle = $title

$STARCCM_PATH = "D:\XXX\Siemens\19.06.009-R8\STAR-CCM+19.06.009-R8\star\lib\win64\clang17.0vc14.2-r8\lib"	# 填写本机STAR-CCM+的安装绝对路径
$env:path += ";$STARCCM_PATH"
$run_dir = $pwd
$thread_number = 32	# 填写本机的CPU核心数

$Array = Get-ChildItem -Path $run_dir -Name "*.sim"
$n = 0

foreach($item in $Array)
{
    $n += 1
    $sub_dir = $n.ToString() + "_" + $item.Substring(0,$item.Length-4)
    mkdir $sub_dir
    mv $item $sub_dir
    cd $sub_dir
    $host.ui.RawUI.WindowTitle = $title + " - " + $item + " - " + $n + "/" + $Array.Count
    $log = $item + ".log"
    starccm+ $item -batch run -np $thread_number -mpi ms | tee $log
    cd $run_dir
}

把以上命令行以文本格式保存为.ps1脚本文件,和要提交计算的.sim文件放到同一个文件夹,然后通过终端运行这个脚本。会自动统计排队任务数,将计算的.sim文件转移至新建子文件夹,同时生成.log日志文件,也可以在输出窗口中监控运行情况。计算完成后关闭终端即可。

美中不足的是,不支持宏文件,也不支持临时增加或插入算例。

各位可以针对自己的情况,做一些针对性的调整。

如果碰到输出窗口和日志文件中有乱码的情况,多半是你的PowerShell不支持UTF-8所导致。参考以下方法1,在PowerShell窗口中输入:

# 配置文件一般位于:C:\Users\用户名\Documents\WindowsPowerShell\Microsoft.PowerShell_profile.ps1
# 如果没有就新建一个
notepad $PROFILE # 编辑配置文件

在配置文件中增加以下内容,保存退出:

$OutputEncoding = [console]::InputEncoding = [console]::OutputEncoding = [Text.UTF8Encoding]::UTF8
阅读时长1分钟
Andrew Moa