九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE

1. 簡介


今天我們接著說Fluent UDF功能,我們經常使用的UDF宏主要有以下幾種:

DEFINE_PROFILE:           定義模型邊界

DEFINE_ADJUST:        用于協(xié)調計算過程中物理量

DEFINE_INIT:         初始化宏,用于自定義初始化

DEFINE_PROPERTY:          定義材料物性

上述的幾種宏基本上無論使用什么物理模型都會用到,還有部分宏是在特定的模型下才會使用,如使用DPM模型時用DEFINE_DPM_SOURCE宏來定義DPM源項,而普通的物理模型下源項通過DEFINE_SOURCE宏定義即可。

 

今天我們主要了解DEFINE_PROFILE宏的使用,DEFINE_PROFILE宏可以用來定義邊界條件,當邊界條件比較復雜時,如定義壁面溫度Tw=f(y),即壁面溫度是y的函數(shù)可以使用DEFINE_PROFILE宏進行定義。DEFINE_PROFILE宏可以用來定義的邊界物理量如下:

? velocity, pressure, temperature

? mass flux

? species mass fraction (species transport)(組分質量分數(shù),只在組分輸運方程中可用) 

? volume fraction (multiphase models)(體積分數(shù),在多相流中可用) 

? wall thermal conditions (temperature, heat flux, heat generation rate, heat transfer coefficients, and external emissivity, etc.)

? wall roughness conditions() 

? wall shear and stress conditions

? wall adhesion contact angle壁面接觸角 (VOF multiphase model)

 

2. 模型及UDF代碼

下面我們通過一個實例對DEFINE_PROFILE宏做一個簡單的應用。如圖1所示,流體從IN邊界流入,從OUT邊界流出,IN邊界流體流速不是定值,而是隨著y軸發(fā)生變化。  

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖1

圖1.模型示意圖

流體流速vin函數(shù)

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖2                    (1)

接下來就是UDF的編寫了,先貼上代碼

1. #include "udf.h"

2. #include "math.h"  //包含頭文件

3. 

4. DEFINE_PROFILE(velocity, t, i) //邊界條件宏

5. {

6. real x, y,xd[ND_ND];  //定義變量

7. face_t f;             //定義面指針

8. begin_f_loop(f, t)    //對邊界面進行循環(huán)

9. {

10. F_CENTROID(xd, f, t);  //獲取坐標

11. x = xd[0];             //xd[0]表示x坐標,xd[1]表示y坐標

12. y = xd[1];

13. F_PROFILE(f, t, i) = 2*y+1;  //速度函數(shù)

14. }

15. end_f_loop(f, t)

16. }

對于前兩行,是UDF所包含的頭文件,這兩行代碼是必寫的,其他的情況還需要增加其他的頭文件,如多相流時,需要用到#include "sg_mphase.h"。

DEFINE_PROFILE(velocity, t, i)定義邊界宏,其中第一個參數(shù)velocity為這個宏的名字,可以任意取名;t即thread,表示指向邊界的線程,關于UDF中的face、cell、thread、domain這些概念,理解起來比較復雜,以后會逐漸提及。i標識要定義的變量的索引。這里的t要和代碼中的t保持相同,如果進行更改,其他地方的t也要相應更改。而對i不必理會。

第6行,real是UDF中聲明變量的關鍵字,替代了C語言中的double這樣的關鍵字,但本質是相同的。因此可以認為就是real x, y=double x, y,即聲明了兩個變量,而xd[ND_ND]則是UDF中表示數(shù)組的方法,等同于C語言中的數(shù)組聲明。對于第7行,face_t表示聲明指針,只不過這個指針是指向面的,與此對應的還有cell_t聲明網格指針。

第8行的begin_f_loop(f, t),可以理解為一個循環(huán)語句,中間的f表示對面進行循環(huán),UDF中類似的語句有很多。后面的兩個參數(shù)f,t,實際上就是在t這個thread上對所以的f進行循環(huán)。15行的end_f_loop(f, t)表示結束面循環(huán)

