五十七、Fluent UDF自定義材料物性參數(shù)
1. 材料屬性的設(shè)置
有兩種方式可以自定義材料的屬性參數(shù),第一種材料下拉框選擇,第二種UDF自定義函數(shù)。
我們這次主要介紹第二種方式,通過(guò)UDF的方式自定義材料屬性。之前有兩篇文章介紹過(guò)UDF的基礎(chǔ)和UDF DEFINE _PROFILE宏
自定義材料屬性的define宏主要是DEFINE_PROPERTY,除此之外如果需要定義擴(kuò)散系數(shù),還需要使用DEFINE_DIFFUSIVITY宏。
擴(kuò)散系數(shù)一般是打開(kāi)組分輸運(yùn)方程,或者使用UDS才需要定義。
2. DEFINE_PROPERTY宏的用法
我們?cè)敿?xì)說(shuō)說(shuō)DEFINE_PROPERTY宏的使用,同時(shí)給出幾個(gè)例子
2.1 物性參數(shù)
DEFINE_PROPERTY宏可以定義的物性參數(shù)如下:
? density (as a function of temperature):密度
? viscosity:粘度
? thermal conductivity:導(dǎo)熱系數(shù)
? absorption and scattering coefficients:吸收系數(shù)和散射系數(shù)
? laminar flame speed:層流火焰速度
? rate of strain:應(yīng)變率
? frictional modulus (Eulerian model):摩擦模量
? elasticity modulus (Eulerian model):彈性模量
? heat transfer coefficient (Mixture model):傳熱系數(shù)
? particle or droplet diameter (Mixture model):液滴直徑
······················
注:
a. DEFINE_PROPERTY宏可定義大多數(shù)的物性參數(shù),上面只是列舉出一部分。當(dāng)需要定義物性參數(shù)時(shí),首選DEFINE_PROPERTY宏
b. 擴(kuò)散系數(shù)需要使用DEFINE_DIFFUSIVITY宏定義
c. 比熱容需要使用DEFINE_SPECIFIC_HEAT宏定義
2.2 DEFINE_PROPERTY的用法
DEFINE_PROPERTY (name, c, t)
name:udf的名字,隨便起,只要符合c語(yǔ)言變量命名規(guī)則即可。比如Ergouzi,xiaoerhua。建議取表示物性的單詞作為名字density、viscosity等
c:網(wǎng)格變量cell,返回網(wǎng)格的編號(hào)值。其實(shí)就是一個(gè)整數(shù),看過(guò)Fluent UDF為所欲為的后門這篇文章的應(yīng)該印象深刻些
t:線程thread,是一個(gè)結(jié)構(gòu)體,包含一些列cell、face等。
返回值return:real類型,返回物性參數(shù)值
注:
a. c和t都是這個(gè)宏從fluent中取出來(lái)給用戶使用的,不需要任何的定義,直接可以使用c和t
b. 由于DEFINE_PROPERTY 宏已經(jīng)給用戶傳遞了c和t,因此使用這個(gè)宏不需要遍歷thread,也不需要遍歷網(wǎng)格。也就是說(shuō)不需要使用loop宏,直接對(duì)c進(jìn)行操作即可。
c. 與之相對(duì)的,如DEFINE_ADJUST宏,沒(méi)有傳遞c和t,因此必須要先遍歷thread或者查找thread,然后再遍歷網(wǎng)格。
3. DEFINE_PROPERTY示例
3.1 粘度定義
定義粘度viscosity,當(dāng)溫度大于288K,粘度等于5.5e-3;當(dāng)溫度小于286K,粘度等于1.0;否則粘度等于溫度T的函數(shù)。
UDF代碼如下:
#include "udf.h"
DEFINE_PROPERTY(cell_viscosity,c,t)
{
real mu_lam;
real temp = C_T(c,t);
if (temp > 288.)
mu_lam = 5.5e-3;
else if (temp > 286.)
mu_lam = 143.2135 - 0.49725 * temp;
else
mu_lam = 1.;
return mu_lam;
}
解釋一下:
real mu_lam;
//聲明了一個(gè)real變量,其實(shí)就是c語(yǔ)言的float類型,只不過(guò)real可以自動(dòng)改變單精度還是雙精度。mu_lam是變量名稱,可隨意命名。
real temp = C_T(c,t);
//聲明了一個(gè)real變量,并且賦值。temp即變量名,使用C_T宏給其賦值。
//C_T宏用于獲取網(wǎng)格溫度,括號(hào)中的c和t即是DEFINE_PROPERTY(cell_viscosity,c,t)中的c和t。兩者必須一致,要改都改。
if (temp > 288.)
mu_lam = 5.5e-3;
else if (temp > 286.)
mu_lam = 143.2135 - 0.49725 * temp;
else
mu_lam = 1.;
//if else語(yǔ)句,根據(jù)溫度值來(lái)確定粘度值。288.為什么要加一個(gè)點(diǎn),如果不加點(diǎn)則表示整型,加點(diǎn)表示浮點(diǎn)型,其實(shí)就是288.0。如果不是整型,即使是整數(shù)最好也要寫(xiě)成小數(shù)形式,否則會(huì)出現(xiàn)一些很難察覺(jué)到的錯(cuò)誤。
return mu_lam;
//返回mu_lam值,這個(gè)值會(huì)自動(dòng)傳遞給Fluent的物性參數(shù),對(duì)于DEFINE_PROPERTY宏,必須要有返回值,返回就是自己設(shè)置的物性參數(shù)。
3.2 表面張力系數(shù)定義
表面張力系數(shù)定義為溫度的函數(shù),sur_ten=1.35 - 0.004*T + 5.0e-6*T*T
UDF代碼如下:
#include "udf.h"
DEFINE_PROPERTY(sfc,c,t)
{
real T = C_T(c,t);
return 1.35 - 0.004*T + 5.0e-6*T*T;
}
直接以表達(dá)式的形式返回物性參數(shù)
3.3 密度和時(shí)間相關(guān)
這里僅僅是演示,實(shí)際上我們的物性更多是和壓力溫度有關(guān),和時(shí)間沒(méi)有關(guān)系。這里為了說(shuō)明UDF的靈活性,簡(jiǎn)單演示。
假設(shè)當(dāng)流動(dòng)時(shí)間小于1s,密度為1000kg/m3;流動(dòng)時(shí)間大于等于1s,密度為1kg/m3。
UDF代碼如下:
#include "udf.h"
DEFINE_PROPERTY(den_time,c,t)
{
real density;
real current_time;
current_time = CURRENT_TIME;
if(current_time<1.0)
{
density=1000.0;
}
else
{
density=1.;
}
return density;
}
邏輯很簡(jiǎn)單,這里只說(shuō)明一點(diǎn)。
current_time = CURRENT_TIME;
//CURRENT_TIME是fluent中的一個(gè)宏,也可以認(rèn)為是一個(gè)變量,返回當(dāng)前的流動(dòng)時(shí)間。
4. UDF的編譯與加載
兩種UDF編譯的方式,參考文章四十九、Fluent UDF編譯正確的流程。可分為Interpreted和Compiled。
對(duì)于解釋型Interpreted,優(yōu)點(diǎn)是簡(jiǎn)單、方便,缺點(diǎn)是很多高級(jí)宏不適用。因此建議大家不要使用解釋型編譯UDF。
這里還是簡(jiǎn)單說(shuō)一下,下圖為解釋型界面,直接點(diǎn)擊Browse,選中寫(xiě)好的UDF,然后點(diǎn)擊Interpret即可。如果UDF沒(méi)問(wèn)題,則不會(huì)出現(xiàn)報(bào)錯(cuò)信息。
編譯型UDF界面如下圖,上面有兩個(gè)框Source Files和Header Files,Source Files表示源文件,就是編寫(xiě)好的UDF文件;
Header Files表示頭文件,只有當(dāng)UDF很復(fù)雜,為了使UDF模塊化才需要從這里導(dǎo)入頭文件。UDF自帶了很多頭文件如udf.h,但是這些頭文件不需要從這里導(dǎo)入。
首先點(diǎn)擊Add,選中編寫(xiě)好的UDF后導(dǎo)入,然后點(diǎn)擊Build,如果UDF沒(méi)有問(wèn)題,則不會(huì)出現(xiàn)任何報(bào)錯(cuò)信息(只要控制界面有error,則說(shuō)明有問(wèn)題)。
在沒(méi)有報(bào)錯(cuò)的前提下,點(diǎn)擊Load,則UDF加載成功。關(guān)于UDF報(bào)錯(cuò)問(wèn)題,建議大家看看文章四十九、五十和五十一。如果沒(méi)有報(bào)錯(cuò),控制臺(tái)應(yīng)該會(huì)顯示下面的信息,其中就有各種DEFINE宏的name
5. UDF的使用
不同的DEFINE宏,UDF的使用方式不同。對(duì)于DEFINE_PROPERTY宏,定義材料的物性參數(shù)。因此使用時(shí),直接在材料物性界面選中即可
Materials--Fluid--air
比如需要修改air的粘度,在Viscosity處選擇user-defined,會(huì)彈出右圖,然后選中DEFINE的name就行,點(diǎn)擊OK。
為了方便大家學(xué)習(xí)交流,我創(chuàng)建了QQ群:466988009,大家可以在其中討論相關(guān)的問(wèn)題,同時(shí)我會(huì)將所有文章的源文件都放到QQ群中,還會(huì)放一些其它的學(xué)習(xí)文件。歡迎大家加入。
工程師必備
- 項(xiàng)目客服
- 培訓(xùn)客服
- 平臺(tái)客服
TOP




















