中科大FLUENT講稿第七章自定義函數(shù)_第1頁(yè)
中科大FLUENT講稿第七章自定義函數(shù)_第2頁(yè)
中科大FLUENT講稿第七章自定義函數(shù)_第3頁(yè)
中科大FLUENT講稿第七章自定義函數(shù)_第4頁(yè)
中科大FLUENT講稿第七章自定義函數(shù)_第5頁(yè)
已閱讀5頁(yè),還剩71頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、第七章自定義函數(shù)7.1, 概述用戶自定義函數(shù)(User Defined Functions,即UDFs)可以提高 FLUENT 程序的標(biāo)準(zhǔn)計(jì)算功能。它是用 C語(yǔ)言書寫的,有兩種執(zhí)行方式:interpreted型和 compiled型。Interpreted型比較容易使用,但是可使用代碼(C語(yǔ)言的函數(shù)等) 和運(yùn)行速度有限制。Compiled型運(yùn)行速度快,而且也沒(méi)有代碼使用范圍的限制, 但使用略為繁瑣。我們可以用UDFs來(lái)定義:a)邊界條件b)源項(xiàng)c)物性定義(除了比熱外) d)表面和體積反應(yīng)速率 e)用戶自定義標(biāo)量輸運(yùn)方程 f)離散相模型(例如體積力,拉力,源項(xiàng)等) g)代數(shù)滑流(algebra

2、ic slip)混合物模型(滑流速度和微粒尺寸) h)變量初始化 i)壁面熱流量j)使用用戶自定義標(biāo)量后處理邊界條件UDFs能夠產(chǎn)生依賴于時(shí)間,位移和流場(chǎng)變量相關(guān)的邊界條件。 例 如,我們可以定義依賴于流動(dòng)時(shí)間的x方向的速度入口,或定義依賴于位置的溫 度邊界。邊界條件剖面UDFs用宏DEFINE_PROFILE定義。有關(guān)例子可以在5.1 和6.1中找到。源項(xiàng)UDFs可以定義除了 DO輻射模型之外的任意輸運(yùn)方程的源 項(xiàng)。它用宏 DEFINE_SOURCE定義。有關(guān)例子在 5.2和6.2中可以找到。物性 UDFs可用來(lái)定義物區(qū)的物理性質(zhì),除了比熱之外,其它物性參數(shù)都可以定義。 例如,我們可以定義依

3、賴于溫度的粘性系數(shù)。 它用宏DEFINE_PROPERTY定義, 相關(guān)例子在6.3中。反應(yīng)速率UDFs用來(lái)定義表面或體積反應(yīng)的反應(yīng)速率,分別 用宏DEFINE_SR_RATE和DEFINE_VR_RATE定義,例子見 6.4。離散相模型 用宏DEFINE_DPM定義相關(guān)參數(shù),見5.4。UDFs還可以對(duì)任意用戶自定義標(biāo)量 的輸運(yùn)方程進(jìn)行初始化,定義壁面熱流量,或計(jì)算存貯變量值(用用戶自定義標(biāo)量或用戶自定義內(nèi)存量)使之用于后處理。相關(guān)的應(yīng)用見于5.3, 5.5, 5.6和5.7。UDFs有著廣泛的應(yīng)用,本文并不能一一敘述。如果在使用中遇到問(wèn)題,可 以聯(lián)系FLUENT技術(shù)支部門要求幫助。在此推薦一個(gè)

4、網(wǎng)站 www.cfd-、 上面有FLUENT論壇,可進(jìn)行相關(guān)詢問(wèn)和討論。7.1.1 書寫UDFs的基本步驟在使用UDFs處理FLUENT模型的過(guò)程中,我們一般按照下面五步進(jìn)行:1 .概念上函數(shù)設(shè)計(jì)2 .使用C語(yǔ)言書寫3 .編譯調(diào)試C程序4 .執(zhí)行UDF5 .分析與比較結(jié)果第一步分析我們所處理的模型,目的是得到我們要書寫的UDF的數(shù)學(xué)表達(dá)式。第二步將數(shù)學(xué)表達(dá)式轉(zhuǎn)化成 C語(yǔ)言源代碼。第三步編譯調(diào)試 C語(yǔ)言源代碼。第四步在FLUENT中執(zhí)行UDF。最后一步,將所得到的結(jié)果與我們要求的進(jìn)行比較,如果不滿足要求,則需要重復(fù)上面的步驟,直到與我們期望的吻合為止。7.1.2 Interpreted 型與 C

5、ompiled 型比較Compiled UDFs 執(zhí)行的是機(jī)器語(yǔ)言,這和FLUENT 本身運(yùn)行的方式是一樣的。一個(gè)叫做Makefile 的過(guò)程能夠激活C 編輯器,編譯我們的C 語(yǔ)言代碼,從而建立一個(gè)目標(biāo)代碼庫(kù),目標(biāo)代碼庫(kù)中包含有高級(jí)C 語(yǔ)言的低級(jí)機(jī)器語(yǔ)言詮釋。在運(yùn)行的時(shí)候,一個(gè)叫做“dynamic loading”的過(guò)程將目標(biāo)代碼庫(kù)與FLUENT連接。一旦連接之后,連接關(guān)系就會(huì)在case 文件中與目標(biāo)代碼庫(kù)一起保存,所以讀入case文件時(shí),F(xiàn)LUENT就會(huì)自動(dòng)加載與目標(biāo)代碼庫(kù)的連接。這些庫(kù)的建立是基于特定計(jì)算機(jī)和特定FLUENT 版本的,所以升級(jí)FLUENT 版本后,就必須重新建立相應(yīng)的庫(kù)。相

