本文摘要(由AI生成):
本文主要介绍了三种编译Fluent UDF的方法,包括使用Visual Studio进行编译、使用Fluent内置编译器进行编译和使用GCC进行编译。其中,使用Visual Studio进行编译是最传统的方法,但需要安装Visual Studio和Visual C Build Tools。使用Fluent内置编译器进行编译则不需要安装Visual Studio,但可能会出现一些警告信息。使用GCC进行编译需要配置很多参数,但编译速度较快。
本文描述编译Fluent UDF的若干种方法。
最近总有人在后台留言问到UDF编译的问题,懒得一一回复了,干脆总结写篇文章得了。
这是最传统的编译方式。从最古老的Fluent版本一直到现在最新的版本,Visual Studio一直都是Windows操作系统下Fluent的好基友。然而Visual Studio的个头颇大,安装起来很是痛苦,尤其是最新的几个版本不支持本地安装,如果网络条件不好,几个G的文件下载起来也是要人命的。事实上Fluent UDF的编译并不需要安装Visual Studio,而是需要安装Visual C Build Tools(中文名:Microsoft C 生成工具),其可以在网络上免费下载得到,其网址:https://visualstudio.microsoft.com/zh-hans/visual-cpp-build-tools/。不过不是所有人都会配置这玩意儿,所以图省事儿,大家都是用Visual Studio,装完之后软件自动帮我们将一些环境变量给配置好了。
利用Visual Studio编译UDF需要配置UDF.bat
文件,此文件路径位于文件夹C:\Program Files\ANSYS Inc\v221\fluent\ntbin\win64
中。修改此文件很简单,只需要利用文本编辑器打开udf.bat文件,修改MSVC_DEFAULT
的工作路径即可。其实如果Visual Studio是按默认路径安装的(安装到C:\Program Files(x86)
文件夹中的话,是不需要修改任何内容即可使用Fluent进行UDF编译的。
如果在Fluent编译过程中,出现如nmake
之类的错误提示,那多半就是Visual Studio安装路径没有指定正确所导致。
指定了环境变量之外,在Fluent启动之前还需要切换到Environment
选项卡,并勾选选项Setup Compilation Environment for UDF。
如果安装了Visual Studio,也可以在外部用命令行编译UDF,详细过程可见文章Fluent UDF【15】:外部编译UDF。
Fluent在最近几个版本中(好像是2019,具体记不清了)添加了内置编译器,这样在编译UDF的时候就不需要安装Visual Studio了。
如下图所示,在UDF编译对话框中勾选选项Use Built-In Compiler即可使用内置编译器。从Fluent安装路径中的文件来看,内置的编译器似乎是clang。
使用内置编译器编译经常会出现一些警告信息,这是编译器兼容性的问题,不会影响UDF加载及使用,通常可以忽略。
在较新的Fluent版本中,建议使用此方法进行UDF的编译。
UDF本质上还是C语言程序,理论上来讲,任何C编译器都能够用于UDF的编译。比如在Linux下广泛使用的GCC编译器同样可以在Windows下对UDF进行编译。
不过利用GCC编译UDF需要配置很多参数,其中过程颇为麻烦,编译细节可参阅文章:GCC编译Fluent UDF。
不过不用担心,万能的网友已经帮我们将问题解决好了。这里推荐使用硫酸亚铜提供的UDF编译工具(下载链接链接:见附件)
若Fluent安装在系统盘,在使用此工具之前,需要修改Fluent安装文件夹的只读属性,否则没法编译。
编译UDF
工具,选择源代码以及各种选项后,点击编译按钮进行编译第一次编译因为需要将Fluent中的一些可执行文件编译为中间库,所以会比较慢,后面再编译就很快了,至少要比Visual Studio快很多。
编译出错,提示头文件cx.h
中所包含的string_safe.h文件没找到。但这个文件其实是存在的,可以搜索Fluent安装路径找到。
C:\Program Files\ANSYS Inc\v221\fluent\fluent22.1.0\cortex\src/
文件夹中),用文本文件将其打开,并修改文件继续编译,如果还有存在文件找不到的错误提示,那么采用相同的方法进行处理。这里可能要修改4个文件,主要是tgrid文件夹下的hash2.h与hash.h文件在一些源代码中找不到,可以手动搜索找到这些文件,然后将其绝对路径添加到相应文件中,如上图所示。
若没有任何问题话,编译完毕会如下图所示。采用此方式编译UDF不会出现乱码提示,该工具对于复杂的UDF调试是非常好用的。
此工具支持复杂的C 代码编译。
(本文结束)