吾生有涯 学海无涯
析模有界 知识无界

命令行中利用clang编译UDF

在完全没有安装微软 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 构建工具。

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

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

    type nul > .libudfwin643d_hostuser.txt
    type nul > .libudfwin643d_hostuser.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:工作目录libudfwin643d_node

"%FLUENT_INC%ntbinwin64resolve.exe" -udf

rename sconstruct.udf SConstruct

"%FLUENT_INC%fluent26.1.0srcudfscons_builtin.bat"
  1. 编译 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.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%ntbinwin64resolve.exe" -udf

"%FLUENT_INC%fluent26.1.0srcudfscons_builtin.bat"

现在流程有了,下一步将其封装成skill,后面就可以直接使用AI进行编译了。


(完)

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

赞(0) 打赏
版权声明:未经允许,请勿随意用于商业用途。
文章名称:《命令行中利用clang编译UDF》
文章链接:https://www.topcfd.cn/42725/
本站资源仅供个人学习交流,请于下载后24小时内删除,不允许用于商业用途,否则法律问题自行承担。
分享到

说两句 抢沙发

评论前必须登录!

 

觉得文章有用就打赏一下文章作者吧

非常感谢你的打赏,我们将继续给力更多优质内容,让我们一起创建更加美好的网络世界!

支付宝扫一扫

微信扫一扫

登录

找回密码

注册