五十七、Fluent UDF自定義材料物性參數(shù)

1. 材料屬性的設(shè)置

有兩種方式可以自定義材料的屬性參數(shù),第一種材料下拉框選擇,第二種UDF自定義函數(shù)。

五十七、Fluent UDF自定義材料物性參數(shù)的圖1

我們這次主要介紹第二種方式,通過(guò)UDF的方式自定義材料屬性。之前有兩篇文章介紹過(guò)UDF的基礎(chǔ)UDF DEFINE _PROFILE宏

自定義材料屬性的define宏主要是DEFINE_PROPERTY,除此之外如果需要定義擴(kuò)散系數(shù),還需要使用DEFINE_DIFFUSIVITY宏。

擴(kuò)散系數(shù)一般是打開(kāi)組分輸運(yùn)方程,或者使用UDS才需要定義。

五十七、Fluent UDF自定義材料物性參數(shù)的圖2

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ù)。

五十七、Fluent UDF自定義材料物性參數(shù)的圖3

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。

五十七、Fluent UDF自定義材料物性參數(shù)的圖4

對(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ò)信息。

五十七、Fluent UDF自定義材料物性參數(shù)的圖5

編譯型UDF界面如下圖,上面有兩個(gè)框Source Files和Header Files,Source Files表示源文件,就是編寫(xiě)好的UDF文件;

五十七、Fluent UDF自定義材料物性參數(shù)的圖6

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

五十七、Fluent UDF自定義材料物性參數(shù)的圖7

5. UDF的使用

不同的DEFINE宏,UDF的使用方式不同。對(duì)于DEFINE_PROPERTY宏,定義材料的物性參數(shù)。因此使用時(shí),直接在材料物性界面選中即可

Materials--Fluid--air

比如需要修改air的粘度,在Viscosity處選擇user-defined,會(huì)彈出右圖,然后選中DEFINE的name就行,點(diǎn)擊OK。

五十七、Fluent UDF自定義材料物性參數(shù)的圖8

為了方便大家學(xué)習(xí)交流,我創(chuàng)建了QQ群:466988009,大家可以在其中討論相關(guān)的問(wèn)題,同時(shí)我會(huì)將所有文章的源文件都放到QQ群中,還會(huì)放一些其它的學(xué)習(xí)文件。歡迎大家加入。

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

TOP

7
2
3