首页/文章/ 详情

命令行中利用clang编译UDF

精品
作者优秀平台推荐
详细信息
文章亮点
作者优秀
优秀教师/意见领袖/博士学历/特邀专家
平台推荐
内容稀缺
1月前浏览569

在完全没有安装微软 Visual Studio (MSVC) 的情况下,要仅使用 Fluent 自带的 Clang 编译器进行命令行编译,可以通过 Fluent 内置的SCons 工具链进行编译。

本文描述使用Fluent内置的纯 Clang 命令行编译UDF的完整操作步骤。

1 基本步骤

1.1 设置环境变量

打开 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

1.2 创建 UDF 目录结构

在工作目录下(假设 UDF 源码文件名为 my_udf.c),手动创建以下层级文件夹:

  • 主文件夹:libudf
  • 子文件夹:libudf\src
  • 子文件夹:libudf\win64
  • 核心文件夹:libudf\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)。

1.3 配置编译脚本

若本机上没有安装 MSVC,此时只能使用 Fluent 自带的基于 Python 的 SCons 构建工具。

  1. 复 制 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
  2. 创建 user.txt 配置文件

    在 3d_node 和 3d_host 文件夹内,分别创建一个名为 user.txt 的文本文件。可以使用下面的命令:

    type nul > .\libudf\win64\3d_host\user.txt
    type nul > .\libudf\win64\3d_host\user.txt
  3. 修改 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 命令行编译

分别进入两个目录执行以下命令:

  1. 编译 node 端(计算节点)
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"
  1. 编译 host 端(主控节点)
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"

2 多文件编译

如果有多个 .c 源码文件和 .h 头文件,可以将所有的c文件和h文件放到 src 文件夹中,然后修改 user.txt文件。

假设有三个源码文件 main.ctools.cphysics.c,以及两个头文件 common.hconstants.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进行编译了。


(完)


来源:CFD之道
FluentUDFpythonANSYS
著作权归作者所有,欢迎分享,未经许可,不得转载
首次发布时间:2026-06-29
最近编辑:1月前
CFD之道
博士 | 教师 探讨CFD职场生活,闲谈CFD里外
获赞 2716粉丝 12618文章 945课程 27
点赞
收藏
作者推荐
未登录
还没有评论
课程
培训
服务
行家
VIP会员 学习计划 福利任务
下载APP
联系我们
帮助与反馈