FLUENT_interpreted和compiled的区别及使用(转载总结)

1、区别:

解释UDF则是在运行时,直接从C语言源代码编译和装载(compiled and loaded directly  from the C source code)。在FLUENT运行中,源代码被编译为中介的独立于物理结构的使用C预处理程序的机器代码(an  intermediate, architecture-independent machine code)。当UDF  被调用时,机器代码由内部仿真器(an internal  emulator),或注释器(interpreter)执行。注释器不具备标准C编译器的所有功能;它不支持C语言的某些原理(elements)。所以,在使用  interpreted UDF 时,有语言限制,所以需要使用预定宏。。例如,interpreted UDF  不能够通过解除参照结构(dereferencing structures)来获得FLUENT 数据。要获得数据结构,必须使用由FLUENT  提供的预定义宏。另一个例子是FLUENT interpreter 不能识别指针数组。这些功能必须由compiled UDF  来执行。编译后,用户的C函数名称和内容将会被储存在case文件中。函数将会在读入case文件时被自动编译。可使UDF共享不同的物理结构,操作系统,和Fluent版本。缺点:运行速度慢,占内存,需要较多代码,在C语言上使用有限制,不能与编译系统或用户库(compiled  system or user libraries)相连。

编译UDF和FLUENT的构建方式一样。脚本Makefile 被用来调用C编译器来构建一个当地目标代码库(a native object code  library)。目标代码库包含高级C语言源代码的机器语言翻译。代码库在FLUENT 运行时由“动态加载”(``dynamic  loading'')过程连接到FLUENT上。连接后,与共享库的联系(the association with the shared  library)将会被保存在用户的case文件中,这样,当FLUENT以后再读入case文件时,此编译库将会与FLUENT  自动连接。这些库是针对计算机的体系结构和一定版本的FLUENT使用的。所以,当FLUENT更新,或计算机操作系统改变,或是在不同类型的机器上运行时,这些库必须重新构建。优点:可以使用所有C语言,可以调用其它语言编写的函数;运行速度快,可以解决解释UD的不足。

2、使用:

总的来说,当决定使用那种类型的UDF 时:

1)使用interpreted  UDF作为简单的函数

2)使用compiled UDF作为复杂的函数,这些函数对CPU有较大要求(例如每次运行时,在每个单元上均须调用的属性UDF(a  property UDF);

需要使用编译库(require access to a compiled library)。

你可能感兴趣的:(FLUENT_interpreted和compiled的区别及使用(转载总结))