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

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權,請進行舉報或認領

文檔簡介

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

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

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

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

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

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

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

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

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

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

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

12、 所以不返回任何值。 宏 DEFINE宏 DEFINE 是用來定義UDFs 的,可以分為三類:通用的,離散相的和多相的。 從宏 DEFINE 下劃線的后綴,我們可以看出該宏是用來定義哪種類型函數(shù)的。如 DEFINE_SOURCE 定義的函數(shù)用來修改輸運方程源項,DEFINE_PROPERTY定義的函數(shù)用來定義物質(zhì)的物理性質(zhì)。通用的宏在2.5詳述,離散相和多相的分別在 2.6中詳述。下面是附錄A 的簡列。通用類型: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ù)類型的定義作為對C 語言數(shù)據(jù)類型的補充,F(xiàn)LUENT 定義了幾種特殊的數(shù)據(jù)類型,最常用的是:Thread, cell_t, face_t, Node 和 Domain。Thread是相應邊界或網(wǎng)格區(qū)域的結構類型數(shù)據(jù);cell_t表示單獨一個控制體 體積元,用來定義源項或物性;

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

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

17、數(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)格與鄰近壁面之間擴散和輻射熱流量。f表示壁面,t指向壁面線,c0表示鄰近壁面的網(wǎng)格,t0指向網(wǎng)格線。函數(shù)中需要給出熱擴散系數(shù) (cid)和輻射系數(shù)(cir),才能求出擴散熱流量(qid)和輻射熱流量(qir)。在 計算

18、時,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ù)無返回值。如何激活函數(shù)見4.7,4f見5.6。7.2.6 DEFINE_INITNameArgumentsArguments TypeReturn TypeDEFINE_INITdomainDomain *domainvoid該函數(shù)用于初始化流場變量,它在 FLUENT默認

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

20、用來表示邊界的位置。函數(shù)在執(zhí)行時,需要循環(huán)掃遍所有的邊界網(wǎng)格線,值存貯在F_PROFILE(f, t, i)中,無返回值。選擇使用本函數(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ù)用來定義物質(zhì)物性參數(shù)。c表示網(wǎng)格,t表示網(wǎng)格線,返回實型值 使用見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。計算兩

22、個變量:從i向到j向 散射的輻射能量分數(shù)和 前向散射因子(forward scattering factor)。c表示的是i和j向夾角的余弦值,散 射的能量分數(shù)由函數(shù)返回,前向散射因子存貯在指針f所指的變量中。處理器對每種物質(zhì),都會調(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輻射模型之外,輸運方程的源項。在計算中,函數(shù)需 要掃描全場網(wǎng)格。

23、c表小網(wǎng)格,t表小網(wǎng)格線,dS表小源項對所求輸運方程的標 量的偏導數(shù),用于對源項的線性化;i標志所定義源項對應于哪個輸運方程。使 用見 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ù)定義表面化學反應速率。f表示面,t表示面的線,r是結構指針,表 示化學反應

24、;mw和yi是個實型指針數(shù)組,mw存貯物質(zhì)的分子量,yi存貯物質(zhì) 的質(zhì)量分數(shù),rr設置函數(shù)的一個相關參數(shù)。函數(shù)無返回值,使用見 4.8。7.2.14 DEFINE_UDS_FLUXNameArgumentsArguments TypeReturn TypeDEFINE_UDS_FLUXf, 3 iface_t f, Thread *t, int ireal該函數(shù)定義用戶 自定義標量輸運方程 (user-defined scalar transport equations 的對流通量。f, t分別表示所求通量的面和面的線,i表示第幾個輸運方程(有 處理器傳遞給本函數(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ù)定義用戶自定義標量輸運方程的非穩(wěn)態(tài)項。 c表示網(wǎng)格,t表示網(wǎng)格 線,i表示第幾個輸運方程。在FLUENT中,非穩(wěn)態(tài)項移到RHS中,并以下面 的方式離散:unsteady_term dVnn 1 V tV n V n 1tt方程右邊第一項為apu,第二項為suo本函數(shù)無返回值。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ù)定義體積化學反應速率。c表示網(wǎng)格,t表示網(wǎng)格線,r表示結構指針, 表示化學反應過程,mw指針數(shù)組指向存貯物質(zhì)分子量的變量,yi指向物質(zhì)的質(zhì) 量分數(shù);rr和rr_t分別設置層流和湍流時函數(shù)相關參數(shù)。函數(shù)無返回值,使用見 4.8,例子見 6.4.1。7.2.6離散相模型宏及其定義的函數(shù)離散模型

27、(DPM)的宏定義的函數(shù)與通用宏所定義的函數(shù)書寫格式是一樣 的。對于離散相需要強調(diào)結構指針 p,可以用它得到顆粒的性質(zhì)和相關信息。下 面是具體的宏定義。 DEFINE_DPM_BODY_FORCENameArgumentsArgument TypeReturn TypeDEFINE_DPM _body_forcep, iTracked_Particle*p, int ireal該函數(shù)用于定義除了重力和拉力之外的所有體積力。p為結構指針,i可取0,1,3分別表示三個方向的體積力。函數(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ù),與顆粒直徑和相對于液相速度 有關。拉力定義為: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ù)無返回值,顆粒湮滅或產(chǎn)生的計算結果存貯在面變量 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ù)用于定義顆粒注入軌道時的物理性質(zhì)。I是指針,指向顆粒產(chǎn)生時的軌 道。對每一次注入,該函數(shù)需要在第一步 DPM迭代前調(diào)用兩次,在隨后顆粒進 入?yún)^(qū)域前每一次迭代中再調(diào)用一次。顆粒的初始化,諸如位置, 直徑和速度可以 通過該函數(shù)設定。函數(shù)無返回值。 DEFINE_DPM_LAWNameArgumentsArgument TypeReturn Type

