软件版本:fluent 15.0 + vs 2013
UDF 链接到fluent有两种方式,解释方式(interpreted)或者编译(compiled)方式。
解释方式不需要编译器,因此比较方便,但它速度慢。而且如果写的代码包括了除了udf.h之外的第三方库,很有可能出现错误。即使把第三方库放入udf头文件目录下,语法错误也难以解决,很劳神。使用这种方式不需要配置visual studio,但除非确定不会用到第三方库函数,否则的话还是配置vs,使用compiled方式更好。
编译方式速度快,而且能使用第三方库。提前需要配置好环境变量。而且这个很重要。
目前为止,compiled udf文件时,build出现的错误都是因为环境变量没配置好发生的。低级错误甚至包括在目录的files与(x86)之间少了一个空格,而导致环境变量配置失败。在找到这个错误时,感觉眼睛都瞎了。
build过程中,.obj文件已经好了,但是仍不能得到dll文件,错误提示为不能识别的外部。这是连接过程出现了问题。亲测有用的解决办法是,从command中打开fluent。
用管理员身份打开x64 的vs 命令符提示。输入命令fluent.exe启动ansys。问题迎刃而解。
此外,还有一个可能出现的连接问题,那就是配置环境变量的时候,lib选择过多,有版本冲突,会编译出错。因此注意lib环境变量设置的时候,不要贪多。出现了libcmt.lib 2019 2001的错误,最后解决的方法是,将include\改成了\include\x64,具体说来,就是设置到了include文件夹下的下一目录。(另外,在解决这个错误之前,花了很长时间在vs项目设定上找错误,但其实和那没关系。)
udf的源代码文件只支持.c。这是很显然的。但是它的加载面板上的cpp很迷惑人,以至于我不断地使用c++文件去挑战bug >_>。这也是一个低级错误。
出现少了basetsd.h头文件的提示,解决办法是,下载此文件,放在提示出错的hash.h文件同一个目录下。
basestd.h下载地址:https://datapacket.dl.sourceforge.net/project/hlanguage/Source/include/basetsd.h
如果使用了math.h头文件,会出现第482行报错。简单粗暴可以解决,从vs库文件夹下找到math.h文件,注释掉第482行,即可。
使用宏define_Zone_motion的时候,使用手册上介绍的定义axis和origin和velocity的函数N3D_D()之类的,报错。这是可以忽略的。只是ansys和vs的版本原因,vs的版本不够高导致。
环境变量的设置:
0.环境变量设置包括了vs和fluent两个软件的环境变量设置。
1.此电脑 -> 属性 -> 高级系统设置 -> 高级 -> 环境变量
2.新建环境变量,注意建立在用户变量区,不要建立在系统变量区:
变量:lib
值:(如下)
文件位置不确定的话,可以耐点烦去点开文件夹找找。配置V7.1A\lib是因为SDKs\windows下虽然有好几个vx.x,但只有7.1A点进去有lib文件夹。
变量:include
值:
变量:path
值:
3.确定以上三个环境变量配置好后,再配置fluent的环境变量。
进入fluent的安装目录:
E:\Program Files\ANSYS Inc\v150\fluent\ntbin\win64
双击setenv.exe,出现提示后,点击确定。完成环境变量配置。
4.重启。
5.检查 :win+r ->输入cmd ->输入cl 出现:
表明环境变量安装好了。通过:
以管理员方式打开,输入fluent.exe进入软件,就应该能使用UDF了。
免责声明:本文系网络转载或改编,未找到原创作者,版权归原作者所有。如涉及版权,请联系删