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电磁分析