6、反, Interpreted UDFs 是在運(yùn)行的時(shí)候直接裝載編譯C 語(yǔ)言代碼的。在這種情況下,生成的機(jī)器代碼不依賴于計(jì)算機(jī)和FLUENT 版本。編譯后,函數(shù)信息將會(huì)保存在case文件中,所以讀入case文件時(shí),F(xiàn)LUENT也會(huì)自動(dòng)加載相應(yīng)的函數(shù)。Interpreted UDFs 具有較強(qiáng)的可移植性,而且編譯比較簡(jiǎn)單。對(duì)于簡(jiǎn)單的UDFs,如"對(duì)運(yùn)行速度要求不高,一般就采用Interpreted型的。下面列出的是兩種UDFs的一些特性:1 Interpreted UDFs獨(dú)立于計(jì)算機(jī)結(jié)構(gòu);能夠完全當(dāng)作 Compiled UDFs 使用;不能與其它編譯系統(tǒng)或用戶庫(kù)連接;只支持部分C語(yǔ)言,

7、不能包含:goto語(yǔ)句,非ANSI C語(yǔ)法,結(jié)構(gòu),聯(lián)合,函數(shù)指針,函數(shù)數(shù)組等。! Interpreted UDFs 能夠使用FLUENT 提供的宏,間接引用存貯于FLUENT 的變量,詳見2.10。2 Compiled UDFs運(yùn)行速度比Interpreted UDFs快;能夠完全于 C 語(yǔ)言結(jié)合;能夠用任何兼容 ANSI C 的編輯器編譯;對(duì)不同F(xiàn)LUENT版本(2D或3D)需要建立不同的共享庫(kù);不一定能夠當(dāng)作Interpreted UDFs使用。我們?cè)谑褂弥惺紫纫鶕?jù)具體情況,明確使用哪種UDFs,然后才能進(jìn)一步去實(shí)現(xiàn),在使用中要注意上面敘述的事項(xiàng)。第二節(jié) 書寫 UDFs7.2.1 概述書

8、寫Interpreted型和Compiled型用戶自定義函數(shù)的過(guò)程和書寫格式是一樣 的。主要的區(qū)別在于與C 語(yǔ)言的結(jié)合程度,Compiled 型能夠完全使用C 語(yǔ)言的語(yǔ)法,而Interpreted型只能使用其中一小部分,這在前面有過(guò)論述。7.2.2 UDF 格式通用的 UDF 格式由三部分組成:1定義恒定常數(shù)和包含庫(kù)文件,分別由DEFINE 和 INCLUDE 陳述(見 2.3) ;2宏DEFINE_* 定義 UDF 函數(shù)(見2.4) ;3函數(shù)體部分(見2.9)包含庫(kù)有udf.h, sg.h, mem.h, prop.h, dpm.h 等,其中udf.h 是必不可少的,書寫格式為#includ

9、e “udf.h”; 所有數(shù)值都應(yīng)采用SI 單位制; 函數(shù)體部分字母采用小寫,Interpreted型只能夠包含F(xiàn)LUENT支持的C語(yǔ)言語(yǔ)法和函數(shù)。7.2.3 包含庫(kù) udf.h庫(kù)文件 udf.h 必須 C 函數(shù)開頭包含。7.2.4 定義函數(shù) 簡(jiǎn)介Fluent公司提供了一套宏,來(lái)幫助我們定義函數(shù)。這些宏都以DEFINE_開始,對(duì)它們的解釋包含在udf.h文件中,所以我們必需要包含庫(kù) udf.ho為了方便 使用,我們把對(duì)udf.h 文件中解釋宏列在附錄A 中。UDF使用宏DEFINE_定義,括號(hào)列表中第一個(gè)參數(shù)代表函數(shù)名。例如DEFINE_PROFILE(inlet_x_veloc

10、ity , thread, position)定義了一個(gè)名為inlet_x_velocity 的函數(shù)。! 所有函數(shù)名必須小寫緊接著函數(shù)名的是函數(shù)的輸入?yún)?shù),如上函數(shù)inlet_x_velocity 有兩個(gè)輸入?yún)?shù):thread和position, thread是一個(gè)指針,指向數(shù)據(jù)類型 Thread, position是個(gè) 整數(shù)(見2.4.3) 。UDF 編譯和連接之后,函數(shù)名就會(huì)出現(xiàn)在 FLUENT 相應(yīng)的下拉列表內(nèi)。如上述函數(shù),編譯連接之后,就能在相應(yīng)的邊界條件面板內(nèi)找到一個(gè)名為inlet_x_velocity 的函數(shù),選定之后就可以使用。 udf.h 文件中對(duì)宏DEFINE_

11、 的解釋在 udf.h 文件中,對(duì)附錄A 的宏作了解釋,例如:#define DEFINE_PROFILE(name, t, I) void name(Thread *t, int i) 通用的宏解釋格式為#define macro replacement-text在編譯前,C預(yù)處理器(即cpp)先進(jìn)行宏替代。例如DEFINE_PROFILE(inlet_x_velocity , thread, position) 替代為void inlet_x_velocity(Thread *thread, int position)替代后的函數(shù)返回實(shí)型值或不返回任何值。如上述函數(shù)由于是 void 型的,