第10行的F_CENTROID(xd, f, t)表示獲取t線程上的f面的質心,并賦值給數(shù)組xd。實際上就是獲取面的坐標(x,y),并賦給xd。其中xd[0]表示x坐標,xd[1]表示y坐標。因此11和12句就是將x坐標賦值給x,將y坐標賦值給y。

第13句的F_PROFILE(f, t, i) = 2*y+1是給邊界條件賦值的語句。這條語句F_PROFILE(f, t, i)表示要賦值的物理量,等于號之后的表示賦值函數(shù)。這條語句并沒有指出是在哪個邊界給什么物理量賦值,因此將這個UDF加載在哪個邊界什么物理量上就是給它賦值。

 

3. FLUENT操作

1. 打開fluent,read-mesh,將mesh導入Fluent中。

2. General界面保持默認,穩(wěn)態(tài)不考慮重力

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖3

圖2.General界面

3. 打開k-e湍流模型,能量方程不打開

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖4

圖3.湍流模型

4. 流體材料設置為空氣 

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖5

圖4.流體材料

5. 導入UDF文件,一般有兩種方法可以將編寫好的C語言代碼導入到Fluent中。第一種是interpreted解釋型,如圖5,單擊interpreted,出現(xiàn)圖6的界面,單擊Browse選擇編寫好的代碼文件圖7,單擊OK,返回圖8界面,單擊interpret。此時如果控制窗口沒有出現(xiàn)Error字樣,說明UDF沒有問題。

    還有另一種導入UDF的方法-Compiled編譯型,編譯型方法導入UDF需要首先配置好環(huán)境變量,然后與解釋型類似的操作。兩種方法的區(qū)別:解釋型相對簡單很多,不必配置環(huán)境變量,同時計算過程中消耗內存也較低,但當UDF代碼比較復雜時,或者用到一些高級宏時,解釋型無法正常使用;編譯型需要配置環(huán)境變量,計算過程會消耗一定的內存,但是對于任意的UDF都適用。這里由于UDF比較簡單,我們使用解釋型即可

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖6

圖5.解釋型UDF

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖7

圖6.解釋型UDF導入文件

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖8

圖7.選擇UDF代碼

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖9

圖8.對UDF進行解釋

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖10

圖9.控制窗口

6. 邊界條件設置,IN設置為velocity-inlet,OUT設置為pressure-outlet,wall_t、wall_b均設置為wall。

    當導入UDF后,雙擊IN邊界,單擊Velocity Magnitude后面的constant會多出來udf velocity,這里的velocity就是我們編寫的UDF,選擇udf velocity,IN邊界的速度就會按照代碼中的函數(shù)變化。其他邊界均保持默認設置

    從這里我們可以看出,對于DEFINE_PROFILE邊界宏,UDF代碼中并沒有指定物理量,因此設置什么物理量邊界和自己的操作有關。如將我們寫好的速度函數(shù)代碼,設置到速度方向上,仍然是可以的,只不過物理意義發(fā)生了變化。

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖11

圖10.速度UDF加載

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖12

圖11.將速度UDF加載到速度Y方向上

7. 初始化:使用Hybrid Initialization進行初始化。

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖13

圖12.初始化

8. 計算:設置計算步數(shù)為1000步,單擊calculate

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖14

圖13.Calculate

 

4. 結果

1. 通過后處理查看速度云圖 

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖15

圖14.速度云圖

2. 進口y方向速度曲線圖

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖16

圖15.速度曲線圖顯示設置 

九、Fluent用戶自定義函數(shù)(UDF)基礎(2)-DEFINE_PROFILE的圖17

圖16.進口y方向速度曲線圖

 

 

 

 

登錄后免費查看全文
立即登錄
App下載
技術鄰APP
工程師必備
  • 項目客服
  • 培訓客服
  • 平臺客服

TOP

3
1
8