研发埠

标题: 在UDF中compiled型的执行方式和interpreted型的执行方式有什么不同? [打印本页]

作者: 周周    时间: 2013-6-19 17:43
标题: 在UDF中compiled型的执行方式和interpreted型的执行方式有什么不同?

作者: 周小慧    时间: 2013-6-19 17:55
编译型UDF:采用与FLUENT本身执行命令相同的方式构建的。采用一个称为Makefile的脚本来引导c 编译器构造一个当地目标编码库(目标编码库包含有将高级c 语言源代码转换为机器语言。)这个共享库在运行时通过“动态加载”过程载入到FLUENT中。目标库特指那些使用的计算机体系结构,和运行的特殊FLUENT 版本。因此,FLUENT 版本升级,计算机操作系统改变以及在另一台不同类型的计算机上运行时,这个库必须进行重构。编译型UDF 通过用户界面将原代码进行编译,分为两个过程。这两个过程是:访问编译UDF 面板,从源文件第一次构建共享库的目标文件中;然后加载共享库到FLUENT 中。采用与FLUENT本身执行命令相同的方式构建的。采用一个称为Makefile的脚本来引导c 编译器构造一个当地目标编码库(目标编码库包含有将高级c 语言源代码转换为机器语言。)这个共享库在运行时通过“动态加载”过程载入到FLUENT中。目标库特指那些使用的计算机体系结构,和运行的特殊FLUENT 版本。因此,FLUENT 版本升级,计算机操作系统改变以及在另一台不同类型的计算机上运行时,这个库必须进行重构。编译型UDF 通过用户界面将原代码进行编译,分为两个过程。这两个过程是:访问编译UDF 面板,从源文件第一次构建共享库的目标文件中;然后加载共享库到FLUENT 中。解释型UDF:解释型UDF 同样也是通过图形用户界面解释原代码,却只有单一过程。这一过程伴随着运行,包含对解释型UDF 面板的访问,这一面板位于源文件中的解释函数。在FLUENT内部,源代码通过c 编译器被编译为即时的、体系结构独立的机器语言。UDF 调用时,机器编码通过内部模拟器或者解释器执行。额外层次的代码导致操作不利,但是允许解释型UDF 在不同计算结构,操作系统和FLUENT 版本上很容易实现共享。如果迭代速度成为焦点时,解释型UDF 可以不用修改就用编译编码直接运行。解释型UDF 使用的解释器不需要有标准的c 编译器的所有功能。特别是解释型UDF 不含有下列C 程序语言部分p>goto 语句声明;无ANSI-C 语法原形;没有直接数据结构引用;局部结构的声明;联合函数指针;函数阵列;解释型UDF与编译型UDF的区别:在解释型与编译型UDF 之间的主要的不同之处是很重要的,例如当你想在UDF 中引进新的数据结构时。解释型不能通过直接数据引用获得FLUENT 解算器的数据;只能间接的通过FLUENT预先提供的宏来获取数据。具体请参考第7 章。在解释型与编译型UDF 之间的主要的不同之处是很重要的,例如当你想在UDF 中引进新的数据结构时。解释型不能通过直接数据引用获得FLUENT 解算器的数据;只能间接的通过FLUENT预先提供的宏来获取数据。具体请参考第7 章。总结一下,当选择写解释型或者编译型UDF时,记住以下几条:解释型UDF:对别的运行系统是可移植的,可以作为编译型运行,不需要c 编译器,比编译型的要慢,在使用C 程序语言时有限制,不能链接到编译系统或者用户库,只能通过预先提供的宏访问FLUENT 中存储的数据。编译型UDF:运行要快于解释型UDF,对C 程序语言没有限制,可以使用任何ANSI-compliant c 编译器进行编译,可以调用其他语言写的函数(特别是独立于系统和编译器的),如果包含某些解释器不能处理的c 语言部分时用解释型UDF 是不行的。总之,当决定哪一类型的udf 应用到你的模型时:对小的,直接的函数用解释型;对复杂函数使用编译型。
作者: 倪川    时间: 2013-7-1 18:06
.........




欢迎光临 研发埠 (http://bbs.yanfabu.com/) Powered by Discuz! X3.2