12、 所以不返回任何值。 宏 DEFINE宏 DEFINE 是用來(lái)定義UDFs 的,可以分為三類:通用的,離散相的和多相的。 從宏 DEFINE 下劃線的后綴,我們可以看出該宏是用來(lái)定義哪種類型函數(shù)的。如 DEFINE_SOURCE 定義的函數(shù)用來(lái)修改輸運(yùn)方程源項(xiàng),DEFINE_PROPERTY定義的函數(shù)用來(lái)定義物質(zhì)的物理性質(zhì)。通用的宏在2.5詳述,離散相和多相的分別在 2.6中詳述。下面是附錄A 的簡(jiǎn)列。通用類型:1. DEFINE_ADJUST2. DEFINE_DIFFUSIVITY3. DEFINE_HEAT_FLUX4. DEFINE_INIT5. DEFINE_ON_DE

13、MAND6. DEFINE_PROFILE7. DEFINE_PROPERTY8. DEFINE_RW_FILE9. DEFINE_SCAT_PHASE_FUNC10. DEFINE_SOURCE11. DEFINE_SR_RATE12. DEFINE_UDS_FLUX13. DEFINE_UDS_UNSTEADY14. DEFINE_VR_RATE離散相模型:1. DEFINE_DPM_BODY_FORCE2. DEFINE_DPM_DRAG3. DEFINE_DPM_EROSION4. DEFINE_DPM_INJECTION_INIT5. DEFINE_DPM_LAW6. DEFINE_

14、DPM_OUTPUT7. DEFINE_DPM_PROPERTY8. DEFINE_DPM_SCALAR_UPDATE9. DEFINE_DPM_SOURCE10. DEFINE_DPM_SWITCH多相模型:1. DEFINE_DRIFT_DIAMETER2. DEFINE_SLIP_VELOCITY 數(shù)據(jù)類型的定義作為對(duì)C 語(yǔ)言數(shù)據(jù)類型的補(bǔ)充,F(xiàn)LUENT 定義了幾種特殊的數(shù)據(jù)類型,最常用的是:Thread, cell_t, face_t, Node 和 Domain。Thread是相應(yīng)邊界或網(wǎng)格區(qū)域的結(jié)構(gòu)類型數(shù)據(jù);cell_t表示單獨(dú)一個(gè)控制體 體積元,用來(lái)定義源項(xiàng)或物性;

15、face_t對(duì)應(yīng)于網(wǎng)格面,用來(lái)定義入口邊界條件等; Node表示相應(yīng)的網(wǎng)格節(jié)點(diǎn);Domain是一種結(jié)構(gòu),其中包含所有的threads, cells, faces 和 nodes!Thread, cell_t, face_t, Node 和 Domain 要區(qū)分大小寫。7.2.5 通用宏及其定義的函數(shù)宏DEFINE用來(lái)定義UDFs,下面是通用宏的具體解釋。 DEFINE_ADJUSTNameArgumentsArguments TypeReturn TypeDEFINE_ADJUSTdomainDomain *domainvoid該函數(shù)在每一步迭代開始前,即在求解輸運(yùn)方程前執(zhí)行???/p>

16、以用來(lái)修改調(diào)節(jié) 流場(chǎng)變量,計(jì)算積分或微分等。參數(shù) domain在執(zhí)行時(shí),傳遞給處理器,通知處 理器該函數(shù)作用于整個(gè)流場(chǎng)的網(wǎng)格區(qū)域。如何激活該函數(shù)請(qǐng)參見4.6,具體求解例子見 5.3, 5.6和5.7 。 DEFINE_DIFFUSIVITYNameArgumentsArguments TypeReturn TypeDEFINE_DIFFUSIVITYc, t, icell_t c, Thread*t, int ireal該函數(shù)定義的是組分?jǐn)U散系數(shù)或者用戶自定義標(biāo)量輸運(yùn)方程的擴(kuò)散系數(shù), c 代表網(wǎng)格,t是指向網(wǎng)格線的指針,i表示第幾種組分或第幾個(gè)用戶自定義標(biāo)量(傳 遞給處理器)。函

17、數(shù)返回的是實(shí)型數(shù)據(jù)。例子見 5.3。 DEFINE_HEAT_FLUXNameArgumentsArguments TypeReturn TypeDEFINE_HEAT_FLUXf, t, c0, t0, cid, cirface_t f, Thread *t, cell_t c, Thread *t0, real cid, real cirvoid該函數(shù)定義的是網(wǎng)格與鄰近壁面之間擴(kuò)散和輻射熱流量。f表示壁面,t指向壁面線,c0表示鄰近壁面的網(wǎng)格,t0指向網(wǎng)格線。函數(shù)中需要給出熱擴(kuò)散系數(shù) (cid)和輻射系數(shù)(cir),才能求出擴(kuò)散熱流量(qid)和輻射熱流量(qir)。在 計(jì)算

18、時(shí),F(xiàn)LUENT按照下面的公式求解:qid = cid0 +cid1 乂 C_T(c0, t0)-cid2 x F_T(f, t) cid3 乂 pow(F_T(f,t), 4)qir= cir0 + cir1 乂 C_T(c0, t0)-cir2 乂 F_T(f, t) cir3 乂 pow(F_T(f,t), 4)該函數(shù)無(wú)返回值。如何激活函數(shù)見4.7,4f見5.6。7.2.6 DEFINE_INITNameArgumentsArguments TypeReturn TypeDEFINE_INITdomainDomain *domainvoid該函數(shù)用于初始化流場(chǎng)變量,它在 FLUENT默認(rèn)

