在Visual Studio中直接编译Fluent的UDF的总结(并行)

标签:
cfdudfvs编译二次开发 |
分类: fluent |
首先推荐国内大神编写的一款插件VC++ UDF Studio,安装完成即可实现UDF的编译调试的,插件的官方网站:https://vcudfstudio.bitbucket.io/,可考虑购买。注:我不是这款插件的作者
前面我们介绍了VS编译Fluent18.1以前(包含Fluent18.1)串行版本的UDF,这里我们继续介绍VS编译Fluent18.2以后(包含18.2)串行UDF和Fluent并行UDF的方法,其实只是稍有差异,通过下面的介绍,可自行体会:
Fluent版本:Fluent 19.0
Visual Studio版本:Visual Studio 2013
这里我们以三维双精度的UDF作为示例来讲解VS编译并行UDF的设置
首先我们启动VS
http://s5/mw690/0066xqHTzy7ioz1CT8854&690首先我们先新建主机节点的项目
http://s8/mw690/0066xqHTzy7ioz54jFZ47&690http://s16/mw690/0066xqHTzy7ioz5e1fF4f&690
http://s2/mw690/0066xqHTzy7ioz5dyql71&690
http://s11/mw690/0066xqHTzy7ioz5nB9g0a&690
http://s4/mw690/0066xqHTzy7ioz5w5hN53&690
http://s15/mw690/0066xqHTzy7ioz5x8Sy3e&690
http://s12/mw690/0066xqHTzy7ioz5CeqD6b&690
http://s6/mw690/0066xqHTzy7ioz5CJlXc5&690
http://s2/mw690/0066xqHTzy7ioz5K7VTa1&690
http://s11/mw690/0066xqHTzy7ioz5LLaGca&690
http://s6/mw690/0066xqHTzy7ioz5QZnvf5&690
http://s1/mw690/0066xqHTzy7ioz5V3A4f0&690
http://s4/mw690/0066xqHTzy7ioz5Zxdhc3&690
Fluent当中与主机节点相关的头文件:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\3ddp_host
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\main
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\addon-wrapper
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\io
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\species
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\pbns
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\numerics
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\sphysics
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\storage
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\mphase
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\bc
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\models
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\material
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\amg
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\util
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\mesh
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\udf
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\ht
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\dx
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\turbulence
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\parallel
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\etc
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\ue
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\dpm
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\dbns
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\cortex\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\client\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\tgrid\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\multiport\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\multiport\mpi_wrapper\src
http://s16/mw690/0066xqHTzy7iozbTo6P9f&690此处需要注意一下:请务必严格按照上面的头文件顺序,否则编译的时候可能会出现下面的错误:
http://s12/mw690/0066xqHTzy7iozfduXx0b&690示例是三维双精度的UDF,所以是
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\3ddp_host
如果是二维单精度就需要改变为:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\2d_host
如果是二维双精度就需要改变为:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\2ddp_host
如果是三维单精度就需要改变为:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\3d_host
我们新建一个头文件
http://s11/mw690/0066xqHTzy7iozmnqgWca&690http://s12/mw690/0066xqHTzy7iozmu9fR0b&690
头文件内容如下:
http://s3/mw690/0066xqHTzy7itcjYVyi42&690我们新建一个源文件
http://s1/mw690/0066xqHTzy7iozJ80zSe0&690http://s9/mw690/0066xqHTzy7iozJf1TW88&690
源文件内容如下:
http://s15/mw690/0066xqHTzy7iozL4PL09e&690完成以上步骤以后,接下来我们新建节点的项目
http://s4/mw690/0066xqHTzy7ioBGVK4r03&690http://s4/mw690/0066xqHTzy7iozOq3yX73&690
http://s3/mw690/0066xqHTzy7iozOlt0Cb2&690
http://s3/mw690/0066xqHTzy7iozUomrg52&690
http://s13/mw690/0066xqHTzy7ioBtwqSwcc&690
http://s4/mw690/0066xqHTzy7ioA1u1SXf3&690
Fluent当中与节点相关的头文件:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\3ddp_node
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\main
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\addon-wrapper
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\io
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\species
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\pbns
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\numerics
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\sphysics
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\storage
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\mphase
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\bc
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\models
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\material
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\amg
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\util
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\mesh
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\udf
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\ht
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\dx
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\turbulence
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\parallel
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\etc
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\ue
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\dpm
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\src\dbns
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\cortex\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\client\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\tgrid\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\multiport\src
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\multiport\mpi_wrapper\src
http://s11/mw690/0066xqHTzy7ioA4nrwS6a&690此处仍需严格按照上面的头文件顺序
示例是三维双精度的UDF,所以是
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\3ddp_node
如果是二维单精度就需要改变为:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\2d_node
如果是二维双精度就需要改变为:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\2ddp_node
如果是三维单精度就需要改变为:
D:\Program Files\ANSYS Inc\v190\fluent\fluent19.0.0\win64\3d_node
我们新建一个头文件
http://s8/mw690/0066xqHTzy7ioA6y82b77&690http://s11/mw690/0066xqHTzy7ioA6zdc6ea&690
头文件内容如下:
http://s8/mw690/0066xqHTzy7itcm3eZ107&690我们直接将主机节点的源文件复制到节点项目当中
http://s15/mw690/0066xqHTzy7iqilKe3I3e&690http://s5/mw690/0066xqHTzy7iqilUxW464&690
以后务必主机节点和节点项目当中源代码是一致的,头文件请按照前面内容,以后请勿修改
http://s3/mw690/0066xqHTzy7ioAilu8y82&690http://s8/mw690/0066xqHTzy7ioAip2bd97&690
编译成功
在算例目录下我们看到生成了libudf文件夹
http://s6/mw690/0066xqHTzy7ioAwnP2R45&690有可能我们会遇见如下错误
http://s14/mw690/0066xqHTzy7ioAyhj1Hcd&690我们只需要找到头文件中冲突的函数(我的头文件位置为:G:\Program Files\ANSYS Inc\v182\fluent\fluent18.2.0\client\src\sys_master.h)将冲突的cbrt和cbrtf函数注释掉
http://s4/mw690/0066xqHTzy7ioAzyRBp83&690
然后重新编译即可
我们启动Fluent,将Fluent目录定位到刚才的算例目录
http://s12/mw690/0066xqHTzy7ioAJ1Zmb9b&690http://s9/mw690/0066xqHTzy7ioAJ4otia8&690
http://s13/mw690/0066xqHTzy7ioAJ9nE81c&690
http://s12/mw690/0066xqHTzy7ioAJ4W71cb&690
http://s3/mw690/0066xqHTzy7ioAJcuuCd2&690
http://s10/mw690/0066xqHTzy7ioAJGUD759&690
http://s5/mw690/0066xqHTzy7ioAJJX6c54&690
http://s10/mw690/0066xqHTzy7ioAJPkhj39&690
为了方便以后的使用,我们可以将项目导出为项目模板方便以后使用,这里与串行的类似,只是这里需要将主机节点项目和节点项目分别导出为模板,下次仍需要添加两次项目来生成并行的解决方案
http://s3/mw690/0066xqHTzy7ioAMH7zQf2&690