31、DEFINE_DPM_LAWp, ciTracked_Particle*p , int civoid該函數(shù)定義液滴和燃燒顆粒的熱和質(zhì)量傳輸速率。p的意義如前所述,ci表示連續(xù)相和離散相是否耦合求解,取 1時表示耦合,0時表示不耦合。顆粒的性 質(zhì)隨著液滴和顆粒與其周圍物質(zhì)發(fā)生傳熱、傳質(zhì)而改變。函數(shù)無返回值。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ù)可以得到顆粒通過某一平面(見 FLUENT用戶手冊14.10.6)時的相 關變量。header在函數(shù)第一次調(diào)用時,設為1,以后都為0; fp為文件指針,指 向讀寫相關信息的文件;p為結構指針,t指向顆粒所經(jīng)過的網(wǎng)格線;plane為 Plane型結構指針(dpm.h),如果顆粒不是穿過一個平面而是僅僅穿過網(wǎng)格表面, 值取為NULL。輸出信息存貯于指針fp所指向的文件,函數(shù)無返回值。例子見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為結構指針,c表示網(wǎng)格,t表示 網(wǎng)格線。函數(shù)返回實型值。 DEFINE_DPM_SCALAR_UPDATENameArgumentsArgument TypeReturn TypeDEFINE_DPM _SCALAR_UPDATEc, t, initialize, pcell_t c, Thread *t, int initialize ,Tracked_particle*pvoid該函數(shù)用于更新與顆粒相關的變量或求它們在整

34、個顆粒壽命時間的積分。與顆粒相關的變量可用宏P_USER_REAL(p, i)取出。c表示顆粒當前所處的網(wǎng)格, t為該網(wǎng)格線。initialize在初始調(diào)用本函數(shù)時,取為1,其后調(diào)用時,取為0。在 計算變量對顆粒軌道的積分時,F(xiàn)LUENT就調(diào)用本函數(shù)。存貯顆粒相關變量的數(shù) 組大小需要在FLUENT的DPM面版上指定。函數(shù)無返回值。函數(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ù)用于計算,給定網(wǎng)格中的顆粒在與質(zhì)量、動量和能量交換項耦合 DPM 求解前的源項。c表示當前顆粒所在的網(wǎng)格,t為網(wǎng)格線,S為結構指針,指向源 項結構dpms_t,其中包含網(wǎng)格的源項。strength表示單位時間內(nèi)流過的顆粒數(shù)目。p為結構指針。函數(shù)求得的源項存貯于 S指定的變量中,無返回值。使用見.10 DEFINE_DPM_SWITCHNameArgumentsArgument TypeReturn TypeDEFINE_DPM_SWITCHp, ciTracked_P

36、article*p, int civoid該函數(shù)是FLUENT默認的顆粒定律與用戶自定義的顆粒定律之間,或不同的默認定律和自定義定律之間的開關函數(shù)。p為結構指針,ci為1時,表示連續(xù)相與離散相耦合求解,0時表示不耦合求解。! 參數(shù)類型中的Tracked_Particle, dpms_t等是FLUENT為相關模型定義的數(shù)據(jù)類型。具體含義可以參見M應章節(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ù)返回顆粒或液加的直徑。使用見4.10o DEFINE_SLIP_VELOCITYNameArgumentsArgument TyperealDEFINE_SLIP_VELOCITYdomainDomain *domainvoid該函數(shù)用于定義代數(shù)滑流混合模型(algebraic slip mixture model)的滑流速 度(slip velocity)。該函數(shù)作用范圍是整個網(wǎng)格區(qū)域,無返回值。使用見4.9。7.2.8 特定線的指針在很多應用UDF的場合