19、的初始化之后執(zhí)行。作用 區(qū)域是全場(chǎng),無(wú)返回值。函數(shù)的激活見 4.5,例子見5.4.1和5.5。7.2.7 DEFINEONDEMANDNameArgumentsArguments TypeReturn TypeDEFINE ON DEMANDvoid該函數(shù)不是在計(jì)算中由FLUENT自動(dòng)調(diào)用,而是根據(jù)需要手工調(diào)節(jié)運(yùn)行 如何執(zhí)行見4.12,例子見5.8。7.2.8 DEFINE_PROFILENameArgumentsArguments TypeReturn TypeDEFINE_PROFILEt, icell_t c, Thread *treal該函數(shù)定義邊界條件。t指向定義邊界條件的網(wǎng)格線,i

20、用來(lái)表示邊界的位置。函數(shù)在執(zhí)行時(shí),需要循環(huán)掃遍所有的邊界網(wǎng)格線,值存貯在F_PROFILE(f, t, i)中,無(wú)返回值。選擇使用本函數(shù)見 4.1,例子見 5.1.1, 5.1.2, 5.1.3, 5.3, 6.1.1 和 6.1.2。7.2.9 DEFINE_PROPERTYNameArgumentsArguments TypeReturn TypeDEFINE_PROPERTY;c, tcell_t c, Thread *treal該函數(shù)用來(lái)定義物質(zhì)物性參數(shù)。c表示網(wǎng)格,t表示網(wǎng)格線,返回實(shí)型值 使用見4.3,例子見6.3.1。7.2.10 DEFINE_RW_FILENameArgume

21、ntsArguments TypeReturn TypeDEFINE_RW_FILE ;fpFILE *fpvoid該函數(shù)用于讀寫case和data文件。fp是指向所讀寫文件的指針。使用見4.11, 例子見2.9.8。7.2.11 DEFINE_SCAT_PHASE_FUNCNameArgumentsArguments TypeReturn TypeDEFINE_SCAT PHASE FUNCc, freal c, real *freal該函數(shù)定義 DO (Discrete Ordinate 輻射模型中的散射相函數(shù)(radiation scattering phase function。計(jì)算兩

22、個(gè)變量:從i向到j(luò)向 散射的輻射能量分?jǐn)?shù)和 前向散射因子(forward scattering factor)。c表示的是i和j向夾角的余弦值,散 射的能量分?jǐn)?shù)由函數(shù)返回,前向散射因子存貯在指針f所指的變量中。處理器對(duì)每種物質(zhì),都會(huì)調(diào)用此函數(shù),分別建立各物質(zhì)的散射矩陣。7.2.12 DEFINE_SOURCENameArgumentsArguments TypeReturn TypeDEFINE_SOURCEc, t, dS, icell_t c , Thread *t, real dS, int ireal該函數(shù)定義,除了 DO輻射模型之外,輸運(yùn)方程的源項(xiàng)。在計(jì)算中,函數(shù)需 要掃描全場(chǎng)網(wǎng)格。

23、c表小網(wǎng)格,t表小網(wǎng)格線,dS表小源項(xiàng)對(duì)所求輸運(yùn)方程的標(biāo) 量的偏導(dǎo)數(shù),用于對(duì)源項(xiàng)的線性化;i標(biāo)志所定義源項(xiàng)對(duì)應(yīng)于哪個(gè)輸運(yùn)方程。使 用見 4.2,例子見 5.2.1, 5.2.2, 5.3, 6.2.1。7.2.13 DEFINE_SR_RATENameArgumentsArguments TypeReturn TypeDEFINE_SR_RATEf, t, r, mw, yi, rrface_t f, Thread *t, Reaction *r, real *mw, real *yi , real *rrvoid該函數(shù)定義表面化學(xué)反應(yīng)速率。f表示面,t表示面的線,r是結(jié)構(gòu)指針,表 示化學(xué)反應(yīng)

