在完全没有安装微软 Visual Studio (MSVC) 的情况下,要仅使用 Fluent 自带的 Clang 编译器进行命令行编译,可以通过 Fluent 内置的SCons 工具链进行编译。
本文描述使用Fluent内置的纯 Clang 命令行编译UDF的完整操作步骤。
打开 Windows 标准命令提示符(CMD),直接复 制并运行以下命令(请确保 Ansys 默认安装在 C 盘,如有变动请修改第一行):
set FLUENT_INC=C:\Program Files\Ansys Inc\v261\fluent
set FLUENT_ARCH=win64
set FLUENT_UDF_CLANG=builtin
set FLUENT_UDF_COMPILER=clang
在工作目录下(假设 UDF 源码文件名为 my_udf.c),手动创建以下层级文件夹:
libudflibudf\srclibudf\win64libudf\win64\3d_node 和 libudf\win64\3d_host(以最常用的 3D并行计算 为例)可以使用下面的命令(当前路径为工作目录):
md libudf
md libudf\src
md libudf\win64
md libudf\win64\3d_node
md libudf\win64\3d_host
my_udf.c 源码文件放入 src 文件夹中。可以使用下面的命令:copy my_udf.c .\libudf\src
注:除了3d以外,还有三维双精度3ddp(创建3ddp_node及3ddp_host)、二维单精度2d(创建2d_node与2d_host)及二维双精度2ddp(创建2ddp_node及2ddp_host)。
”
若本机上没有安装 MSVC,此时只能使用 Fluent 自带的基于 Python 的 SCons 构建工具。
复 制 SConstruct 模板
前往 Fluent 2026 R1 的 Fluent 源码区:C:\Program Files\Ansys Inc\v261\fluent\fluent26.1.0\src\udf\在该目录下找到 sconstruct.udf 文件,将其分别复 制到 3d_node 和 3d_host 文件夹内。可以使用下面的命令来实现(假设当前cmd位于工作目录):
copy "%FLUENT_INC%\fluent26.1.0\src\udf\sconstruct.udf" .\libudf\win64\3d_host
copy "%FLUENT_INC%\fluent26.1.0\src\udf\sconstruct.udf" .\libudf\win64\3d_node
创建 user.txt 配置文件
在 3d_node 和 3d_host 文件夹内,分别创建一个名为 user.txt 的文本文件。可以使用下面的命令:
type nul > .\libudf\win64\3d_host\user.txt
type nul > .\libudf\win64\3d_host\user.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='' 留空)
分别进入两个目录执行以下命令:
cd /d C:\工作目录\libudf\win64\3d_node
"%FLUENT_INC%\ntbin\win64\resolve.exe" -udf
rename sconstruct.udf SConstruct
"%FLUENT_INC%\fluent26.1.0\src\udf\scons_builtin.bat"
cd /d C:\工作目录\libudf\win64\3d_host
"%FLUENT_INC%\ntbin\win64\resolve.exe" -udf
rename sconstruct.udf SConstruct
"%FLUENT_INC%\fluent26.1.0\src\udf\scons_builtin.bat"
如果有多个 .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%\ntbin\win64\resolve.exe" -udf
"%FLUENT_INC%\fluent26.1.0\src\udf\scons_builtin.bat"
现在流程有了,下一步将其封装成skill,后面就可以直接使用AI进行编译了。
(完)