38、,需要在一條特定的線上進行操作。為滿足這種要 求,首先,可以從Boundary Conditions面板得到需要操作的線的ID,然后就可 用宏Lookup_Thread將指針孑旨向該條線。在下面的例子中,C語言函數(shù)Print_Thread_Face_CentroidsH用FLUENT 的宏Lookup_Thread將指針指向特定的線,然后將線上所有面的質(zhì)心坐標輸入文 件中。宏DEFINE_ON_DEMAND 定義的函數(shù)get_coords取出其中的兩條線,并 打印線上所有面的山心反標。#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),如下例這和標準C 語言函數(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ù)體時并不能完全應用C語言函數(shù),這在前面有過論述此外,數(shù)量的單位制必須采用國際單位制。 函數(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ù)。 返回變量值下面的 UDF 計算與溫度有關的粘性系數(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 給出簡單二元氣相系統(tǒ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語句判斷是否處于多孔介質(zhì)區(qū),僅在多 孔介質(zhì)區(qū)有化學反應。 返回變量值并調(diào)節(jié)參數(shù)下面的 UDF 定義的是swirl-velocity 的源項。#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ù)計算了變量source并且返回其值。函數(shù)的各項參 數(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是個數(shù)字標簽,標記每一步循環(huán)(loop)中被設置的變量。函數(shù)調(diào)節(jié)的FLUENT 變量F_PROFILE。72.98 讀寫data或case文件下面的函數(shù)介紹了如何讀寫靜態(tài)變量kount,如何計算靜態(tài)變量請參見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 值 */上面有三個函數(shù)。如果迭代10次, 則 kount 值為10, 然后將當前值10 存貯到數(shù)據(jù)文件中,如果下次將 kount值

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

50、在源文件 appropriated中定義的才是真正的函數(shù)。! 如果使用的是Interpreted型的UDF ,則只能使用這些FLUENT提供的解法 器函數(shù)。解法器函數(shù)可以與C函數(shù)一起在函數(shù)體中混合使用。為方便起見,一些最 常用的C函數(shù)列在附錄B中。下面章節(jié)列出的函數(shù)中包括它們的參數(shù),參數(shù)類型和返回值,還有對該函數(shù)說明的源文件。例如C_CENTROID(x , c, t)有三個參數(shù):x, c和t,其中c和t為輸入?yún)?shù),x為輸出參數(shù),輸出網(wǎng)格 的坐標值。輔助幾何關系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é)點數(shù) 網(wǎng)格面數(shù) 間節(jié)點數(shù)mem.h mem.h mem.h網(wǎng)格坐標與面積Name(Arguments)Argument TypeReturnsSourceC_CENTROID(x , c,t)real xND_ND , cell_t c, Thread *tx(網(wǎng)格坐標)metric.hF_CENTROID(x , f,t)real xND_ND, face_t f, Thread *tx(面坐標)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)格體積;對稱體 網(wǎng)格體積/2冗metric.h 節(jié)點坐標與節(jié)點(網(wǎng)格)速度列表中的節(jié)點速度與移動網(wǎng)格模擬有關。Name(Arguments)Argument TypeReturnsSourceNODE_XnodeNode *node節(jié)點的x坐標metric.hNODE_YnodeNode *node節(jié)點的y坐標metr

53、ic.hNODE_ZnodeNode *node節(jié)點的z坐標metric.hNODE_GXnodeNode *node節(jié)點的x向速度mem.hNODE_GYnodeNode *node節(jié)點的y向速度mem.hNODE_GZnodeNode *node節(jié)點的z向速度mem.h面變量卜面列表中的函數(shù)只能在segregated solve前獲取,耦合計算時不能引用的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湍流動能F_D(f, t)face_t f, Thread *t湍流能量耗散系數(shù)F_YI(f, t, i)face_t f, Thread *t,組分質(zhì)量分數(shù)int iF_UDSI(f, t, i)face_t f, Thread *t,用戶自定義標量(iint i表示第幾個方程)F_UDMI(f , t, i)face_t f, Thread *t,用戶自定義內(nèi)存變int i量(i表小第幾個) 網(wǎng)格變量下面列表中的是網(wǎng)格變量,不像面變量,網(wǎng)格變量在耦合與非耦合計算中都 能獲取 (available in both the s

溫馨提示

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

評論

0/150

提交評論