UDF编译错误解决方法经验之谈

2017-02-21  by:CAE仿真在线  来源:互联网

Fluent中UDF的存在无疑大大强化了其软件功能和适用性。但UDF编译易出现很多错误,写这篇博文,全为经验之谈,可能一些解决方法FLUENT 的UDF帮助中已有提及。如果是 nmake 之类的错误,则必须重装编译器或者更改系统环境变量,参见本博客另外一篇博文。下述纯针对已经成功执行过UDF的电脑而言。

1、Fatal Error:Access Violation

这是fluent编译UDF过程中最常见的一个错误。原因极多。就目前所知,列举如下:

a、如果build和load都已成功,但在初始化的过程中出现此提示,则考虑是否引用了自定义内存C_UDMI而忘记在case设置中释放给Fluent充足的内存空间。可通过 User-Defined---->Memory……查看赋予的自定义内存个数。必须不少于udf中使用的 UDMI 个数.

b、若在UDF中使用了时间相关变量,如CURRENT_TIME,CURRENT_TIMESTEP等,则计算中必须使用Unsteady模型。

c、在Fluent的结构数据中,秉承domain, thread, c/f的顺序。值得注意的是,一些数据仅仅在边界处才有值,一些数据却在边界处不存在。当调用了模型domain内部的一个变量,而这个变量仅在边界处才会有,便会出现错误。许多关于面的变量都是如此,如F_U.F_V F_W F_UDSI.当然还有其他。

d、在自定义fluent中的对流项时,常会用到许多面变量。面变量是最容易出错的地方。在fluent中的case边界处,注意F_C1和F_C1_THREAD都是非法操作,因为此处根本不存在c1。


2、编译过程中,有些系统变量明明已经声明类型,但在Build时系统却仍提示未声明,或者有时候明明一句语句的末尾有分号,系统却一直提示缺少分号,那么很有可能是在获取区域指针的语句放得过于靠前。建议获取区域指针的语句 Get_Domain(1)尽量往后放,最好下一句便要用到。


3、有时候,udf的编译不成功和代码本身无任何关系,仅是由于文件名称取得过于复杂。建议永远不取复杂的文件名。


4、在FLUENT中的UDF宏中,有些宏并不被包含在udf.h中,需要另行包含。如果不在文件开头即 #include,系统将无法识别这些宏,便会报错

5、在一些情况下,可能会使用UDF写出部分数据到指定文件中,经检测,如果写出到不同的文件中不会出现编译错误,但在计算执行过程中却会中断迭代。具体解决方法还未找到。目前建议是尽量写出到一个文件中去。



开放分享:优质有限元技术文章,助你自学成才

相关标签搜索:UDF编译错误解决方法经验之谈 Fluent培训 Fluent流体培训 Fluent软件培训 fluent技术教程 fluent在线视频教程 fluent资料下载 fluent分析理论 fluent化学反应 fluent软件下载 UDF编程代做 Fluent、CFX流体分析 HFSS电磁分析 

编辑
在线报名:
  • 客服在线请直接联系我们的客服,您也可以通过下面的方式进行在线报名,我们会及时给您回复电话,谢谢!
验证码

全国服务热线

1358-032-9919

广州公司:
广州市环市中路306号金鹰大厦3800
电话:13580329919
          135-8032-9919
培训QQ咨询:点击咨询 点击咨询
项目QQ咨询:点击咨询
email:kf@1cae.com