24、;mw和yi是個(gè)實(shí)型指針數(shù)組,mw存貯物質(zhì)的分子量,yi存貯物質(zhì) 的質(zhì)量分?jǐn)?shù),rr設(shè)置函數(shù)的一個(gè)相關(guān)參數(shù)。函數(shù)無(wú)返回值,使用見 4.8。7.2.14 DEFINE_UDS_FLUXNameArgumentsArguments TypeReturn TypeDEFINE_UDS_FLUXf, 3 iface_t f, Thread *t, int ireal該函數(shù)定義用戶 自定義標(biāo)量輸運(yùn)方程 (user-defined scalar transport equations 的對(duì)流通量。f, t分別表示所求通量的面和面的線,i表示第幾個(gè)輸運(yùn)方程(有 處理器傳遞給本函數(shù))。7.2.15 DEFINE

25、_UDS_UNSTEADYNameArgumentsArguments TypeReturn TypeDEFINE_UDS_UNSTEADYc, t, i, apu, sucell_t c, Thread*t, int i, real*apu, real *suvoid該函數(shù)定義用戶自定義標(biāo)量輸運(yùn)方程的非穩(wěn)態(tài)項(xiàng)。 c表示網(wǎng)格,t表示網(wǎng)格 線,i表示第幾個(gè)輸運(yùn)方程。在FLUENT中,非穩(wěn)態(tài)項(xiàng)移到RHS中,并以下面 的方式離散:unsteady_term dVnn 1 V tV n V n 1tt方程右邊第一項(xiàng)為apu,第二項(xiàng)為suo本函數(shù)無(wú)返回值。7.2.16 DEFINE_VR_RATENam

26、eArgumentsArguments TypeReturn TypeDEFINE_VR_RATEc, t, r, mw, yi, rr, rr_tcell_t c, Thread *t, Reaction *r, real *mw, real *yi , real *rr, real*rr_tvoid該函數(shù)定義體積化學(xué)反應(yīng)速率。c表示網(wǎng)格,t表示網(wǎng)格線,r表示結(jié)構(gòu)指針, 表示化學(xué)反應(yīng)過(guò)程,mw指針數(shù)組指向存貯物質(zhì)分子量的變量,yi指向物質(zhì)的質(zhì) 量分?jǐn)?shù);rr和rr_t分別設(shè)置層流和湍流時(shí)函數(shù)相關(guān)參數(shù)。函數(shù)無(wú)返回值,使用見 4.8,例子見 6.4.1。7.2.6離散相模型宏及其定義的函數(shù)離散模型

27、(DPM)的宏定義的函數(shù)與通用宏所定義的函數(shù)書寫格式是一樣 的。對(duì)于離散相需要強(qiáng)調(diào)結(jié)構(gòu)指針 p,可以用它得到顆粒的性質(zhì)和相關(guān)信息。下 面是具體的宏定義。 DEFINE_DPM_BODY_FORCENameArgumentsArgument TypeReturn TypeDEFINE_DPM _body_forcep, iTracked_Particle*p, int ireal該函數(shù)用于定義除了重力和拉力之外的所有體積力。p為結(jié)構(gòu)指針,i可取0,1,3分別表示三個(gè)方向的體積力。函數(shù)返回的是加速度。使用見4.4,例子見.6.2 DEFINE_DPM_DRAGName

28、ArgumentsArgument TypeReturn TypeDEFINE_DPM_DRAGRe, pTracked_Particle*p, real Rereal該函數(shù)定義拉力系數(shù)Cd, Re為Reynolds數(shù),與顆粒直徑和相對(duì)于液相速度 有關(guān)。拉力定義為:18Cd ReF d2pD224p p函數(shù)返回的值是18*CD*Re/24。使用見4.4,例子見.6.3 DEFINE_DPM_EROSIONNameArgumentsArgument TypeReturn TypeDEFINE_DPM_EROSIONp, t, f, normal, alpha, Vmag, mdo

29、tTracked_Particle *p, Thread *t, face_t f, real alpha ,real normal, real Vmag, real mdotvoid該函數(shù)定義顆粒撞擊壁面湮滅或產(chǎn)生速率。t為撞擊面的線,f為撞擊面;數(shù) 組normal存貯撞擊面的單位法向量;alpha中存貯顆粒軌道與撞擊面的夾角; Vmag存貯顆粒速度大小,mdot存貯顆粒與壁面撞擊率。函數(shù)無(wú)返回值,顆粒湮滅或產(chǎn)生的計(jì)算結(jié)果存貯在面變量 F_STORAGE_R(f, t, SV_DPMS_EROSION) 和 F_STORAGE_R(f, t, SV_DPMS_ACCRETION)中。使用見

30、4.4。 DEFINE_DPM_INJECTION_INITNameArgumentsArgument TypeReturn TypeDEFINE_DPM _INJECTION_INITiInjection *Ivoid該函數(shù)用于定義顆粒注入軌道時(shí)的物理性質(zhì)。I是指針,指向顆粒產(chǎn)生時(shí)的軌 道。對(duì)每一次注入,該函數(shù)需要在第一步 DPM迭代前調(diào)用兩次,在隨后顆粒進(jìn) 入?yún)^(qū)域前每一次迭代中再調(diào)用一次。顆粒的初始化,諸如位置, 直徑和速度可以 通過(guò)該函數(shù)設(shè)定。函數(shù)無(wú)返回值。 DEFINE_DPM_LAWNameArgumentsArgument TypeReturn Type

31、DEFINE_DPM_LAWp, ciTracked_Particle*p , int civoid該函數(shù)定義液滴和燃燒顆粒的熱和質(zhì)量傳輸速率。p的意義如前所述,ci表示連續(xù)相和離散相是否耦合求解,取 1時(shí)表示耦合,0時(shí)表示不耦合。顆粒的性 質(zhì)隨著液滴和顆粒與其周圍物質(zhì)發(fā)生傳熱、傳質(zhì)而改變。函數(shù)無(wú)返回值。2.6.6 DEFINE_DPM_OUTPUTNameArgumentsArgument TypeReturn TypeDEFINE_DPM_OUTPUTheader, f, p, pt, planeint header, FILE *fp , Tracked_particle *p, Thr

