Fluent UDF簡(jiǎn)介

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


什么是UDF

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

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

為什么要使用UDF

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

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

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

l 方案的初始化

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

l 后處理功能的改善

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

UDF基礎(chǔ)

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

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

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

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

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

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

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

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

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

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

  • Interpreted UDF

o 對(duì)其它平臺(tái)是便捷的(portable)。

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

o 不需C編譯器。

o compiled UDF。

o 需要較多的代碼。

o 在使用C語(yǔ)言上有限制。

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

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

  • Compiled UDF

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

o 在使用C語(yǔ)言上不存在限制。

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

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

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

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

總的來(lái)說(shuō),當(dāng)決定使用那種類型的UDF 時(shí):

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

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

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

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

解釋式UDF的限制

解釋式UDF不能包含以下C語(yǔ)言:

  • goto語(yǔ)句。

  • ANSI-C原型語(yǔ)法

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

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

  • 聯(lián)合(unions)

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

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

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

——————————

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


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

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

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

全國(guó)服務(wù)熱線

1358-032-9919

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