UDF編譯錯誤解決方法經(jīng)驗之談
2017-02-21 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
Fluent中UDF的存在無疑大大強化了其軟件功能和適用性。但UDF編譯易出現(xiàn)很多錯誤,寫這篇博文,全為經(jīng)驗之談,可能一些解決方法FLUENT 的UDF幫助中已有提及。如果是 nmake 之類的錯誤,則必須重裝編譯器或者更改系統(tǒng)環(huán)境變量,參見本博客另外一篇博文。下述純針對已經(jīng)成功執(zhí)行過UDF的電腦而言。
1、Fatal Error:Access Violation
這是fluent編譯UDF過程中最常見的一個錯誤。原因極多。就目前所知,列舉如下:
a、如果build和load都已成功,但在初始化的過程中出現(xiàn)此提示,則考慮是否引用了自定義內(nèi)存C_UDMI而忘記在case設置中釋放給Fluent充足的內(nèi)存空間??赏ㄟ^ User-Defined---->Memory……查看賦予的自定義內(nèi)存?zhèn)€數(shù)。必須不少于udf中使用的 UDMI 個數(shù).
b、若在UDF中使用了時間相關變量,如CURRENT_TIME,CURRENT_TIMESTEP等,則計算中必須使用Unsteady模型。
c、在Fluent的結構數(shù)據(jù)中,秉承domain, thread, c/f的順序。值得注意的是,一些數(shù)據(jù)僅僅在邊界處才有值,一些數(shù)據(jù)卻在邊界處不存在。當調(diào)用了模型domain內(nèi)部的一個變量,而這個變量僅在邊界處才會有,便會出現(xiàn)錯誤。許多關于面的變量都是如此,如F_U.F_V F_W F_UDSI.當然還有其他。
d、在自定義fluent中的對流項時,常會用到許多面變量。面變量是最容易出錯的地方。在fluent中的case邊界處,注意F_C1和F_C1_THREAD都是非法操作,因為此處根本不存在c1。
2、編譯過程中,有些系統(tǒng)變量明明已經(jīng)聲明類型,但在Build時系統(tǒng)卻仍提示未聲明,或者有時候明明一句語句的末尾有分號,系統(tǒng)卻一直提示缺少分號,那么很有可能是在獲取區(qū)域指針的語句放得過于靠前。建議獲取區(qū)域指針的語句 Get_Domain(1)盡量往后放,最好下一句便要用到。
3、有時候,udf的編譯不成功和代碼本身無任何關系,僅是由于文件名稱取得過于復雜。建議永遠不取復雜的文件名。
4、在FLUENT中的UDF宏中,有些宏并不被包含在udf.h中,需要另行包含。如果不在文件開頭即 #include,系統(tǒng)將無法識別這些宏,便會報錯
5、在一些情況下,可能會使用UDF寫出部分數(shù)據(jù)到指定文件中,經(jīng)檢測,如果寫出到不同的文件中不會出現(xiàn)編譯錯誤,但在計算執(zhí)行過程中卻會中斷迭代。具體解決方法還未找到。目前建議是盡量寫出到一個文件中去。
相關標簽搜索:UDF編譯錯誤解決方法經(jīng)驗之談 Fluent培訓 Fluent流體培訓 Fluent軟件培訓 fluent技術教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學反應 fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析