32、ead *t, Plane *planevoid該函數(shù)可以得到顆粒通過(guò)某一平面(見 FLUENT用戶手冊(cè)14.10.6)時(shí)的相 關(guān)變量。header在函數(shù)第一次調(diào)用時(shí),設(shè)為1,以后都為0; fp為文件指針,指 向讀寫相關(guān)信息的文件;p為結(jié)構(gòu)指針,t指向顆粒所經(jīng)過(guò)的網(wǎng)格線;plane為 Plane型結(jié)構(gòu)指針(dpm.h),如果顆粒不是穿過(guò)一個(gè)平面而是僅僅穿過(guò)網(wǎng)格表面, 值取為NULL。輸出信息存貯于指針fp所指向的文件,函數(shù)無(wú)返回值。例子見5.4.1。 DEFINE_DPM_PROPERTYNameArgumentsArgument TypeReturn TypeDEFINE_DP

33、M_PROPERTYc, t, pcell_t c, Thread *t, Tracked_Particle*preal該函數(shù)用于定義離散相物質(zhì)的物理性質(zhì)。p為結(jié)構(gòu)指針,c表示網(wǎng)格,t表示 網(wǎng)格線。函數(shù)返回實(shí)型值。 DEFINE_DPM_SCALAR_UPDATENameArgumentsArgument TypeReturn TypeDEFINE_DPM _SCALAR_UPDATEc, t, initialize, pcell_t c, Thread *t, int initialize ,Tracked_particle*pvoid該函數(shù)用于更新與顆粒相關(guān)的變量或求它們?cè)谡?/p>

34、個(gè)顆粒壽命時(shí)間的積分。與顆粒相關(guān)的變量可用宏P(guān)_USER_REAL(p, i)取出。c表示顆粒當(dāng)前所處的網(wǎng)格, t為該網(wǎng)格線。initialize在初始調(diào)用本函數(shù)時(shí),取為1,其后調(diào)用時(shí),取為0。在 計(jì)算變量對(duì)顆粒軌道的積分時(shí),F(xiàn)LUENT就調(diào)用本函數(shù)。存貯顆粒相關(guān)變量的數(shù) 組大小需要在FLUENT的DPM面版上指定。函數(shù)無(wú)返回值。函數(shù)的使用見4.4,例子見5.4.1。 DEFINE_DPM_SOURCENameArgumentsArgument TypeReturn TypeDEFINE_DPM_SOURCEc, t, S, strength, pcell_t c, Thread

35、 *t, dpms_t *S, real strength, Tracked_Particle*pvoid該函數(shù)用于計(jì)算,給定網(wǎng)格中的顆粒在與質(zhì)量、動(dòng)量和能量交換項(xiàng)耦合 DPM 求解前的源項(xiàng)。c表示當(dāng)前顆粒所在的網(wǎng)格,t為網(wǎng)格線,S為結(jié)構(gòu)指針,指向源 項(xiàng)結(jié)構(gòu)dpms_t,其中包含網(wǎng)格的源項(xiàng)。strength表示單位時(shí)間內(nèi)流過(guò)的顆粒數(shù)目。p為結(jié)構(gòu)指針。函數(shù)求得的源項(xiàng)存貯于 S指定的變量中,無(wú)返回值。使用見.10 DEFINE_DPM_SWITCHNameArgumentsArgument TypeReturn TypeDEFINE_DPM_SWITCHp, ciTracked_P

36、article*p, int civoid該函數(shù)是FLUENT默認(rèn)的顆粒定律與用戶自定義的顆粒定律之間,或不同的默認(rèn)定律和自定義定律之間的開關(guān)函數(shù)。p為結(jié)構(gòu)指針,ci為1時(shí),表示連續(xù)相與離散相耦合求解,0時(shí)表示不耦合求解。! 參數(shù)類型中的Tracked_Particle, dpms_t等是FLUENT為相關(guān)模型定義的數(shù)據(jù)類型。具體含義可以參見M應(yīng)章節(jié)。一7.2.7多相模型的宏及其定義的函數(shù) DEFINE_DRIFT_DIAMNameArgumentsArgument TyperealDEFINE_DRIFT_DIAMc,tcell_t c, Thread *treal該函數(shù)用于定

37、義代數(shù)滑流混合模型(algebraic slip mixture model)顆?;蛞?滴的直徑。c為網(wǎng)格,t為網(wǎng)格線。函數(shù)返回顆?;蛞杭拥闹睆健J褂靡?.10o DEFINE_SLIP_VELOCITYNameArgumentsArgument TyperealDEFINE_SLIP_VELOCITYdomainDomain *domainvoid該函數(shù)用于定義代數(shù)滑流混合模型(algebraic slip mixture model)的滑流速 度(slip velocity)。該函數(shù)作用范圍是整個(gè)網(wǎng)格區(qū)域,無(wú)返回值。使用見4.9。7.2.8 特定線的指針在很多應(yīng)用UDF的場(chǎng)合

38、,需要在一條特定的線上進(jìn)行操作。為滿足這種要 求,首先,可以從Boundary Conditions面板得到需要操作的線的ID,然后就可 用宏Lookup_Thread將指針孑旨向該條線。在下面的例子中,C語(yǔ)言函數(shù)Print_Thread_Face_CentroidsH用FLUENT 的宏Lookup_Thread將指針指向特定的線,然后將線上所有面的質(zhì)心坐標(biāo)輸入文 件中。宏DEFINE_ON_DEMAND 定義的函數(shù)get_coords取出其中的兩條線,并 打印線上所有面的山心反標(biāo)。#include Udf.h"extern Domain *domainFILE *foutstat

