加载中…
个人资料
  • 博客等级:
  • 博客积分:
  • 博客访问:
  • 关注人气:
  • 获赠金笔:0支
  • 赠出金笔:0支
  • 荣誉徽章:
正文 字体大小:

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

(2018-02-23 12:36:26)
标签:

cfd

udf

vs

编译

二次开发

分类: fluent

首先推荐国内大神编写的一款插件VC++ UDF Studio,安装完成即可实现UDF的编译调试的,插件的官方网站:https://vcudfstudio.bitbucket.io/,可考虑购买。注:我不是这款插件的作者

前面我们介绍了VS编译Fluent18.1以前(包含Fluent18.1)串行版本的UDF,这里我们继续介绍VS编译Fluent18.2以后(包含18.2)串行UDFFluent并行UDF的方法,其实只是稍有差异,通过下面的介绍,可自行体会:

Fluent版本:Fluent 19.0

Visual Studio版本:Visual Studio 2013

这里我们以三维双精度的UDF作为示例来讲解VS编译并行UDF的设置

首先我们启动VS

http://s5/mw690/0066xqHTzy7ioz1CT8854&690

首先我们先新建主机节点的项目

http://s8/mw690/0066xqHTzy7ioz54jFZ47&690
http://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&690
http://s12/mw690/0066xqHTzy7iozmu9fR0b&690

头文件内容如下:

http://s3/mw690/0066xqHTzy7itcjYVyi42&690

我们新建一个源文件

http://s1/mw690/0066xqHTzy7iozJ80zSe0&690
http://s9/mw690/0066xqHTzy7iozJf1TW88&690

源文件内容如下:

http://s15/mw690/0066xqHTzy7iozL4PL09e&690

完成以上步骤以后,接下来我们新建节点的项目

http://s4/mw690/0066xqHTzy7ioBGVK4r03&690
http://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&690
http://s11/mw690/0066xqHTzy7ioA6zdc6ea&690

头文件内容如下:

http://s8/mw690/0066xqHTzy7itcm3eZ107&690

我们直接将主机节点的源文件复制到节点项目当中

http://s15/mw690/0066xqHTzy7iqilKe3I3e&690
http://s5/mw690/0066xqHTzy7iqilUxW464&690

以后务必主机节点和节点项目当中源代码是一致的,头文件请按照前面内容,以后请勿修改

http://s3/mw690/0066xqHTzy7ioAilu8y82&690
http://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)将冲突的cbrtcbrtf函数注释掉

http://s4/mw690/0066xqHTzy7ioAzyRBp83&690

然后重新编译即可 

我们启动Fluent,将Fluent目录定位到刚才的算例目录

http://s12/mw690/0066xqHTzy7ioAJ1Zmb9b&690
http://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


0

阅读 收藏 喜欢 打印举报/Report
  

新浪BLOG意见反馈留言板 欢迎批评指正

新浪简介 | About Sina | 广告服务 | 联系我们 | 招聘信息 | 网站律师 | SINA English | 产品答疑

新浪公司 版权所有