最美情侣中文字幕电影,在线麻豆精品传媒,在线网站高清黄,久久黄色视频

歡迎光臨散文網(wǎng) 會(huì)員登陸 & 注冊(cè)

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

2021-04-17 20:57 作者:Dearanwen  | 我要投稿

1. 簡(jiǎn)介

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

DEFINE_PROFILE:???????????定義模型邊界

DEFINE_ADJUST:? ? ? ? ? ? ? ?用于協(xié)調(diào)計(jì)算過程中物理量

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

DEFINE_PROPERTY:??????????定義材料物性

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

?

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

? velocity, pressure, temperature

? mass flux

? species mass fraction (species transport)(組分質(zhì)量分?jǐn)?shù),只在組分輸運(yùn)方程中可用)?

? volume fraction (multiphase models)(體積分?jǐn)?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代碼

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

圖1.模型示意圖

流體流速in函數(shù)

? ? ? ? ? ? ??? ? ? ? ? ? ? ? ? ? ??(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) ????//對(duì)邊界面進(jìn)行循環(huán)

9.?????{

10.?????????F_CENTROID(xd, f, t); ??//獲取坐標(biāo)

11.?????????x = xd[0]; ?????????????//xd[0]表示x坐標(biāo),xd[1]表示y坐標(biāo)

12.?????????y = xd[1];

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

14.?????}

15.?????end_f_loop(f, t)

16.?}

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

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

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

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

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

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

?

3.?FLUENT操作

1.?打開fluent,read-mesh,將mesh導(dǎo)入Fluent中。


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

圖2.General界面

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

圖3.湍流模型

4.?流體材料設(shè)置為空氣?

圖4.流體材料

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

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

圖5.解釋型UDF

圖6.解釋型UDF導(dǎo)入文件

圖7.選擇UDF代碼

圖8.對(duì)UDF進(jìn)行解釋

圖9.控制窗口

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

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

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

圖10.速度UDF加載

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

7. 初始化:使用Hybrid Initialization進(jìn)行初始化。

圖12.初始化

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

圖13.Calculate

?

4.?結(jié)果

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

圖14.速度云圖

2.?進(jìn)口y方向速度曲線圖

圖15.速度曲線圖顯示設(shè)置?

圖16.進(jìn)口y方向速度曲線圖

?

?

?

喜歡的話,就點(diǎn)個(gè)贊分享一下呢,你的鼓勵(lì)就是我的動(dòng)力哦?。?!

?


九、Fluent用戶自定義函數(shù)(UDF)基礎(chǔ)(2)-DEFINE_PROFILE的評(píng)論 (共 條)

分享到微博請(qǐng)遵守國(guó)家法律
高唐县| 唐海县| 徐汇区| 囊谦县| 北宁市| 吴川市| 崇明县| 铜梁县| 满城县| 滁州市| 竹溪县| 邵阳市| 灵川县| 彝良县| 焦作市| 阿克陶县| 峨边| 宁都县| 石城县| 军事| 芜湖县| 吉木萨尔县| 祥云县| 鲁山县| 得荣县| 淳化县| 海宁市| 澄迈县| 奇台县| 建昌县| 娄烦县| 福清市| 巴楚县| 墨竹工卡县| 利辛县| 荔波县| 亚东县| 宜丰县| 丰顺县| 渭源县| 灌南县|