39、ic voidPrint_Thread_Face_Centroids(Domain *domain , int id) real FC2;face_t f;Thread *t=Lookup_Thread(domain , id);fprintf(fout, “thread id %dn”,id);begin_f_loop(f, , t) F_CENTROID(FC , f, t);fprintf(fout , “f%d %g %g %gn”, f, FC0, FC1 , FC2);end_f_loop(f , t)fprintf(fout , “n” );DEFINE_ON_DEMAND(ge

40、t_coords) fout = fopen( “faces.out”, “w”);Printf_Thread_Face_Centroids(domain , 2);Printf_Thread_Face_Centroids(domain , 4); fclose(fout);7.2.9 函數(shù)體 介紹用戶自定義函數(shù)體部分包含在緊跟著宏DEFINE_定義的大括弧內(nèi),如下例這和標(biāo)準(zhǔn)C 語(yǔ)言函數(shù)體的定義是相同的。DEFINE_PROPERTY(cell_viscosity , cell, thread) real mu_lam;real temp = C_T(cell,thread);i

41、f (temp > 288.)mu_lam = 5.5e-3;else if (temp > 286.)mu_lam = 143.2135 -0.49725 * temp;elsemu_lam = 1.;return mu_lam; Interpreted UDFs 的限制性Interpreted型書寫函數(shù)體時(shí)并不能完全應(yīng)用C語(yǔ)言函數(shù),這在前面有過(guò)論述此外,數(shù)量的單位制必須采用國(guó)際單位制。 函數(shù)的功能UDFs 執(zhí)行五種功能:1返回變量值;2調(diào)節(jié)參數(shù);3返回變量值并且調(diào)節(jié)參數(shù);4調(diào)節(jié)FLUENT 的變量(不以參數(shù)形式傳遞);5.向case或data文件讀寫

42、信息。宏定義的函數(shù)返回類型如果不是void 型,就返回實(shí)型值。下面的例子分別說(shuō)明不同功能的函數(shù)。 返回變量值下面的 UDF 計(jì)算與溫度有關(guān)的粘性系數(shù),并返回該值。#include “udf.h”DEFINE_PROPERTY(cell_viscosity , cell, thread)/*定義物性的宏 */ real mu_lam;real temp = C_T(cell,thread);/* 變量 temp 存放網(wǎng)格的溫度*/ if (temp > 288.)mu_lam = 5.5e-3;else if (temp > 286.)mu_lam = 143.2135

43、 -0.49725 * temp; elsemu_lam = 1.;return mu_lam;/* 變量 mu_lam 存放粘性系數(shù)值,函數(shù)返回該值*/ 調(diào)節(jié)參數(shù)下面的 UDF 給出簡(jiǎn)單二元?dú)庀嘞到y(tǒng)的體積反應(yīng)速率。#include “udf.h”#define K1 2.0e-2#define K2 5.DEFINE_VR_RA TE(user_rate, cell , thread, r, mole_weight , species_mf, rate, rr_t)real s1 = species_mf0;real mw1 = mole_weight0;if (FLUID_T

44、HREAD_P(thread) && THREAD_V AR(thread) .fluid. porous)*rate = K1*s1/pow(1.+K2*s1),2.)/mw1;else*rate = 0.;函數(shù)名為user_rat0函數(shù)體中用if語(yǔ)句判斷是否處于多孔介質(zhì)區(qū),僅在多 孔介質(zhì)區(qū)有化學(xué)反應(yīng)。 返回變量值并調(diào)節(jié)參數(shù)下面的 UDF 定義的是swirl-velocity 的源項(xiàng)。#include “udf.h”#define OMEGA 50/* rotational speed of swirler */#define WEIGHT 1.e20/* we

45、ighting coefficients in linearized equation */DEFINE_SOURCE(user_swirl , cell, thread, dS, eqn) real w_vel , xND_ND , y, source;CENTROID(x , cell, thread); y = x1;w_vel = y*OMEGA; /* linear w_velocity at the cell */source = WEIGHT*(w_vel - C_WSWIRL(cell , thread);dSeqn = WEIGHT;return source;函數(shù)名為use

46、r_swirl,函數(shù)計(jì)算了變量source并且返回其值。函數(shù)的各項(xiàng)參 數(shù)的意義參見2.5.10。 調(diào)節(jié) FLUENT 變量下面的函數(shù)調(diào)節(jié)存貯于內(nèi)存的FLUENT 變量,函數(shù)定義了x 方向速度的邊界條件。#include “udf.h”DEFINE_PROFILE(inlet_x_velocity , thread, position) real xND_ND;real y;face_t f;begin_f_loop(f , thread) F_CENTROID(x , f, thread);y = x1;F_PROFILE(f , thread, position) = 20.

47、y*y/(.0745*.0745)*20;end_f_loop(f , thread)函數(shù)的參數(shù)position是個(gè)數(shù)字標(biāo)簽,標(biāo)記每一步循環(huán)(loop)中被設(shè)置的變量。函數(shù)調(diào)節(jié)的FLUENT 變量F_PROFILE。72.98 讀寫data或case文件下面的函數(shù)介紹了如何讀寫靜態(tài)變量kount,如何計(jì)算靜態(tài)變量請(qǐng)參見4.6。#include “udf.h”int kount = 0; /* 定義靜態(tài)變量kount*/DEFINE_ADJUST(demo_calc , domain) kount +;printf( “kount = %dn ”, kount); DEFINE_RW_FILE(

48、writer , fp)printf( Writing UDF data to data file n");fprintf(fp , ”%d”, kount); /*將 kount 寫入 data 文件中 */ DEFINE_RW_FILE(writer , fp)printf( Reading UDF data from data file n");fscanf(fp , “%d”, &kount); /* 從數(shù)據(jù)文件中讀取kount 值 */上面有三個(gè)函數(shù)。如果迭代10次, 則 kount 值為10, 然后將當(dāng)前值10 存貯到數(shù)據(jù)文件中,如果下次將 kount值

