在完全没有安装微软 Visual Studio (MSVC) 的情况下,要仅使用 Fluent 自带的 Clang 编译器进行命令行编译,可以通过 Fluent 内置的SCons 工具链进行编译。
本文描述使用Fluent内置的纯 Clang 命令行编译UDF的完整操作步骤。
1 基本步骤
1.1 设置环境变量
打开 Windows 标准命令提示符(CMD),直接复制并运行以下命令(请确保 Ansys 默认安装在 C 盘,如有变动请修改第一行):
set FLUENT_INC=C:Program FilesAnsys Incv261fluent
set FLUENT_ARCH=win64
set FLUENT_UDF_CLANG=builtin
set FLUENT_UDF_COMPILER=clang
1.2 创建 UDF 目录结构
在工作目录下(假设 UDF 源码文件名为 my_udf.c),手动创建以下层级文件夹:
-
主文件夹: libudf -
子文件夹: libudfsrc -
子文件夹: libudfwin64 -
核心文件夹: libudfwin643d_node和libudfwin643d_host(以最常用的 3D并行计算 为例)
可以使用下面的命令(当前路径为工作目录):
md libudf
md libudfsrc
md libudfwin64
md libudfwin643d_node
md libudfwin643d_host
-
将 my_udf.c源码文件放入src文件夹中。可以使用下面的命令:
copy my_udf.c .libudfsrc
注:除了3d以外,还有三维双精度3ddp(创建3ddp_node及3ddp_host)、二维单精度2d(创建2d_node与2d_host)及二维双精度2ddp(创建2ddp_node及2ddp_host)。
”
1.3 配置编译脚本
若本机上没有安装 MSVC,此时只能使用 Fluent 自带的基于 Python 的 SCons 构建工具。
-
复制 SConstruct 模板
前往 Fluent 2026 R1 的 Fluent 源码区:
C:Program FilesAnsys Incv261fluentfluent26.1.0srcudf在该目录下找到sconstruct.udf文件,将其分别复制到3d_node和3d_host文件夹内。可以使用下面的命令来实现(假设当前cmd位于工作目录):copy "%FLUENT_INC%fluent26.1.0srcudfsconstruct.udf" .libudfwin643d_host
copy "%FLUENT_INC%fluent26.1.0srcudfsconstruct.udf" .libudfwin643d_node -
创建 user.txt 配置文件
在
3d_node和3d_host文件夹内,分别创建一个名为user.txt的文本文件。可以使用下面的命令:type nul > .libudfwin643d_hostuser.txt
type nul > .libudfwin643d_hostuser.txt -
修改 user.txt文件
(1)修改
3d_node文件夹下的user.txt内容:VERSION='3d_node'
FLUENT_ARCH='win64'
FLUENT_RELEASE='fluent26.1.0'
CSOURCES='my_udf.c'
HSOURCES=''(2)修改
3d_host文件夹下的user.txt内容:VERSION='3d_host'
FLUENT_ARCH='win64'
FLUENT_RELEASE='fluent26.1.0'
CSOURCES='my_udf.c'
HSOURCES=''(注:如果有自定义
.h头文件,请写在HSOURCES='my_header.h'中;若没有则保持HSOURCES=''留空)
1.4 命令行编译
分别进入两个目录执行以下命令:
-
编译 node 端(计算节点)
cd /d C:工作目录libudfwin643d_node
"%FLUENT_INC%ntbinwin64resolve.exe" -udf
rename sconstruct.udf SConstruct
"%FLUENT_INC%fluent26.1.0srcudfscons_builtin.bat"
-
编译 host 端(主控节点)
cd /d C:工作目录libudfwin643d_host
"%FLUENT_INC%ntbinwin64resolve.exe" -udf
rename sconstruct.udf SConstruct
"%FLUENT_INC%fluent26.1.0srcudfscons_builtin.bat"
2 多文件编译
如果有多个 .c 源码文件和 .h 头文件,可以将所有的c文件和h文件放到 src 文件夹中,然后修改 user.txt文件。
假设有三个源码文件 main.c、tools.c、physics.c,以及两个头文件 common.h、constants.h。
此时 user.txt 内容需要更新为:
-
在
3d_node文件夹下的user.txt:VERSION='3d_node'
FLUENT_ARCH='win64'
FLUENT_RELEASE='fluent26.1.0'
CSOURCES=['main.c', 'tools.c', 'physics.c']
HSOURCES=['common.h', 'constants.h'] -
在
3d_host文件夹下的user.txt:VERSION='3d_host'
FLUENT_ARCH='win64'
FLUENT_RELEASE='fluent26.1.0'
CSOURCES=['main.c', 'tools.c', 'physics.c']
HSOURCES=['common.h', 'constants.h']
文件配置完成后,编译命令完全不需要改变,直接按照之前的步骤在两个目录下分别运行即可:
"%FLUENT_INC%ntbinwin64resolve.exe" -udf
"%FLUENT_INC%fluent26.1.0srcudfscons_builtin.bat"
现在流程有了,下一步将其封装成skill,后面就可以直接使用AI进行编译了。
(完)

本篇文章来源于微信公众号: CFD之道








评论前必须登录!
注册