Fluent UDF簡介

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


什么是UDF

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

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

為什么要使用UDF

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

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

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

l 方案的初始化

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

l 后處理功能的改善

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

UDF基礎(chǔ)

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

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

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

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

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

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

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

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

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

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

  • Interpreted UDF

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

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

o 不需C編譯器。

o compiled UDF。

o 需要較多的代碼。

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

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

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

  • Compiled UDF

o interpreted UDF運(yùn)行快。

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

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

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

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

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

總的來說,當(dāng)決定使用那種類型的UDF 時:

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

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

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

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

解釋式UDF的限制

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

  • goto語句。

  • ANSI-C原型語法

  • 直接的數(shù)據(jù)結(jié)構(gòu)查詢(direct datastructure references)

  • 局部結(jié)構(gòu)的聲明

  • 聯(lián)合(unions)

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

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

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

——————————

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


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

相關(guān)標(biāo)簽搜索:Fluent UDF簡介 Fluent培訓(xùn) Fluent流體培訓(xùn) Fluent軟件培訓(xùn) fluent技術(shù)教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學(xué)反應(yīng) fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析 

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

全國服務(wù)熱線

1358-032-9919

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