49、讀入FLUENT繼續(xù)運(yùn)算,則kount將在10 的基礎(chǔ)上增加。我們可以存貯任意多的靜態(tài)變量,不過(guò)讀寫順序必須一致。7.2.10 解法器函數(shù)(Solver Functions ) 概述在很多情況下,UDF需要得到FLUENT解法器中的數(shù)據(jù)。例如:1 .所求解的變量及其導(dǎo)數(shù)(例如,速度,溫度等);2 .網(wǎng)格和面幾何性質(zhì)(例如,面面積,網(wǎng)格體積,網(wǎng)格質(zhì)心坐標(biāo)等);3 .物質(zhì)的物理性質(zhì)(例如,密度,粘性系數(shù),導(dǎo)熱系數(shù)等)。! 我們可以取出比熱,但是不能修改。我們可以利用下一節(jié)所列FLUENT提供的解法器函數(shù),得到解法器中的數(shù) 據(jù)。這里所說(shuō)的函數(shù)是從廣義上講的,因?yàn)槠渲邪ê瘮?shù)和宏,只有

50、在源文件 appropriated中定義的才是真正的函數(shù)。! 如果使用的是Interpreted型的UDF ,則只能使用這些FLUENT提供的解法 器函數(shù)。解法器函數(shù)可以與C函數(shù)一起在函數(shù)體中混合使用。為方便起見,一些最 常用的C函數(shù)列在附錄B中。下面章節(jié)列出的函數(shù)中包括它們的參數(shù),參數(shù)類型和返回值,還有對(duì)該函數(shù)說(shuō)明的源文件。例如C_CENTROID(x , c, t)有三個(gè)參數(shù):x, c和t,其中c和t為輸入?yún)?shù),x為輸出參數(shù),輸出網(wǎng)格 的坐標(biāo)值。輔助幾何關(guān)系Name(Arguments)Argument TypeReturnsSourceC_NNODES(c, t) C_N

51、FACES(c, t) F NNODES(f, t)cell_t c, Thread *t cell_t c, Thread *t face t f, Thread *t網(wǎng)格節(jié)點(diǎn)數(shù) 網(wǎng)格面數(shù) 間節(jié)點(diǎn)數(shù)mem.h mem.h mem.h網(wǎng)格坐標(biāo)與面積Name(Arguments)Argument TypeReturnsSourceC_CENTROID(x , c,t)real xND_ND , cell_t c, Thread *tx(網(wǎng)格坐標(biāo))metric.hF_CENTROID(x , f,t)real xND_ND, face_t f, Thread *tx(面坐標(biāo))met

52、ric.hF_AREA(A , f, t)AND_ND , face_t f, Thread *tA(面矢量)metric.hNV_MAG(A)AND_ND面矢量A大小metric.hC_VOLUME(c , t)cell_t c, Thread *t2D或3D網(wǎng)格體積;對(duì)稱體 網(wǎng)格體積/2冗metric.h 節(jié)點(diǎn)坐標(biāo)與節(jié)點(diǎn)(網(wǎng)格)速度列表中的節(jié)點(diǎn)速度與移動(dòng)網(wǎng)格模擬有關(guān)。Name(Arguments)Argument TypeReturnsSourceNODE_XnodeNode *node節(jié)點(diǎn)的x坐標(biāo)metric.hNODE_YnodeNode *node節(jié)點(diǎn)的y坐標(biāo)metr

53、ic.hNODE_ZnodeNode *node節(jié)點(diǎn)的z坐標(biāo)metric.hNODE_GXnodeNode *node節(jié)點(diǎn)的x向速度mem.hNODE_GYnodeNode *node節(jié)點(diǎn)的y向速度mem.hNODE_GZnodeNode *node節(jié)點(diǎn)的z向速度mem.h面變量卜面列表中的函數(shù)只能在segregated solve前獲取,耦合計(jì)算時(shí)不能引用的Name(Arguments)Argument TypeReturnsSourceF_P(f, t)face_t f, Thread *t壓力mem.h(all)F_U(f, t)face_t f, Thread *tu速

54、度F_V(f, t)face_t f, Thread *tv速度F_W(f, t)face_t f, Thread *tw速度F_T(f, t)face_t f, Thread *t溫度F_H(f, t)face_t f, Thread *t始F_K(f, t)face_t f, Thread *t湍流動(dòng)能F_D(f, t)face_t f, Thread *t湍流能量耗散系數(shù)F_YI(f, t, i)face_t f, Thread *t,組分質(zhì)量分?jǐn)?shù)int iF_UDSI(f, t, i)face_t f, Thread *t,用戶自定義標(biāo)量(iint i表示第幾個(gè)方程)F_UDMI(f , t, i)face_t f, Thread *t,用戶自定義內(nèi)存變int i量(i表小第幾個(gè)) 網(wǎng)格變量下面列表中的是網(wǎng)格變量,不像面變量,網(wǎng)格變量在耦合與非耦合計(jì)算中都 能獲取 (available in both the s

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論