七、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(1)

  前面我們所講述的Fluent的相關(guān)知識(shí)只是很少很少的一部分,但是今天我們還是開始一部分新的知識(shí)。之所以這樣做,是因?yàn)榻裉焖v述的知識(shí)在大家以后的學(xué)習(xí)中用途很廣泛,同時(shí)這部分知識(shí)需要大家提前學(xué)習(xí)一些基礎(chǔ)知識(shí)。

七、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(1)的圖1

圖1.UDF用戶手冊(cè)

UDF介紹: 所謂UDF-用戶自定義函數(shù)(User-defined functions),學(xué)習(xí)過(guò)編程語(yǔ)言的同學(xué)對(duì)此應(yīng)該并不陌生,無(wú)論是C語(yǔ)言、JAVA還是Python,自定義函數(shù)被廣泛的應(yīng)用著,它能夠使語(yǔ)言邏輯和代碼的簡(jiǎn)潔性大幅度提高。Fluent的UDF有著同樣的功能,但是又不完全相同。

在Fluent中,UDF使用C語(yǔ)言來(lái)編寫,因此需要大家有一定的C語(yǔ)言基礎(chǔ),但是不必過(guò)于深入,大家只需要了解基本的格式和語(yǔ)法結(jié)構(gòu)即可,同時(shí)需要對(duì)指針有一點(diǎn)了解。建議有其他語(yǔ)言基礎(chǔ)的同學(xué)花一周的時(shí)間學(xué)習(xí)一下C語(yǔ)言---一周的時(shí)間已經(jīng)足夠了。

 

UDF特殊性: 接下來(lái)我們說(shuō)一下Fluent UDF的特殊性,實(shí)際上即便C語(yǔ)言功底很厲害的高手并不一定能夠?qū)懞肬DF,為什么呢?因?yàn)镕luent UDF和C語(yǔ)言的自定義函數(shù)完全就是兩碼事。它是Fluent封裝好的可以傳遞給求解器的函數(shù),主要由各種宏組成,每個(gè)宏有各自的作用。說(shuō)的通俗易懂一點(diǎn),其實(shí)UDF就是Fluent已經(jīng)給用戶起好了自定義函數(shù)的名字了,用戶達(dá)到什么樣的目的,使用相對(duì)應(yīng)的宏就行。類似于我乘坐地鐵去電影院,為了達(dá)到去電影院的目的,我使用了名叫地鐵的工具,這里的名字“地鐵”就相當(dāng)于Fluent中的宏;如果放到C語(yǔ)言中,你可以給“地鐵”起任意名字如“自行車”,這樣會(huì)帶來(lái)混亂,導(dǎo)致Fluent求解器識(shí)別不了你的目的。比如用戶想讓進(jìn)口流體的速度正弦變化,那么就需要找到能夠修改邊界條件的宏-DEFINE_PROFILE(name, t, i),然后在里面指定速度函數(shù)即可。

七、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(1)的圖2

圖2.C語(yǔ)言自定義函數(shù)

七、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(1)的圖3

圖3.Fluent UDF

UDF功能: 對(duì)于Fluent而言,UDF可以顯著增強(qiáng)其功能,使用UDF你可以做如下的事情:

1. 自定義邊界條件、材料特性、表面和體積反應(yīng)速率、用戶定義標(biāo)量(UDS)、傳輸方程中的源項(xiàng)、擴(kuò)散系數(shù)函數(shù)等

2. 每次迭代調(diào)整一次計(jì)算值。

3. 自定義的求解初始化

4. 按需執(zhí)行UDF

5. 在迭代結(jié)束時(shí)、退出ANSYS Fluent或加載已編譯的UDF庫(kù)時(shí)執(zhí)行

6. 增強(qiáng)后處理效果

7. 改進(jìn)現(xiàn)有的ANSYS Fluent模型(如離散相模型、多相混合模型、離散坐標(biāo)輻射模型)

上述功能都是直接使用Fluent比較難以完成但是實(shí)際又經(jīng)常會(huì)用到的,尤其1、2在以后的學(xué)習(xí)中會(huì)經(jīng)常使用到。

 

UDF宏: UDF有兩類宏,DEFINE宏和結(jié)構(gòu)宏。DEFINE宏是大的功能宏,能夠完成某一項(xiàng)功能,如定義材料特性、定義邊界條件等等。想要完成不同的功能就要在對(duì)應(yīng)的DEFINE宏中書寫代碼,上述的每個(gè)功能都有其DEFINE宏。結(jié)構(gòu)宏和FLUENT計(jì)算方式有關(guān),涉及到網(wǎng)格、線程和相域的相關(guān)知識(shí),比較復(fù)雜,我們以后再詳細(xì)了解。結(jié)構(gòu)宏可以相互嵌套,但是只能大套小。比較常見的結(jié)構(gòu)宏如:

begin_f_loop(f, t)//遍歷線程t上的面

{

//代碼//

}

end_f_loop(f, t)

thread_loop_c(t, d)////遍歷混合域d上的線程

{

//代碼//

}

值得注意的是,DEFINE宏里面會(huì)包含結(jié)構(gòu)宏,這樣說(shuō)來(lái),DEFINE宏可以類比為C語(yǔ)言中的自定義函數(shù),而結(jié)構(gòu)宏則可以類比成循環(huán)語(yǔ)句for或while,只不過(guò)這里的循環(huán)的是網(wǎng)格或線程。

要想達(dá)到我們的目的,我們還需要知道各種物理量,UDF也給我們提供了各種各樣的物理量,如獲取網(wǎng)格溫度C_T(c,t) 。物理量宏都是這樣的寫法,C表示網(wǎng)格,T表示溫度,(c,t)表示從t線程獲取網(wǎng)格c的溫度。C_T必須大寫,(c,t)必須小寫。下面給出一部分常用的物理量宏:

七、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(1)的圖4

圖4.常用的物理量宏

最后說(shuō)一下,由于FLUENT UDF內(nèi)容很多,我們不可能全部掌握,只能對(duì)一些常用的熟記。遇到比較特殊的要求,最簡(jiǎn)單方便的方法就是查看官方UDF用戶手冊(cè)。這里的手冊(cè)是全英文的,大家要是覺得不夠方便可以多多關(guān)注我,我以后會(huì)持續(xù)做一些這方面的內(nèi)容。

 

UDF用戶手冊(cè)資源:

鏈接:https://pan.baidu.com/s/1insmk2rkP9hIcrtelHwVIw

提取碼:iuj1

登錄后免費(fèi)查看全文
立即登錄
App下載
技術(shù)鄰APP
工程師必備
  • 項(xiàng)目客服
  • 培訓(xùn)客服
  • 平臺(tái)客服

TOP

3
4
7