本文介绍利用Visual Stuido CMake编译与调试Fluent UDF的方法。
Fluent UDF的编译方法很多。Fluent UDF作为一段C语言代码,原则上只要能够编译C程序的方法都可以用于编译Fluent UDF。用户可以选择利用Visual Studio或Fluent内置的编译器来完成UDF的编译工作。然而Fluent文档中仅描述了UDF的编译工作,却只字未提调试工作该如何去做。对于很短的UDF程序,可以人工调试,但对于复杂的程序,有必要借助于IDE工具来辅助进行编译。
具体实现的原理,在参考文章中已经讲得非常明白了,这里就不重复了。
下面描述文中提到的方法的具体使用方式。
所需的文件已经开源,地址见附件。
cas folder:
│ your_CAS.cas
│
└─lib_name //自定义,可习惯性改成libudf
│ your_udf.c //udf源文件
│ CMakeLists.txt
│
└─support
pre_chore.cmd
pre_pre_make.cmd
pre_make.cmd
udf_names.c
ud_io1.h
但其实可以放到任意英文路径中即可。如下图所示,将github上下载下来的文件夹udf-master直接放到case路径下。
FLUENT_INC
。如下图所示。打开本地文件夹
udf-master
文件夹并打开CMakeLists.txt
文件,并修改相应的内容注释写得挺明白了。注意这里设置的版本号必须与前面在环境变量中指定的FLUENT_INC
的版本一致。另外这里的3d编译出来的UDF版本是3ddp,若想要编译3d版本,则需要修改node及host中的CMakeLists.txt文件中第2行的内容,将dp
去掉即可。
myUDF.cpp
DPM.cpp
修改为自己想要的名字,例如这里将其修改为myUDF.cpp
。修改文件名后VS会提示错误,此时利用菜单生成 → 全部清理
刷新一下就可以了。注:这里其实完全可以不改文件名,只需要保证CMakeLists.txt中的文件名与UDF文件名一致即可。但强迫症表示不改文件名活不去下。
”
如下面随便编写的代码。
项目 → 删除缓存并重新配置
对刷新配置文件中的参数信息生成 → 全部重新生成
编译源文件此时能够生成libudf.dll文件,然而却跑到EX2文件夹下面去了。
解决方法1:
此时可以在EX2路径下创建一个新的文件夹,如libudf,然后将win64文件夹整体放入libudf文件夹中,处理完毕后文件结构如下图所示,这样就可以在case文件中直接加载libudf了。
如果只是编译UDF,采用这种方式即可。
解决方法2:
如果要调试UDF,则可以按下面的方式进行修改。
host/CMakeLists.txt
及node/CMakeLists.txt
文件,修改host/CMakeLists.txt文件,如下图所示修改node/CMakeLists.txt文件,如下图所示
注:源文件中多了两个点,输出路径跑到上一级菜单了。
”
生成 → 全部重新生成
编译源文件注意,前面没有修改文件夹udf-master的名字,因此后面在Fluent中调用UDF的时候要输入udf-master。后面测试和调试工作以此为准。
注:若想使用libudf,则可以在前面的文件准备阶段将udf-master文件夹改名为libudf。
”
3ddp
方式启动Fluent(与前面的配置中保持一致)点击Load后加载dll,下图显示加载成功。
测试UDF,如下图所示,能够成功执行。
Visual Studio具有强大的程序调试功能。
调试 → 附加到进程...
fl2220.exe
,点击附加
按钮之后即可以在源代码中下断点进行调试了,和常规的调试方式并无不同,这里就不赘述了。
(完)
注:本文参考胶然今天打什么
发表的文章https://zhuanlan.zhihu.com/p/492619039,在此对作者的分享精神致以崇高的敬意。