Andrew Moa Blog Site

Ubuntu编译安装SU2

SU2 是一款由斯坦福大学航空航天学院开发的开源CFD求解器,基于C++和Python开发,定位类似于OpenFOAM,但不支持多面体网格。相比OpenFOAM,SU2在高速可压缩流方面的求解更有优势。

下载SU2源代码:

mkdir $HOME/su2code && cd $HOME/su2code
# 只clone最近commit版本,加快下载速度
git clone https://github.com/su2code/SU2.git --depth=1

定义环境变量,新建配置文件su2.env

touch $HOME/su2code/su2.env
chmod +x $HOME/su2code/su2.env
vim $HOME/su2code/su2.env

su2.env文件中加入以下内容,保存退出:

#!/bin/sh

# 定义SU2环境变量
export SU2_RUN=$HOME/su2code/bin	# 编译完成后su2的安装路径
export SU2_HOME=$HOME/su2code/SU2	# 下载su2的源码的文件夹路径
export PATH=$PATH:$SU2_RUN
export PYTHONPATH=$SU2_RUN:$PYTHONPATH

编译程序的配置文件meson_options.txt位于SU2源代码文件夹下,根据自己的需求调整其中的编译选项:

vim $HOME/su2code/SU2/meson_options.txt

这里打开mpi和blas支持,修改以下两行的value:

option('with-mpi',   type : 'feature', value : 'enabled', description: 'enable MPI support')
option('enable-openblas', type : 'boolean', value : true, description: 'enable BLAS and LAPACK support via OpenBLAS')

如果是Intel的机器,建议打开mkl支持。

默认支持的blas库是openblas,要先下载openblas库:

sudo apt install libopenblas-dev -y

进入下载的源码目录,运行编译程序

# 载入环境变量
source $HOME/su2code/su2.env
# 进入源码文件夹
cd $SU2_HOME
# 配置编译器,生成ninja构建文件
# 配置过程中会自动从git上下载外部依赖
# 非常花时间……
./meson.py build --prefix=$SU2_RUN/..
# 开始编译并安装
./ninja -C build install

验证是否安装成功:

SU2_CFD --help

安装成功会输出软件版本号和帮助信息。

阅读时长1分钟
Andrew Moa

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

Tabby配置MSYS2

Tabby 是一款颜值很高的终端工具,最开始用它是为了替代本机终端,用着用着后来发现越来越多的优点。首先它内置支持SSH连接方式,同时支持SFTP传输文件,设置操作简单,避免了在Windows终端中的繁琐设置。其次,可以用来替代MSYS2、Cygwin原有的Mintty界面,实现不同终端之间无缝切换。关于Tabby终端中如何调用MSYS2,下面记录一下配置方法:

  1. 首先在Tabby设置中克隆一个CMD配置:

    d3078fcb85ac34f312416cd671b2cb58.png

  2. 在名称中填写要调用的MSYS2工具链:

    462779a7512334158043be9cbd1a265c.png

    注意,图标这里不能直接指派ico文件,Tabby无法识别,必须将ico图标转换成svg格式。这种ico2svg在线转换资源很多,网上一搜一大把:

    转换完成后下载svg文件,用文本工具打开将svg源码复制粘贴到上面的图标栏里,Tabby就可以正常显示图标了。

    <?xml version="1.0" encoding="UTF-8" standalone="no"?>
    <!DOCTYPE svg PUBLIC "-//W3C//DTD SVG 1.1//EN" "http://www.w3.org/Graphics/SVG/1.1/DTD/svg11.dtd">
    <svg version="1.1" id="Layer_1" xmlns="http://www.w3.org/2000/svg" xmlns:xlink="http://www.w3.org/1999/xlink" x="0px" y="0px" width="16px" height="16px" viewBox="0 0 16 16" enable-background="new 0 0 16 16" xml:space="preserve">  <image id="image0" width="16" height="16" x="0" y="0"
        xlink:href="data:image/png;base64,iVBORw0KGgoAAAANSUhEUgAAABAAAAAQCAMAAAAoLQ9TAAAAIGNIUk0AAHomAACAhAAA+gAAAIDo
    AAB1MAAA6mAAADqYAAAXcJy6UTwAAADPUExURb5kPsBpRdWbgtSZgL9lQMBoQ8+McMyEZsJuS/36
    +P///9uplL5lP+3UyevOws2HafDc1NCPdOjHuejIur9mQO3TyeXCs8NxTv37+vv18sh7W8h8XP/+
    /uS+rt2umtOXfuXBsvfs6Pjv6+bDtMFqRvny7vHf1/36+dyrlvXn4e/a0dadhMBpRP79/f7+/fz4
    9sJuSvHe1vnw7PPi2+O9rNqmkN2tmeC2pP78+8Z3Vfft6L9mQfz59+fFt8JtSdKVe79nQsuDZcV0
    UtGSd8NvTFLhcR8AAAABYktHRApo0PRWAAAAB3RJTUUH6QMaAysVnHCKGgAAAJpJREFUGNONj1cS
    ggAUA2NBIdi7WAErYEFFBRXr/c8k7QC8n8zuRyYPSHWZbC4fhFAoJkKUKAOlMiuJqJI1oE42EtEk
    pRbaZCfmbq9PKoMhOYrFmDI5maoa9Yhn84VC6svVmkYkZJrWhtvd3qYkBmwdNAFH8hR2O4FweAYu
    vLowSc/CzbMtwL0/gqUGVR/+8xUWvT/h9u8vxaN/UKUNLao7WagAAAAldEVYdGRhdGU6Y3JlYXRl
    ADIwMjUtMDMtMjZUMDM6NDM6MjArMDA6MDDH702KAAAAJXRFWHRkYXRlOm1vZGlmeQAyMDI1LTAz
    LTI2VDAzOjQzOjIwKzAwOjAwtrL1NgAAACh0RVh0ZGF0ZTp0aW1lc3RhbXAAMjAyNS0wMy0yNlQw
    Mzo0MzoyMSswMDowMEfQ310AAAAASUVORK5CYII=" />
    </svg>
    

    禁用动态标签页标题:根据自己需要设置,建议选上。分组:需要先新建配置文件组,然后再在这里选。

阅读时长1分钟
Andrew Moa