欢迎来到天天文库
浏览记录
ID:20807462
大小:1.70 MB
页数:239页
时间:2018-10-16
《nt_UDF_中文教程.pdf》由会员上传分享,免费在线阅读,更多相关内容在教育资源-天天文库。
1、第一章.介绍本章简要地介绍了用户自定义函数(UDF)及其在Fluent中的用法。在1.1到1.6节中我们会介绍一下什么是UDF;如何使用UDF,以及为什么要使用UDF,在1.7中将一步步的演示一个UDF例子。1.1什么是UDF?1.2为什么要使用UDF?1.3UDF的局限1.4Fluent5到Fluent6UDF的变化1.5UDF基础1.6解释和编译UDF的比较1.7一个step-by-stepUDF例子1.1什么是UDF?用户自定义函数,或UDF,是用户自编的程序,它可以动态的连接到Fluent求解器上来提高求解器性能。用户自定义
2、函数用C语言编写。使用DEFINE宏来定义。UDF中可使用标准C语言的库函数,也可使用FluentInc.提供的预定义宏,通过这些预定义宏,可以获得Fluent求解器得到的数据。UDF使用时可以被当作解释函数或编译函数。解释函数在运行时读入并解释。而编译UDF则在编译时被嵌入共享库中并与Fluent连接。解释UDF用起来简单,但是有源代码和速度方面的限制不足。编译UDF执行起来较快,也没有源代码限制,但设置和使用较为麻烦。1.2为什么要使用UDF?一般说来,任何一种软件都不可能满足每一个人的要求,FLUENT也一样,其标准界面及功能
3、并不能满足每个用户的需要。UDF正是为解决这种问题而来,使用它我们可以编写FLUENT代码来满足不同用户的特殊需要。当然,FLUENT的UDF并不是什么问题都可以解决的,在下面的章节中我们就会具体介绍一下FLUENTUDF的具体功能。现在先简要介绍一下UDF的一些功能:ò定制边界条件,定义材料属性,定义表面和体积反应率,定义FLUENT输运方程中的源项,用户自定义标量输运方程(UDS)中的源项扩散率函数等等。ò在每次迭代的基础上调节计算值ò方案的初始化ò(需要时)UDF的异步执行ò后处理功能的改善òFLUENT模型的改进(例如离散项
4、模型,多项混合物模型,离散发射辐射模型)由上可以看出FLUENTUDF并不涉及到各种算法的改善,这不能不说是一个遗憾。当然为了源代码的保密我们还是可以理解这样的做法的。其实,如果这些代码能够部分开放,哪怕就一点点,我想FLUENT会像LINUX一样发展更为迅速,使用更为广泛。遗憾的是,从目前来看,这只是一种幻想。什么时候中国人可以出自己的精品?1.3UDF的局限尽管UDF在FLUENT中有着广泛的用途,但是并非所有的情况都可以使用UDF。UDF并不能访问所有的变量和FLUENT模型。例如,它不能调节比热值;调节该值需要使用求解器的其
5、它功能。如果您不知道是否可以用UDF解决某个特定的问题,您可以求助您的技术支持。1.4Fluent5到Fluent6UDF的变化如果你有FLUENT5的UDF编程经验,请注意在FLUENT6种的下列变化:•FLUENT6中加入了大量的通用多相模型。Whenoneofthesegeneralmultiphasemodelsisenabled,storagemustbesetasideforthemixtureaswellastheindividualphases.Thisfunctionalityismanifestedintheco
6、dethroughtheuseofadditionalthreadanddomaindatastructures.Consequently,somepredefinedmacroshavebeenaddedthatallowaccesstodatacontainedwithinmixture-levelandphase-leveldomainandthreadstructures.SeeSection3.11fordetailsonwritingUDFformultiphaseapplications.IfyouhaveaFLUEN
7、T5UDFwithanexternaldomaindeclarationthatyouwanttouseinFLUENT6,thentheexternstatementmustbereplacedbyacalltotheGet_DomainutilityandassignmenttoaDomainpointerasshownbelow.TheFluent-providedutility,Get_Domain(1),returnsthepointertothemixture-leveldomain.SeeSection6.5.1for
8、moredetailsonGet_Domain.ExampleexternDomain*domain;DEFINE_ON_DEMAND(my_udf){...}istobereplacedbyDEFINE_ON_DEMAND(my_u
此文档下载收益归作者所有