Fluent UDF簡介

2016-11-30  by:CAE仿真在線  來源:互聯(lián)網(wǎng)


什么是UDF

用戶自定義函數(shù),或UDF,是用戶自編的程序,它可以動態(tài)的連接到FLUENT求解器上來提高求解器性能。用戶自定義函數(shù)用C語言編寫。使用DEFINE宏來定義。UDF中可使用標準C語言的庫函數(shù),也可使用FLUENT提供的預定義宏,通過這些預定義宏,可以獲得FLUENT求解器得到的數(shù)據(jù)。

UDF使用時可以被當作解釋函數(shù)或編譯函數(shù)。解釋函數(shù)在運行時讀入并解釋。而編譯UDF則在編譯時被嵌入共享庫中并與FLUENT連接。解釋UDF用起來簡單,但是有源代碼和速度方面的限制不足。編譯UDF執(zhí)行起來較快,也沒有源代碼限制,但設置和使用較為麻煩。

為什么要使用UDF

一般說來,任何一種軟件都不可能滿足每一個人的要求,FLUENT也一樣,其標準界面及功能并不能滿足每個用戶的需要。UDF正是為解決這種問題而來,使用它我們可以編寫FLUENT代碼來滿足不同用戶的特殊需要。當然,FLUENTUDF并不是什么問題都可以解決的,在下面的章節(jié)中我們就會具體介紹一下FLUENT UDF的具體功能?,F(xiàn)在先簡要介紹一下UDF的一些功能:

l 定制邊界條件,定義材料屬性,定義表面和體積反應率,定義FLUENT輸運方程中的源項,用戶自定義標量輸運方程(UDS)中的源項擴散率函數(shù)等等。

l 在每次迭代的基礎上調(diào)節(jié)計算值

l 方案的初始化

l (需要時)UDF的異步執(zhí)行

l 后處理功能的改善

l FLUENT模型的改進(例如離散項模型,多項混合物模型,離散發(fā)射輻射模型)

UDF基礎

1、單元(Cells),面(Faces),區(qū)域(Zones)和線程(Threads)

單元和單元面被組合為一些區(qū)域(zones),這些區(qū)域規(guī)定了計算域(例如,入口,出口,壁面)的物理組成。當用戶使用FLUENT 中的UDF 時,用戶的UDF 可調(diào)用流體區(qū)域或是邊界區(qū)域的計算變量。UDF需要獲得適當?shù)淖兞?比如說是區(qū)域參考和單元ID,以便標定各個單元。

區(qū)域(A zone)是一群單元或單元面的集合,它可以由模型和區(qū)域的物理特征(比如入口,出口,壁面,流體區(qū)域)來標定。例如,一些被指定為面域(a face zone)的單元面可以被指定為velocity-inlet 類型,由此,速度也就可指定了。線程(A thread)是FLUENT 數(shù)據(jù)結構的內(nèi)部名稱,可被用來指定一個區(qū)域。Thread 結構可作為數(shù)據(jù)儲存器來使用,這些數(shù)據(jù)對于它所表示的單元和面來說是公用的。

打個比方來說,Thread就是公路,連接的CellFace,CellFace就相當于公路上汽車??康恼军c,Cell_t這個面向的是單元,而Face_t面向的是邊或者面(二維或三維)。在FLUENT循環(huán)過程中,一般是用Thread作線程檢索,而Cell或者Face作檢索過程中位置參數(shù)的指示。

2、解釋型interpreted和編譯型compiled UDF的比較

編譯型UDFFLUENT的構建方式一樣。腳本Makefile 被用來調(diào)用C編譯器來構建一個當?shù)啬繕舜a庫。目標代碼庫包含高級C語言源代碼的機器語言翻譯。代碼庫在FLUENT 運行時由“動態(tài)加載”過程連接到FLUENT上。連接后,與共享庫的聯(lián)系將會被保存在用戶的case文件中。這樣,當FLUENT以后再讀入case文件時,此編譯庫將會與FLUENT 自動連接。這些庫是針對計算機的體系結構和一定版本的FLUENT使用的。所以,當FLUENT更新,或計算機操作系統(tǒng)改變,或是在不同類型的機器上運行時,這些庫必須重新構建。

編譯型UDF需要安裝C語言編譯器,FLUENT支持的編譯器類型可從安裝目錄下v150\fluent\ntbin\ntx86中的udf.bat文件中查詢。

