FLUENT UDF中关于动网格的DEFINE宏均要求为编译型。FLUENT的UDF运行环境有两种:解释型与编译型。虽然两种方式都是采用编译,但是编译方式及编译后获得的结果是不同的。编译型UDF需要通过Complied进行编译,编译后得到相应的dll文件。而解释型UDF则是通过Interprete进行加载,不会生成dll文件。据我的直觉,编译型UDF可能利用了钩子函数的技术。

一、编译型UDF与解释型UDF的差异(翻译自UDF手册)

1、解释型UDF

    一个精简的平台
    都能被作为编译型UDF使用
    不需要C编译器(利用FLUENT自身的编译器)
    比编译型UDF反应慢
    在方法方面受到较多的限制
    无法被链接到编译系统或其它库
    只能使用预定义宏访问存储于ansys fluent中的数据

2、编译型UDF

    比解释型UDF反应迅速
    没有诸多C语法限制
    能够使用其它语言编写的函数
    当具有一些解释型UDF不能处理的功能时,无法作为解释型UDF使用

3、选取原则

    对于小型的、简单的功能,使用解释型UDF
    复杂功能使用编译型UDF。(如具有较大的CPU开销、需要访问公共库)

二、配置UDF编译环境

对于编译型UDF,在fluent中加载时,需要调用C编译器将其编译成DLL文件。这里的C编译器虽说理论上是没有任何限制的,但是在windows环境下还是推荐使用microsoft visual c++,在linux环境下推荐使用GCC。我们这里只说windows环境下编译环境的配置问题。

visual c++最高版本是6.0,再往后就是microsoft visual studio7.0、8.0、9.0、10.0。其中7.0对应microsoft visual studio2003,8.0对应2005,9.0对应2008,10.0对应2010。在一些老版的fluent中,通常需要配置环境变量。配置环境变量的方法,网络上很多,可以搜索。这里讲的是通过修改udf.bat文件来配置编译环境。

在fluent 12.0之后的版本中,可以通过修改udf.bat文件的方式进行编译环境配置。该文件位于

xx\ANSYS Inc\v140\fluent\ntbin\win64目录下。本人安装的fluent是64bit的,版本为14.0。不同版本的fluent,该文件所处的位置可能不同。大家可以利用windows的文件搜索功能寻该文件。注意若是安装了icepak,则会有两个udf.bat文件,一定要注意我们只针对fluent目录下的该文件。

我们用记事本打开此文件,由于本机上安装的是microsoft visual studio 2010,因此只需要关注图中橙线框中的部分。



现在来分析橙框中的语句。有过DOS经验的人可能嫌我罗嗦,不过我还是要说一下。因为现在有DOS经验的人越来越少了。
c语言编译器怎么安装
(1)第8行:echo是dos中助于在屏幕上写出一段文本。这与c语言中的printf,c#中的Console.WriteLine,JAVA中的System.Print的功能是一样的,只是在屏幕上打出后面一段文字,我们可以忽略了。

(2)第10行:设定MSVC_DEFAULT的值。其实是一个赋值语句。容易理解。一会儿需要动它。

(3)第11行:if exist是判断,判断后面的vcvarsall.bat文件是否存在,若存在,则设置变量MSVC的值。

(4)第12行:判断MSVC是否为空,若不为空,则进入msvc_env100标记行。到该标记行,其内容位于86~89行。该标记行的内容为:(1)设定msvc_version为100(2)调用vcvarsall.bat文件,利用amd64,因为我安装的fluent版本是64bit,若32bit版本会有所不同。

(5)跳转到ms_c_end行,该行是一个结束标记行。



看起来复杂,其实人们要做的工作很少。用户所要做的仅仅是修改第10行的内容。修改microsoft visual studio的安装路径。若vc是全默认安装,则什么都不需修改,否则改为正确的路径。如本机的microsoft studio安装在d:\program files目录下,只需将第10行修改为:

set MSVC_DEFAULT=D:\Program Files\Microsoft Visual Studio 10.0

就可以了。

剩下要做的工作是:在fluent启动面板中勾选Environment标签页下的setup compilation Environment for UDF选项。该选项默认是选中的,且不同的版本该选项所处的位置可能有所不同。



三、总结

配置12.0以上fluent UDF编译环境,需要进行的工作:

(1)到fluent安装目录下的udf.bat文件

(2)打开udf.bat文件,修改对应本机安装的microsoft visual studio版本的路径

OK了!这种方式配置UDF编译环境不需要考虑计算机的操作系统。
自从接触流体计算,笔记本、服务器处理了三四台之多,但每一次安装及编译都出现问题,每一次都至少耗费我两天功夫,可能,你在安装编译udf的过程中也会遇到一下问题,但不要着急不要担心,绝对会有解决的办法,我不推荐动不动就冲装系统,那个没必要,很多是冲装完系统,再安装软件还是出现同样的问题,这样就得不偿失了,在这里把我遇到的问题以及最后怎么解决的列出来与大家交流一下。
对于各个软件的安装顺序推荐:exceed-gambit-ansys。因为这里主要讲fluent的问题,所以,在安装ansys之前确保已安装过office、vs,为什么要有office,之前看过一个解释的,现在忘了,好像是office内的一个插件,vs要用到,而且最好装office2007.我装的时候把vs2008和2010都装了。每个软件具体的安装过程网上都有安装教程,问一下度娘就可以了。现在用的一般都是14.5,15.0。安装过程非常简单,现在可能装完之后遇到许可过期的现象“”,把电脑上的时间改到2011年初就可以了。我在安装14.5时还遇到过一个问题就是在安装许可时,当我生成了许可文件,复制到制定的文件夹内打开的时候报错,我也没解决就放弃了14.5,安装15.0.(也不能太钻牛角尖)。安装软件也就这些问题,哦,对了,安15.0时如果你的安装目录不是c的话,在许可文件里要改到你的安装目录下面。
然后就是fluent编译udf的问题:你遇到的也是网上谈的最多的就是“nmake,不是内部....也不是外部........”“xcopy,不是内部....也不是外部........”,只要出现“不是内部。。。。也不是外部。。。。”应该就是环境变量的问题,因为只有你指定路径,系统才能到那个文件进行编译。怎么修改环境变量网上有很多介绍的,我就说几个要注意的地方吧,一个是修改环境变量的时候要修改用户环境变量,不要在系统环境变量里面改,因为在系统环境变量里面容易把原有的path给改掉;在一个就是环境变量的值要全,网上有些只给了一个值,最好最多的那个照着改,因为多了不会出错。