而解釋UDF則是在運行時,直接從C語言源代碼編譯和裝載。在FLUENT運行中,源代碼被編譯為中介的獨立于物理結構的使用C預處理程序的機器代碼。當UDF 被調(diào)用時,機器代碼由內(nèi)部仿真器或注釋器執(zhí)行。注釋器不具備標準C編譯器的所有功能,它不支持C語言的某些原理。所以,在使用 interpreted UDF 時,有語言限制。例如,interpreted UDF 不能夠通過廢棄結構(dereferencing structures)來獲得FLUENT 數(shù)據(jù)。要獲得數(shù)據(jù)結構,必須使用由FLUENT 提供的預定義宏。還有就是是FLUENT interpreter不能識別指針數(shù)組。這些功能必須由compiled UDF 來執(zhí)行。

編譯后,用戶的C函數(shù)名稱和內(nèi)容將會被儲存在case文件中。函數(shù)將會在讀入case文件時被自動編譯。獨立于物理結構的代碼的外層可能會導致執(zhí)行錯誤,但卻可使UDF共享不同的物理結構,操作系統(tǒng)和FLUENT版本。如果運行速度較慢,UDF不用被調(diào)節(jié)就可以編譯代碼的形式(in compiledmode)運行。

選擇interpreted UDF或是compiled UDF時,注意以下內(nèi)容:

  • Interpreted UDF

o 對其它平臺是便捷的(portable)。

o 可作為(compiled UDF)來運行。

o 不需C編譯器。

o compiled UDF。

o 需要較多的代碼。

o 在使用C語言上有限制。

o 不能與編譯系統(tǒng)或用戶庫(compiled system or user libraries)連接。

o 只能使用預定義宏來獲得FLUENT結構中的數(shù)據(jù)。

  • Compiled UDF

o interpreted UDF運行快。

o 在使用C語言上不存在限制。

o 可用任何ANSI-compliant C 編譯器編譯。

o 能調(diào)用以其他語言編寫的函數(shù) (specifics are system-and compiler-dependent)。

o 機器物理結構需要用戶建立FLUENT (2D or 3D) 的每個版本的共享庫(a shared library for eachversion of FLUENT (2D or 3D) needed for your machine architecture)。

o 如果包含有注釋器(interpreter)不能處理得C語言元素,則不能作為(interpreted UDF )運行。

總的來說,當決定使用那種類型的UDF 時:

  • 使用interpretedUDF作為簡單的函數(shù)

  • 使用compiled UDF作為復雜的函數(shù),這些函數(shù)

o CPU有較大要求(例如每次運行時,在每個單元上均須調(diào)用的屬性UDF(a property UDF)。

o 需要使用編譯庫(require access to acompiled library)。

解釋式UDF的限制

解釋式UDF不能包含以下C語言:

  • goto語句。

  • ANSI-C原型語法

  • 直接的數(shù)據(jù)結構查詢(direct datastructure references)

  • 局部結構的聲明

  • 聯(lián)合(unions)

  • 指向函數(shù)的指針(pointers tofunctions)

  • 函數(shù)數(shù)組。

在訪問FLUENT求解器數(shù)據(jù)的方式上解釋式UDF也有限制。解釋式UDF不能直接訪問存儲在FLUENT結構中的數(shù)據(jù)。它們只能通過使用Fluent提供的宏間接地訪問這些數(shù)據(jù)。另一方面,編譯式UDF沒有任何C編程語言或其它注意的求解器數(shù)據(jù)結構的限制。

——————————

原文摘錄自網(wǎng)絡,版權歸原作者所有


開放分享:優(yōu)質(zhì)有限元技術文章,助你自學成才

相關標簽搜索:Fluent UDF簡介 Fluent培訓 Fluent流體培訓 Fluent軟件培訓 fluent技術教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學反應 fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析 

編輯
在線報名:
  • 客服在線請直接聯(lián)系我們的客服,您也可以通過下面的方式進行在線報名,我們會及時給您回復電話,謝謝!
驗證碼

全國服務熱線

1358-032-9919

廣州公司:
廣州市環(huán)市中路306號金鷹大廈3800
電話:13580329919
          135-8032-9919
培訓QQ咨詢:點擊咨詢 點擊咨詢
項目QQ咨詢:點擊咨詢
email:kf@1cae.com