關(guān)于中科大講稿版-第七章自定義函數(shù)_第1頁
關(guān)于中科大講稿版-第七章自定義函數(shù)_第2頁
關(guān)于中科大講稿版-第七章自定義函數(shù)_第3頁
關(guān)于中科大講稿版-第七章自定義函數(shù)_第4頁
關(guān)于中科大講稿版-第七章自定義函數(shù)_第5頁
已閱讀5頁,還剩65頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第七定義UDFs物性定義(除了比熱外離散相模型(例如體積力,拉力,源項(xiàng)等代數(shù)滑流(algebraicslip)混合物模型(滑流速度和微粒尺寸DODEFINE_SOURCE定義。有關(guān)例5.26.2UDFs可用來定義物質(zhì)的物理性質(zhì),除了比熱之外,其它物性參數(shù)都可以定義。例如,我們可以定義依賴于溫度的粘性系數(shù)。它用宏DEFINE_SR_RATEDEFINE_VR_RATE6.4。離散相存量)5.3,5.5,5.6和5.7。UDFs有著廣泛的應(yīng)用,本文并不能一一敘述。如果在使用中遇到問題,可以聯(lián)系FLUENT技術(shù)支部門要求幫助在此推薦一個上面有FLUENT論書寫UDFsUDFsFLUENTCC將數(shù)學(xué)表達(dá)式轉(zhuǎn)化成C語言源代碼第三步編譯調(diào)試C語言源代碼步在FLUENTInterpretedCompiled型比CompiledUDFsFLUENT標(biāo)代碼庫的連接。這些庫的建立是基于特定計算機(jī)和特定FLUENT版本的,所以升級FLUENT版本后,就必須重新建立相應(yīng)的庫。相反,InterpretedUDFsC語言代碼的。在這種情況下,F(xiàn)LUENTcase文件case文件時,F(xiàn)LUENT也會自動加載相應(yīng)的函數(shù)。InterpretedUDFs具有較強(qiáng)UDFs,如果對運(yùn)行速度要求不高,一般就采Interpreted型的。UDFsInterpretedCompiledUDFs InterpretedUDFs能夠使用FLUENT提供的宏,間接存貯于FLUENT的變量,詳2.10CompiledInterpretedUDFsCANSI-CFLUENT版本(2D3D)InterpretedUDFs第二寫概Interpreted型和Compiled型用戶自定義函數(shù)的過程和書寫格式是一樣的。主要的C語言的結(jié)合程度,CompiledCInterpreted型UDF格UDF定義恒定常數(shù)和包含庫文件,分別由#DEFINE和#INCLUDE(2.3DEFINE_*UDF函數(shù)(2.4函數(shù)體部分(udf.h,sg.h,mem.h,prop.h,dpm.hudf.h是必不可少的,書寫格式為#include“udf.h”SI單位制;函數(shù)體部分字母采用小寫,InterpretedFLUENTC語言語法和函數(shù)。包含庫庫文件udf.hC簡FluentDEFINE_開始,對它們的解釋包含在udf.h文件中,所以需要包含庫udf.h。為了方便使用,我們把對udf.hA中。UDFDEFINE_定義,括號列表中第一個參數(shù)代表函數(shù)名。例如inlet_x_velocity inlet_x_velocity有兩個輸入?yún)?shù):thread和position,threadThread,position是個整數(shù)(見2.4.3UDFFLUENT相應(yīng)的下拉列表內(nèi)。如上述函inlet_x_velocity的函數(shù),udf.h文件中對宏DEFINE_的解udf.hA#define voidname(Thread*t,int#definemacroreplacement-在編譯前,C預(yù)處理器(cpp)先進(jìn)行宏替代。例如voidinlet_x_velocity(Thread*thread,intvoid型的,所以不返回DEFINEUDFsDEFINEDEFINE_SOURCE定義的函數(shù)用來修改輸運(yùn)方程源項(xiàng),DEFINE_PROPERTY定義的函2.52.6中詳述。下A的簡列。 數(shù)據(jù)類型的定C語言數(shù)據(jù)類型的補(bǔ)充,F(xiàn)LUENTThread,cell_t,face_t,Node和Thread是相應(yīng)邊界或網(wǎng)格區(qū)域的結(jié)構(gòu)類型數(shù)據(jù);cell_t表示單獨(dú)一個控制體體積元,用來定義源項(xiàng)或物性;face_t對應(yīng)于網(wǎng)格面,用來定義邊界條件等;Node表示相應(yīng)的網(wǎng)格節(jié)點(diǎn);是一種結(jié)構(gòu),其中包含所有的threads,cells,faces和nodes。 Thread,cell_t,face_t,Node和要區(qū)分大小寫通用宏及其定義DEFINEUDFsArgumentsReturn*該函數(shù)在每一步迭始前,即在求解輸運(yùn)方程前執(zhí)行??梢杂脕硇薷恼{(diào)節(jié)流場量,計算積分或微分等。參數(shù)在執(zhí)行時,傳遞給處理器,通知處理器該函數(shù)作用4.65.3,5.65.7ArgumentsReturnc,t,cell_t*t,int該函數(shù)定義的是組分?jǐn)U散系數(shù)或者用戶自定義標(biāo)量輸運(yùn)方程的擴(kuò)散系數(shù),c格,t是指向網(wǎng)格線的指針,i表示第幾種組分或第幾個用戶自定義標(biāo)量(傳遞給處理器。5.3。ArgumentsReturnface_tf,Threadcell_tc,Thread*t0,realcid[],realcir[]該函數(shù)定義的是網(wǎng)格與鄰近壁面之間擴(kuò)散和輻射熱流量。f表示壁面,tc0表示鄰近壁面的網(wǎng)格,t0指向網(wǎng)格線。函數(shù)中需要給出熱擴(kuò)散系數(shù)(cid)(cir(qirqid=cid[0]+cid[1]×C_T(c0,t0)-cid[2]×F_T(ft)-cid[3]×pow(F_T(f,t)4)qir=cir[0]+cir[1]×C_T(c0,t0)-cir[2]×F_T(f,t)-cir[3]×pow(F_T(f,t),4)4.75.6。ArgumentsReturn*FLUENT默認(rèn)的初始化之后執(zhí)行。作用區(qū)域是全4.55.4.15.5。ArgumentsReturnFLUENTArgumentsReturncell_tc,Thread該函數(shù)定義邊界條件。t指向定義邊界條件的網(wǎng)格線,i用來表示邊界的位置。函數(shù)在F_PROFILE(f,t,i)中,無返回值。4.15.1.1,5.1.2,5.1.3,5.3,6.1.16.1.2ArgumentsReturncell_tc,Thread該函數(shù)用來定義物質(zhì)物性參數(shù)。c表示網(wǎng)格,tArgumentsReturnFILEcase和data文件。fp4.11,例子2.9.8。ArgumentsReturnrealc,realDO(DiscreteOrdinate)輻射模型中的散射相函數(shù)(radiationscatteringphasefunctionij向散射的輻射能量分?jǐn)?shù)和前向散射因子(forwardscatteringfactor。ci和j向夾角的余弦值,散射的能量分?jǐn)?shù)由函數(shù)返A(chǔ)rgumentsReturncell_tc*t,realdS[],intDO輻射模型之外,輸運(yùn)方程的源項(xiàng)。在計算中,函數(shù)需要掃描全場網(wǎng)格。c表示網(wǎng)格,t表示網(wǎng)格線,dS表示源項(xiàng)對所求輸運(yùn)方程的標(biāo)量的偏導(dǎo)數(shù),用于對源項(xiàng)的線性化;i4.25.2.1,5.2.2,ArgumentsReturnface_t*t,Reaction*r,real*mw,real*yi,real該函數(shù)定義表面化學(xué)反應(yīng)速率。f表示面,t表示面的線,r是結(jié)構(gòu)指針,表示化學(xué)反應(yīng);mwyi是個實(shí)型指針數(shù)組,mw存貯物質(zhì)的分子量,yi存貯物質(zhì)的質(zhì)量分?jǐn)?shù),rr設(shè)4.8。ArgumentsReturnface_tf,Threadint該函數(shù)定義用戶自定義標(biāo)量輸運(yùn)方程(user-definedscalartransportequations)的對流通量。f,t分別表示所求通量的面和面的線,i表示第幾個輸運(yùn)方程(有處理器傳遞給本函ArgumentsReturncell_t*t,int*apu,real該函數(shù)定義用戶自定義標(biāo)量輸運(yùn)方程的非穩(wěn)態(tài)項(xiàng)。c表示網(wǎng)格,t表示網(wǎng)格線,i表示第幾個輸運(yùn)方程。在FLUENT中,非穩(wěn)態(tài)到RHS中,并以下面的方式離散:unsteady_term

ArgumentsReturncell_t*t,Reactionreal*yi,real該函數(shù)定義體積化學(xué)反應(yīng)速率。c表示網(wǎng)格,t表示網(wǎng)格線,r表示結(jié)構(gòu)指針,表示化學(xué)反應(yīng)過程,mw指針數(shù)組指向存貯物質(zhì)分子量的變量,yi指向物質(zhì)的質(zhì)量分?jǐn)?shù);rrrr_t4.86.4.1。離散相模型宏及其定義的函p,可以用它得到顆粒的性質(zhì)和相關(guān)信息。下面是具體的宏定義。ArgumentReturn*p,int該函數(shù)用于定義除了重力和拉力之外的所有體積力。p為結(jié)構(gòu)指針,i0,1,3分別4.45.4.2。ArgumentReturn*p,real該函數(shù)定義拉力系數(shù)CD,Re為Reynolds數(shù),與顆粒直徑和相對于液相速度有關(guān)。拉 18CDD D ArgumentReturn*p,Threadface_tf,real,realreal該函數(shù)定義顆粒撞擊壁面湮滅或產(chǎn)生速率。t為撞擊面的線,fnormal存貯撞擊面的單位法向量;alpha中存貯顆粒軌道與撞擊面的夾角;Vmag存貯顆粒速度大小,mdot存貯顆粒與壁面撞擊率。函數(shù)無返回值,顆粒湮滅或產(chǎn)生的計算結(jié)果存貯在面變F_STORAGE_R(f,t,SV_DPMS_EROSION)F_STORAGE_R(f,t,SV_DPMS_ACCRETION)4.4。ArgumentReturniInjection該函數(shù)用于定義顆粒注入軌道時的物理性質(zhì)。I是指針,指向顆粒產(chǎn)生時的軌道。對每DPM迭代前調(diào)用兩次,在隨后顆粒進(jìn)入?yún)^(qū)域前每一次迭ArgumentReturn*p,int該函數(shù)定義液滴和燃燒顆粒的熱和質(zhì)量傳輸速率。p的意義如前所述,ci表示連續(xù)相1時表示耦合,0時表示不耦合。顆粒的性質(zhì)隨著液滴和顆粒2.6.6ArgumentReturnintFILE*p,ThreadPlane該函數(shù)可以得到顆粒通過某一平面(FLUENT14.10.6)時的相關(guān)變量。header10;fp為文件指針,指向讀寫相關(guān)信息的文件;p為結(jié)構(gòu)指針,t指向顆粒所經(jīng)過的網(wǎng)格線;plane為(dpm.hULLfp所指向的文件,函數(shù)無返回值。5.4.1ArgumentReturncell_tc,Thread*t,Tracked_Particle該函數(shù)用于定義離散相物質(zhì)的物理性質(zhì)。p為結(jié)構(gòu)指針,c表示網(wǎng)格,t表示網(wǎng)格線。ArgumentReturncell_tc,Thread*t,intinitialize,Tracked_particle該函數(shù)用于更新與顆粒相關(guān)的變量或求它們在整個顆粒時間的積分。與顆粒相關(guān)P_USER_REAL(p,i)取出。c表示顆粒當(dāng)前所處的網(wǎng)格,t為該網(wǎng)格線。initialize10。在計算變量對顆粒軌道的積分時,F(xiàn)LUENTFLUENTDPM面ArgumentReturncell_t*t,dpms_t*S,realstrength,DPM求解前的源項(xiàng)。c表示當(dāng)前顆粒所在的網(wǎng)格,t為網(wǎng)格線,Sdpms_t,其中包含網(wǎng)格的源項(xiàng)。strength表示單位時間內(nèi)流過的顆粒數(shù)目。pS4.4ArgumentReturn*p,intFLUENT默認(rèn)的顆粒定律與用戶自定義的顆粒定律之間,或不同的默認(rèn)定律和自定義定律之間的開關(guān)函數(shù)。p為結(jié)構(gòu)指針,ci1時,表示連續(xù)相與離散相耦合求解,0時表示不耦合求解。!Tracked_Particle,dpms_tFLUENT為相關(guān)模型定義的數(shù)據(jù)類型。具多相模型的宏及其定義的函Argumentcell_tc,Thread該函數(shù)用于定義代數(shù)滑流混合模型(algebraicslipmixturemodel)顆粒或液滴的直徑。c為網(wǎng)格,t4.10。Argument*該函數(shù)用于定義代數(shù)滑流混合模型(algebraicslipmixturemodel)的滑流速度(slipvelocity4.9。UDF的場合,需要在一條特定的線上進(jìn)行操作。為滿足這種要求,首BoundaryConditionsID,然后就可用宏Lookup_Thread將指針指向該條線。在下面的例子中,CPrint_Thread_Face_CentroidsFLUENT的宏Lookup_Thread將指針指向特定的線,然后將線上所有面的質(zhì)心坐標(biāo)輸入文件中。宏DEFINE_ON_DEMANDget_coords取出其中的兩條線,并打印線上所有面的質(zhì)#include“udf.h” FILEstatic ,int{ Thread fprintf(fout,“thread { }}{fout=fopen(“faces.out”,“w”); }函數(shù)介C語言函數(shù)體的定義是相同的。{realrealtemp=if(temp>288.)mu_lam=5.5e-elseif(temp>mu_lam=143.2135–0.49725*temp;mu_lam=return}InterpretedUDFs的限制Interpreted型書寫函數(shù)體時并不能完全應(yīng)用C語言函數(shù),這面有過論述。此外,函數(shù)UDFsFLUENT的變量(不以參數(shù)形式傳遞casedatavoid型,就返回實(shí)型值。下面的例子分別說明不同功返回UDF#include“udf.h”{realrealtempC_T(cell,thread);/*temp存放網(wǎng)格的溫度if(temp>288.)mu_lam=5.5e-elseif(temp>mu_lam=143.2135–0.49725*temp;mu_lam=returnmu_lam;/*mu_lam存放粘性系數(shù)值,函數(shù)返回該值}調(diào)節(jié)UDF#include {reals1=realmw1=if(FLUID_THREAD_P(thread)&&THREAD_VAR(thread).fluid.*rate=K1*s1/pow((1.+K2*s1),2.)/mw1;*rate=}user_rateif語句判斷是否處于多孔介質(zhì)區(qū),僅在多孔介質(zhì)區(qū)有返回變量值并調(diào)UDFswirl-velocity#include#defineOMEGA /*rotationalspeedofswirler#defineWEIGHT1.e20 /*weightingcoefficientsinlinearizedequation*/{realy=x[1];w_vel= /*linearw_velocityatthecellsource=WEIGHT*(w_vel–C_WSWIRL(cell,thread));dS[eqn]=-WEIGHT;return}user_swirlsource并且返回其值。函數(shù)的各項(xiàng)參數(shù)的意義2.5.10。調(diào)節(jié)FLUENT變FLUENTx#include“udf.h”{realx[ND_ND];realy;face_t{y=x[1];F_PROFILE(f,thread,position)=20.}}函數(shù)的參數(shù)position是個數(shù)字,標(biāo)記每一步循環(huán)(loop)中被設(shè)置的變量。函數(shù)FLUENTF_PROFILE。讀寫datacase文#include“udf.h”intkount0;/* {kountprintf(“kount=}{printf(“WritingUDFdatatodatafile…\n”); /*將kountdata文件中*/}{printf(“ReadingUDFdatafromdatafile…\n”); /*從數(shù)據(jù)文件中kount值*/}上面有三個函數(shù)。如果迭代10次,則kount值為10,然后將當(dāng)前值10存貯到數(shù)據(jù)文件中,如果下次將kount值讀入FLUENT繼續(xù)運(yùn)算,則kount10的基礎(chǔ)上增加。我們解法器函數(shù)(Solver概在很多情況下,UDFFLUENT所求解的變量及其導(dǎo)數(shù)(例如,速度,溫度等網(wǎng)格和面幾何性質(zhì)(例如,面面積,網(wǎng)格體積,網(wǎng)格質(zhì)心坐標(biāo)等物質(zhì)的物理性質(zhì)(例如,密度,粘性系數(shù),導(dǎo)熱系數(shù)等 FLUENT提供的解法器函數(shù),得到解法器中的數(shù)據(jù)。這里!InterpretedUDFFLUENT提供的解法器函數(shù)。CCB有三個參數(shù):x,c和tc和t為輸入?yún)?shù),x輔助幾何關(guān)Argumentcell_tc,Thread*tcell_tc,Threadface_tf,Thread網(wǎng)格坐標(biāo)與面ArgumentC_VOLUME(crealx[ND_ND],cell_tc,Thread*trealx[ND_ND],face_tf,Thread*tA[ND_ND],face_tf,Thread*t c,Thread網(wǎng)格體積節(jié)點(diǎn)坐標(biāo)與節(jié)點(diǎn)(網(wǎng)格)ArgumentNodexNodeyNodezNodexNodeyNodez下面列表中的函數(shù)只能在segregatedsolver中獲取,耦合計算時不能的Argumentface_tf,Thread*tface_tf,Thread*tface_tf,Thread*tface_tf,Thread*tface_tf,Thread*tface_tf,Thread*tface_tf,Thread*tface_tf,Thread*tface_tf,Thread*t,intiface_tf,Threadu速度v速度w速度用戶自定義標(biāo)量intface_tf,Thread*t,inti(i表示第幾個ArgumentArgumentcell_tc,Thread*t,inti,intu速度v速度w速度uu雷諾應(yīng)力vv雷諾應(yīng)力ww雷諾應(yīng)力uv雷諾應(yīng)力vw雷諾應(yīng)力uwArgument壓力梯度(i表示方向)密度梯度(i表示方向)Argumentbegin開始,endcell_tc;face_tf;Thread*t;begin_c_loop(c,{}end_c_loop(c, begin_f_loop(f,{}end_f_loop(f, thread_loop_c(t,{ /*遍歷網(wǎng)格線thread_loop_f(t,{ /*遍歷面上的線數(shù)據(jù)的可得UDF的時候,要保證出現(xiàn)在函數(shù)中的數(shù)據(jù)是能夠從解法器上獲得的。為了檢0。Int /*當(dāng)我們case文件時,就會裝載相應(yīng)的UDF。如果此時函數(shù)用到一個未初始化的ifelse語句。如果數(shù)據(jù)可得,就按照正常情況執(zhí)行下去;否則,就停止運(yùn)算。一設(shè)置面變量值F_PROFILEface_tThread /*frommem.hnvarFLUENTUDF。nvar是特定邊界的數(shù)字。例如,與總壓和總溫相關(guān)的邊界,nvar取值為0和1;與速度三個方向標(biāo)量和靜態(tài)溫度相關(guān)的邊界,nvar0,1,23。nvar nvarFLUENTDPMdpm.h中,變量p*p顆粒變量的 顆粒直徑 (evaporatingspeciesindexinmixture) (devolatizingspeciesindexin (oxidizingspeciesindexin (combustionproductsspeciesindexinmixture) currentparticlelawindex nextparticlelawindex 用戶自定義變量(i表示第幾個)顆粒物性的 顆粒物質(zhì)沸騰溫度 顆粒物質(zhì)反應(yīng)熱 顆粒物質(zhì)炭化分?jǐn)?shù) t第三節(jié)編譯連3.4InterpretedCompiledUDF概InterpretedCompiledUDF的區(qū)別以及各自的特點(diǎn),在此不再累述。為了顯示區(qū)別,F(xiàn)LUENTUDF的設(shè)置面板是不同的。Interpreted型面板有一個Compile按鈕點(diǎn)擊時就會對源文件進(jìn)行編譯Compiled型面板有一個open按鈕,UDFDEFINE_udf.h文件中。udf.h文件存放的位置為srcudf.hsrcudf.h文件,因?yàn)樵撐募趗df.h文件,編譯連接工作將無法進(jìn)行。Interpreted本節(jié)介紹了如何編譯InterpretedUDFs譯之后case文件會記錄編譯過程FLUENT在case文件時會自動加載UDFs。將UDF的C源程序拷貝到當(dāng)前工作 指定該文件的具體路徑。如果使用并行運(yùn)算,按照3.2.2設(shè)置;FLUENT(或建立)casevprofile.cDefine→User-圖 InterpretedUDFs面SourceFileNameC源文件名(如vprofile.c。如果源文件不在當(dāng)前工作下,則需要輸入完整路徑。CPPCommandNameC預(yù)處理程序名。如果安裝了/contrib組件,則會出現(xiàn)默認(rèn)的預(yù)處理程序名:cppWindowsNT用戶,標(biāo)準(zhǔn)Close InterpretedUDFUDFsCWindowsNT系統(tǒng)網(wǎng)絡(luò)并行運(yùn)算 結(jié)如果我們使用的是WindowsNT系統(tǒng)的并行版FLUENT,就需要以特定的方式組織文 。3.2.1中的第一步必須以下面的步驟代替:Fluent.Incudf的可寫子在udf下建立一個(Fluent.Inc\udf\myudfC源文件拷入其中,myudfFluent.Inc\udf\abcudfxyz 由于C源文件不在當(dāng)前工 下,編譯時需要輸入文件路徑。如fileserverFLUENT的計算機(jī)名。case文件,應(yīng)保證其在當(dāng)前工作DisplayAssemblyListing選項(xiàng)。InterpretedUDFs常見編譯錯C源文件如果不是在當(dāng)前工作 如果將case文件拷貝到了其 CompiledCompiled在工 下建立相應(yīng) (見3.3.1UDFs并建立共享庫(3.3.2( 下(3.3.3建 結(jié)UNIX和WindowsNT系統(tǒng)所 結(jié)構(gòu)是不一樣的,下面分別進(jìn)行說明UNIX系UNIXCompiledUDFs需要兩個文件:Makefilemakefile。makefile文件是可修改的,C源文件名就在其中設(shè)定。兩文件所處的相關(guān)為:path為FLUENT安 ,5.x表示FLUENT版本下面的步驟概括介紹了結(jié)構(gòu)的建立過程,從圖3.3.13.3.1中的結(jié)構(gòu)適用于兩種版本:單精度2D2D并行運(yùn)算。注意不需要向版本目圖 結(jié)構(gòu)說在當(dāng)前工 下建立一 libudf拷貝Makefile.udf文件到1中建立 在1中建立 將C源文件(如udfexample.c)拷入 下把makefile.udf文件拷入 下,并命名為makefileFLUENTFLUENTirix6.5makefile3.3.2按照FLUENT版本結(jié)構(gòu)建立相應(yīng)的 2d3d:2d2d3d:2ddp2d3d:2d_node2d_host,3d_node2d3d:2ddp_node2ddp_host,3ddp_nodeWindowsNT系對于WindowsNT系統(tǒng)需要兩個文件:makefile_nt.udf和user_nt.udf。C源文件需要修改文件user_nt.udf指定。下面的步驟概括介紹 結(jié)構(gòu)的建立過程,可參考圖3.3.2。3.3.22D2D圖3.3.2Windows 結(jié)構(gòu)說在當(dāng)前工 下建立一 libudf在新 下建立名為 ,用于存放C源程序文件將C源程序(如udfexample)拷貝入 :WindowsNT系統(tǒng)建立ntx86 立ntalpha 在 或 下建立版本信 ntx86\2d2d3d:2d2d3d:2ddp2d3d:2d_node2d_host,3d_node2d3d:2ddp_node2ddp_host,3ddp_node將makefile_nt.udf和user_nt.udf拷入版本信息(如2d。對于并行版本需要將這兩個文件分別拷入host和node 如2d_node和2d_host兩文件在FLUENTpath為FLUENT安 。注意FLUENT版本更新升級后,需要把新版本makefile_nt.udfuser_nt.udfUNIXmakefile_nt.udfmakefile編譯建立共享UNIXWindowsNTUNIX系在建立相應(yīng) 結(jié)構(gòu)和拷入源文件之后,就可以編譯生成共享庫文件編輯src 下的makefile文件,并設(shè)置參數(shù):SOURCES=要進(jìn)行編譯的C源文件名FLUENT_INC=FLUENT安裝路徑makefileirix6.5makefileCFLAGS_IRIX6R10 -KPIC-ansi-fullwarn-0將-ansiCFLAGS_IRIX6R10 -KPIC-xansi-fullwarn-0 Make“FLUENT_ARCH=ultra”udfexample.clibudf.so。C源程序文件。WindowsNT系 及拷入C源文件之后,WindowsNT系統(tǒng)按照下面的步驟編譯和建立user_nt.udfSOURCES=C原文件名。在文件名之前,需要前綴$(SRC)udfexaple.cudfexample2.cVERSION=2d,3d,2ddp,3ddp-none:單機(jī)-smpi:并行使用共享內(nèi)存(對多處理器機(jī)器-vmpi:MPI-net:RSHD user_nt.udf文件user_nt.udf在MS-DOS操作符下進(jìn)入到所建立 \libudf\ntx86\2d\如果編譯出現(xiàn)問題使用nmakeclean清除。連接共享庫到FLUENT中,將共享庫連接使用。具體步FLUENT(或建立)case文件Define→User-圖 CompiledUDFs面在LibraryName中輸入庫文件的 libudf,OpenFLUENT。解法器會自動找到相應(yīng)的版本的共享庫,一旦連接成功,將會在case文件中保存,下次case文件時會自動加載共編譯CompiledUDFs時的常見錯當(dāng)共享庫不在當(dāng)前工 下的相 第四節(jié)FLUENT模型中使FLUENTUDFs。下面分別說明如何FLUENTUDFs。編譯連接成功邊界條件UDF之后,就可以在FLUENT中選擇使用。例如,定義速度入口邊界條件的UDF(inlet_x_velocity)可以在VelocityInlet面板(如下所示)中找到,選擇OKFLUENT中使用。UDFsDEFINE_PROFILE2.5.6源UDFsFluidcell_x_sourceUDFUDFsDEFINE_SOURCE2.5.10UDFsMaterialUDF!UDFFLUENT限制計FLUENT求解。UDFsDEFINE_PROPERTY2.5.7UDFsDiscretePhaseModelDefine→Models→Discrete(scalarupdate)ScalarUpdateNumberofScalars中指定。2.6。UDFUser-DefineFunctionInitializationFunctionDefine→User-Defined→FunctionFLUENT2.5.4更新計算變量函數(shù)在User-DefineFunctionHooks面板的AdjustFunction4.5的2.5.1。seenooksalltuxunction中設(shè)2.5.如,可以改變熱交換系數(shù)和溫度的壁面定律(參見相應(yīng)章節(jié)。User-DefineFunctionHooksVolumeReactionRateFunctionSurfaceReactionRateFunction2.5.11。AlgebraicSlipMixture模型SlipFunctionHooks3.23.3。讀寫casedata文讀寫case和data文件函數(shù)分別在User-DefineFunctionHooks面板的ReadCaseFunction,WriteCaseFunction,ReadDataFunction和WriteDataFunction中設(shè)定。四個函數(shù)由宏DEFINE_RW_FILE2.5.8。顆粒或液滴直MultiphaseModel可執(zhí)行UDFExecuteUDFOnDemandDefine→User-Defined→ExecuteOnUDFDEFINE_ON_DEMAND2.5.5User-DefinesMemory面板中指定。Define→User-Defined→Memory定義了內(nèi)存變量之后可以通過C_UDMI(c,t,i)和F_UDMI(f,t,i)i取0,1,2…,表示第幾個內(nèi)存變量每一個網(wǎng)格最多可以對應(yīng)500個這樣的內(nèi)存變量以在UDF中使用。5.8。第五節(jié)UDFs實(shí)本章詳細(xì)分析了UDFs的各種用法的實(shí)例,具體的應(yīng)用將在第六章中分析。本章5.3,5.45.6的例Compiled型的,其它都是Interpreted型的。下面各節(jié),給出了UDF所描述CC語言語法請參考相關(guān)書籍,F(xiàn)LUENT語法和函數(shù)請2.4.32.10,或者可以直接參照相應(yīng)的*.h文件。UDFs渦輪葉片拋物型壓力分布完全發(fā)展的湍流流動條件p(y)1.1105-0.1105

0.0745UDFC/*profile.c/*UDFforspecifyingasteady-statepressureprofileboundarycondition#include"udf.h"DEFINE_PROFILE(pressure_profile,thread,position){realx[ND_ND];/*thiswillholdthepositionvector*/realy;face_tf;begin_f_loop(f,thread){y=x[1];F_PROFILE(f,thread,position)=1.1e5-}end_f_loop(f,}pressure_profilexF_CENTROIDf的質(zhì)心,loop循環(huán)position是邊界網(wǎng)格面的標(biāo)志,F(xiàn)_PROFILE中,F(xiàn)LUENT在計算過程中處理邊界時,會取出所存貯的值。x[1]y,同理,x[0]x[2]分別對應(yīng)x,y的值。完全發(fā)展的湍流流動條1/7

y1/vxvx,free

u u

Karman

4k3/2l

為w/w/Blasius

w

/ 1/f

free UDFsC/*UDFforspecifyingfully-developedprofileboundaryconditions#include"udf.h"#defineYMIN0.0/*constants*/#defineYMAX0.4064#defineUMEAN1.0#defineB1./7.#defineDELOVRH0.5#defineVISC1.7894e-05#defineCMU0.09#defineVKC/*profileforx-velocity*/DEFINE_PROFILE(x_velocity,thread,position){realy,del,h,x[ND_ND],ufree;/*variabledeclarations*/face_tf;h=YMAX-del=DELOVRH*h;ufree=UMEAN*(B+1.);begin_f_loop(f,thread){y=x[1];if(y<=F_PROFILE(f,thread,position)=ufree*pow(y/del,B);F_PROFILE(f,thread,position)=ufree*pow((h-}end_f_loop(f,}/*profileforkineticenergyDEFINE_PROFILE(k_profile,thread,{realy,del,h,ufree,x[ND_ND];realff,utau,knw,kinf;face_th=YMAX-del=DELOVRH*h;ufree=UMEAN*(B+1.);ff=0.045/pow(ufree*del/VISC,0.25);begin_f_loop(f,thread){if(y<=del)}end_f_loop(f,}/*profilefordissipationrateDEFINE_PROFILE(dissip_profile,thread,{realy,x[ND_ND],del,h,ufree;realff,utau,knw,kinf;realmix,kay;face_tf;h=YMAX-del=DELOVRH*h;ufree=UMEAN*(B+1.);ff=0.045/pow(ufree*del/VISC,0.25);begin_f_loop(f,thread){if(y<=del)if(VKC*y<0.085*del)mix=VKC*y;mix=0.085*del;}}正弦壁面溫度分x300K400K,最右端300K,分布式為:T(x)300100sin UDFC

0.005/*UDFforspecifyingasinusoidaltemperatureprofileboundarycondition#include"udf.h"#definePIDEFINE_PROFILE(temperature_profile,thread,{realr[ND_ND];/*thiswillholdthepositionvector*/realx;face_tf;begin_f_loop(f,thread){x=r[0];F_PROFILE(f,thread,position)=}end_f_loop(f,}源UDFssource0.5C2yvx假設(shè)sourceSAvx ,A0.5C2

xxx

vx所以,UDFxsourceAvx

2AvxUDF必須給出源項(xiàng)對所求變量的直接導(dǎo)數(shù),源項(xiàng)的導(dǎo)數(shù)用于對源項(xiàng)的線性化(見下一節(jié)UDFC源程序。/*UDFforspecifyinganx-momentumsourceterm#include"udf.h"#defineC2DEFINE_SOURCE(xmom_source,cell,thread,dS,{realx[ND_ND];realcon,C_CENTROID(x,cell,con=C2*0.5*C_R(cell,source=-con*fabs(C_U(cell,thread))*C_U(cell,thread);dS[eqn]=-2.*con*fabs(C_U(cell,thread));return}渦產(chǎn)S()

nb

S

)S

p,olda a

S

)S

p,oldS()1020

)S

pp,desired于該點(diǎn)變量取我們希望的 rsource1020r 源項(xiàng)的導(dǎo)數(shù):ds=-1020UDF/*UDFforspecifyingaswirl-velocitysourceterm#include"udf.h"#defineOMEGA50./*rotationalspeedofswirler#defineWEIGHT1.e20/*weightingcoefficientsinlinearizedequation*/DEFINE_SOURCE(user_swirl,cell,thread,dS,eqn){realw_vel,x[ND_ND],y,source;C_CENTROID(x,cell,thread);y=w_vel=y*OMEGA;/*linearw-velocityatthecell*/source=WEIGHT*(w_vel-C_WSWIRL(cell,thread));dS[eqn]=-WEIGHT;return}C_WSWIRL(cell,thread)2D用戶自定義標(biāo)量FLUENT中的P-1UDFsPoissonDefine→Models→User-Defined/*ImplementationoftheP1modelusinguser-definedscalars#include"udf.h"#include"sg.h"#include"prop.h"/*Definewhichuser-definedscalarstouse.*/{staticrealabs_coeff=1.0;/*absorptioncoefficient*/staticrealscat_coeff=0.0;/*scatteringcoefficientstaticreallas_coeff=0.0;/*linear-anisotropicscatteringcoefficient*/staticrealepsilon_w=1.0;/*wallemissivity*/ {/*Makesurethereareenoughuserdefined-scalars.*/if(n_uds<N_REQUIRED_UDS)Internal_Error("notenoughuser-definedscalars}DEFINE_SOURCE(energy_source,c,t,dS,{dS[eqn]=-return-abs_coeff*(4.*SIGMA_SBC*pow(C_T(c,t),4.)-}DEFINE_SOURCE(p1_source,c,t,dS,{dS[eqn]=-returnabs_coeff*(4.*SIGMA_SBC*pow(C_T(c,t),4.)-}DEFINE_DIFFUSIVITY(p1_diffusivity,c,t,{return1./(3.*abs_coeff+(3.-}DEFINE_PROFILE(p1_bc,thread,{face_trealrealdG[ND_ND],dr0[ND_ND],es[ND_ND],ds,A_by_es;realaterm,alpha0,beta0,gamma0,Gsource,Ibw;realEw=epsilon_w/(2.*(2.-epsilon_w));Thread*t0=thread->t0;/*Donothingifareasaren'tcomputedyetornotnexttofluid.*/if(!Data_Valid_P()||!FLUID_THREAD_P(t0))return;begin_f_loop(f,thread){cell_tc0=F_C0(f,thread);At=NV_MAG(A);ifGsource=0.;/*ifgradientnotstoredyet*/gamma0=C_UDSI_DIFF(c0,t0,P1);alpha0=A_by_es/ds;beta0=Gsource/alpha0;aterm=alpha0*gamma0/At;Ibw=/*Specifytheradiativeheatflux.F_PROFILE(f,thread,position)=aterm*Ew/(Ew+aterm)*(4.*M_PI*Ibw-+}end_f_loop}INE_T用于檢驗(yàn)用戶自定義標(biāo)量輸運(yùn)方程是否已經(jīng)激活。由于只有一個用戶自定義輸運(yùn)方程時為C_(cell,hread,0)以面枚舉類型定義中使為零這樣就可以使用C_I(cell,head,1)用戶自定義的第一個標(biāo)量輸運(yùn)方程求解標(biāo)量。加入用戶自定義輸運(yùn)方程之后,UDFsp1_diffusivityMaterials面板選擇,p1_sourceenergy_sourceFluid面板選擇,p1_bc可以在相應(yīng)的邊界條件面板中選FLUID_THREAD_P(t0)檢測當(dāng)前的網(wǎng)格線是否屬于流體區(qū)域;BOUNDARY_FACE_GEOMETRY(f,thread,A,ds,es,A_by_es,dr0)facearea,cell,face)本節(jié)包含F(xiàn)LUENT離散相模型的三個UDFsUDFs,Compiled型以節(jié)約時間。本節(jié)的三個實(shí)例為:沿顆粒軌道的熔化指數(shù)(Melting沿顆粒軌道的熔化指數(shù)(Melting本例使用宏DPM_SCALAR_UPDATE定義的函數(shù),計算沿顆粒軌道的熔化指數(shù)(MeltingIndex

indext10IndexNULL_P,((p)==NULL),檢測參數(shù)是否為空值。/*UDFforcomputingthemeltingindexalongaparticletrajectory#include"udf.h"#include"sg.h"#include"dpm.h"staticrealviscosity_0;DEFINE_INIT(melt_setup,{/*ifmemoryfortheparticlevariabletitleshasnotbeenallocatedyet,doitnow*/if(NULLP(user_particle_vars))Init_User_Particle_Vars();/*nowsetthenameandlabel*/strcpy(user_particle_vars[0].label,"Melting}/*updatetheuserscalarvariables*/DEFINE_DPM_SCALAR_UPDATE(melting_index,cell,thread,initialize,p){cphase_state_t*c=&(p->cphase);if(initialize){/*thisistheinitializationcall,*p->user[0]containsthemeltingindex,initializeto*viscosity_0containstheviscosityatthestartofatimestep*/p->user[0]=0.;viscosity_0=c-}{/*useatrapezoidalruletointegratethemeltingindexp->user[0]+=P_DT(p)*.5*(1/viscosity_0+1/c-/*savecurrentfluidviscosityforstartofnextstep*/viscosity_0=c->mu;}}/*writemeltingindexwhensortingparticlesatsurfaces*/DEFINE_DPM_OUTPUT(melting_output,header,fp,p,thread,plane){charname[100];if(header){ifcxprintf(fp,"(%s%d)\n",plane->sort_file_name,11);cxprintf(fp,"(%10s%10s%10s%10s%10s%10s%10s""%10s%10s%10s%10s%s)\n",}{"((%10.6g%10.6g%10.6g%10.6g%10.6g%10.6g""%10.6g%10.6g%10.6g%10.6g%10.6g)%s)\n",p->state.pos[0],p->state.pos[1],p-p->state.V[0],p->state.V[1],p-p->state.diam,p->state.temp,p->flow_rate,p->state.time,p->user[0],name);}}帶電顆粒的磁場/*UDFforcomputingthemagneticforceonachargedparticle#include"udf.h"#include#defineQ /*particleelectriccharge#defineBZ3.0 /*zcomponentofmagneticfield*/ /*fieldappliedatt=tstart/*Calculatemagneticforceonchargedparticle.Magnetic/*forceisparticlechargetimescrossproductofparticle/*velocitywithmagneticfield:Fx=q*bz*Vy,Fy=-q*bz*Vx*/DEFINE_DPM_BODY_FORCE(particle_body_force,p,i){floatbforce;{if(i==0)elseif(i==1)bforce=-}/*anaccelerationshouldbereturned*/return(bforce/P_MASS(p));}顆粒5.4.2/*UDFforcomputingparticledragcoefficient(18CdRe/24)/*curveassuggestedbyR.Clift,J.R.GraceandM.E.Weber/*"Bubbles,Drops,andParticles"(1978)#include"udf.h"#include"dpm.h"DEFINE_DPM_DRAG(particle_drag_force,Re,p){floatw,drag_force;if(Re<0.01){return(drag_force);}elseif(Re<{w=drag_force=18.0+2.367*pow(Re,0.82-0.05*w);return(drag_force);}/*Note:suggestedvalidrange20<Re<260{drag_force=18.0+3.483*pow(Re,0.6305);return(drag_force);}}DEFINE_INITFLUENTFLUENT/*UDFforinitializingflowfieldvariables#include"udf.h" {cell_tThread*thread;realxc[ND_ND];thread_loop_c(thread,{begin_c_loop_all{if(sqrt(ND_SUM(pow(xc[0]-pow(xc[1]-pow(xc[2]-0.5,2.)))<C_T(c,thread)=400.;C_T(c,thread)=}end_c_loop_all}}(2Dloop循環(huán),能夠掃描全場,給全場賦初始值。qid。qid=cid[0]+cid[1]×C_T(c0,t0)-cid[2]×F_T(f,t)-cid[3]×pow(F_T(f,t),qir=cir[0]+cir[1]×C_T(c0,t0)-cir[2]×F_T(ft)-cir[3]×pow(F_T(f,t),4)C語言源程序?yàn)椋?*UDFforspecifyingthediffusiveheatfluxbetweenawallandneighboringcells#include"udf.h"staticrealh=0.;/*heattransfercoefficient(W/m^2C)*/ {/*Definetheheattransfercoefficient.*/h=120;}DEFINE_HEAT_FLUX(heat_flux,f,t,c0,t0,cid,{cid[0]=cid[1]=cid[2]=cid[3]=}使用用戶自定義標(biāo)量進(jìn)行后DEFINE_ADJUST在每一步迭代執(zhí)行前調(diào)用,所以可以在其中求解標(biāo)量的微積分,/*UDFforcomputingthemagnitudeofthegradientofT^4#include"udf.h"/*Definewhichuser-definedscalarstouse.*/{ ,{Thread*t;cell_tc;face_tf;/*Makesurethereareenoughuser-definedscalars.*/if(n_uds<N_REQUIRED_UDS)Internal_Error("notenoughuser-definedscalars/*FillfirstUDSwithtemperatureraisedtofourthpower.*/thread_loop_c(t, {if(NULL!={begin_c_loop{realT=C_T(c,t);C_UDSI(c,t,T4)=pow(T,4.);}end_c_loop}}thread_loop_f {if(NULL!={begin_f_loop{realT=if(NULL!=THREAD_STORAGE(t,SV_T))T=F_T(f,t);elseif(NULL!=THREAD_STORAGE(t->t0,SV_T))T=C_T(F_C0(f,t),t->t0);F_UDSI(f,t,T4)=}end_f_loop}}/*FillsecondUDSwithmagnitudeofgradient.*/thread_loop_c(t,){if(NULL!=THREAD_STORAGE(t,SV_UDS_I(T4))&&NULL!=T_STORAGE_R_NV(t,SV_UDSI_G(T4))){begin_c_loop{C_UDSI(c,t,MAG_GRAD_T4)=}end_c_loop}}thread_loop_f(t,{if(NULL!=THREAD_STORAGE(t,SV_UDS_I(T4))&&NULL!=T_STORAGE_R_NV(t->t0,SV_UDSI_G(T4))){begin_f_loop{F_UDSI(f,t,MAG_GRAD_T4)=C_UDSI(F_C0(f,t),t-}end_f_loop}}}if(NULLTHREAD_STORAGE(t,SV_UDS_I(T4)))檢測用戶自定義標(biāo)量中NULLT_STORAGE_R_NV(t,SV_UDSI_G(T4))檢可執(zhí)行本例名為demo_calc的UDF,計算打印當(dāng)前數(shù)據(jù)庫中的最低溫度,最高溫度和平均溫

TTmax/*demand.c/*UDFtocalculatetemperaturefieldfunctionandstorein/*user-definedmemory.Alsoprintmin,max,avgtemperatures.#include"udf.h"extern*;{floattavg=0.;floattmax=0.;floattmin=0.;floattemp,volume,vol_tot;Thread*t;cell_t/*Loopoverallcellsinthe*/ {/*Computemax,min,volume-averagedtemperature*/{volume=C_VOLUME(c,t);/*getcellvolume*/temp=C_T(c,t);/*getcelltemperature*/if(temp<tmin||tmin==0.)tmin=temp;if(temp>tmax||tmax==0.)tmax=temp;vol_tot+=volume;tavg+=}tavg/=printf("\nTmin=%gTmax=%gTavg=/*Computetemperaturefunctionandstoreinuser-definedmemory/*(locationindex0)*/{temp=C_UDMI(c,t,0)=(temp-tmin)/(tmax-}}}loop第六節(jié)UDFs的應(yīng)本章列舉了UDFs的幾個應(yīng)用實(shí)例。在例子中,邊界條件UDFs,源項(xiàng)UDFs,物理性質(zhì)UDFs和反應(yīng)速率UDFs應(yīng)用于實(shí)際的相對較簡單的物理模型。我們分析這些實(shí)例UDFsUDFs。UDFs的應(yīng)Interpreted渦輪葉片速度分管道瞬態(tài)速度分渦輪葉片速度分如圖6.1.1,渦輪周圍流體網(wǎng)格采用三角無結(jié)構(gòu)網(wǎng)格,定義渦輪腔體左端為速度,情況場速度的分布。圖6.1.2和圖6.1.3為恒定速度邊界條件計算的結(jié)果。速度大小為20m/sec,可以看出恒定速度場在渦輪葉片周圍產(chǎn)生變形。圖 圖 恒定速度條件下的速度大小分圖 拋物型速度邊界條件速度分布滿足下面的關(guān)系式 vx20200.0745 度分布式速度大小為20m/sec,上下部值都為20m/sec。定義拋物型速度邊界條件的C源程序如下/*vprofile.c/*UDFforspecifyingasteady-statevelocityprofileboundarycondition#include"udf.h"DEFINE_PROFILE(inlet_x_velocity,thread,{realx[ND_ND];/*thiswillholdthepositionvector*/realy;face_tf;begin_f_loop(f,thread){y=x[1];F_PROFILE(f,thread,position)=20.-}end_f_loop(f,}本例使用Interpreted型UDFs,按照前面相關(guān)章節(jié)敘述對C源程序進(jìn)行編譯連接,操作udfinlet_x_velocity,在計算的時候FLUENT就能按照拋物性速度邊界條件進(jìn)行計算,6.1.46.1.5。圖 拋物型速度條件下的速度大小分圖 管道瞬態(tài)速度分在本例中 速度滿足關(guān)系式:vx205sin(10t),管道長1m,半徑0.2m,道內(nèi)流體為空氣,密度1kg/m3,粘性系數(shù)2×10-5kg/m-s。速度分布與時間有關(guān),隨時間正弦變化。C源程序如下:/*unsteady.c/*UDFforspecifyingatransientvelocityprofileboundarycondition#include"udf.h"DEFINE_PROFILE(unsteady_velocity,thread,{face_tf;begin_f_loop(f,thread){realt=RP_Get_Real("flow-F_PROFILE(f,thread,position)=20.+}end_f_loop(f,}unsteady_velocityflow-time存貯流場當(dāng)前歷經(jīng)時間,函數(shù)RP_GET_REAL得到當(dāng)前時間,由于本例為非穩(wěn)態(tài)問題,需要選擇非穩(wěn)態(tài)解法器,如下激InterpretedUDFsInterpretedUDFsUDF,在面板VelocityInletX-Velocityudfunsteady_velocityFLUENT默認(rèn)Iterate面板進(jìn)行迭代計算。20次,每次迭代前都要更新邊界條件并且輸出結(jié)果。60步之后,我們就可以檢查壓力出口的速度大小。如果要在計算過程中,查看相SurfaceMonitors面板:SurfaceMonitors1,monitor-1就可以使用了。我們可以輸入新文件名代替monitor-1Plot,PrintWrite。EveryIteration,F(xiàn)lowTimeFlowTimeDefine…之后,出DefineSurfaceMonitorpressure–outlet-5。監(jiān)測輸出參數(shù)類型為平均值(verage,x軸取流動時間。FileXYPlotmonitor-1.out的圖形。Filesadd…Plot6.1.6輸出不同時刻本例壓力出口的速度大圖 20m/sec5m/sec的周期性分布。UDFs的應(yīng)UDFsInterpreted添加管內(nèi)流動源2D4m2m,液態(tài)金屬(物性見表6.2.1)1mm/s290K0.5m之后,管道上壁開始對280K。為了模擬液態(tài)金屬的凝固,當(dāng)液態(tài)金屬溫度低于288K時,就添加動量方程的源項(xiàng)。在本例中,我們僅以液態(tài)金屬的速度大小來表征是否凝288KxxSxCvx,x

x表 80005.5×10-3kg/m-Specific680J/kg-Thermal30W/m-UDFC#include"udf.h"#defineCON20.0DEFINE_SOURCE(cell_x_source,cell,thread,dS,{realif(C_T(cell,thread)<={/*sourcetermsource=-/*derivativeofsourcetermw.r.t.x-velocity.*/dS[eqn]=-CON;}source=dS[eqn]=0.;returnsource;}InterpretedUdfsFluid面板中的XMomentum下拉列表cell_x_xource。6.2.1,6.2.26.2.3圖 圖 圖 UDFs的應(yīng)UDFsInterpreted粘性系數(shù)與溫度相關(guān)流體的對于暖流體(T288K)5.5×10-3kg/m-s,冷流體(T286K)粘性系數(shù)1.0kg/m-s,處于中間溫度(286K≤T≤288K)的流體,粘性系數(shù)滿足關(guān)系式 0.UDFC/*viscosity.c/*UDFforspecifyingatemperature-dependentviscosityproperty#include"udf.h"{realrealtemp=C_T(cell,thread);if(temp>288.)mu_lam=5.5e-3;elseif(temp>mu_lam=143.2135-0.49725*mu_lam=1.;returnmu_lam;}temp存放溫度,mu_lamUDFs編譯連接之后,可以Material面板中選擇設(shè)置。6.3.1,6.3.26.3.30.0055kg/m-s6.3.26.2.1中的結(jié)果一樣陡降為零,而是逐漸降圖 圖 圖 UDFs的應(yīng)UDFsCompiled體積a生成組分bR

K1X1K2X其中,Xaa的質(zhì)量分?jǐn)?shù),K1K26.4.16英寸厚的多孔介質(zhì),反應(yīng)發(fā)生在多空介質(zhì)區(qū)。管道內(nèi)組分有相同物理性質(zhì),密度1.0kg/m1.72×10-5kg/m-s。圖 2D管道略a0.1m/s的速度從左端進(jìn)入管道,經(jīng)過多空介質(zhì)區(qū)和管道空間,多孔介質(zhì)區(qū)各5m-16.4.2的流場可以看出大多數(shù)流體是從管道空間流出的,經(jīng)圖 具有多空介質(zhì)區(qū)的2D管道內(nèi)的流線分6.4.3圖6.4.3 具有多空介質(zhì)區(qū)的2D管道內(nèi)的速度矢量分布本例的C源程序?yàn)椋?*rate.c/*UDFforspecifyingareactionrateinaporousmedia#include"udf.h"#defineK12.0e-2#defineK25.DEFINE_VR_RATE(user_rate,cell,thread,r,mole_weight,species_mf,rate,{reals1=realmw1=if(FLUID_THREAD_P(thread)&&*rate=K1*s1/pow((1.+K2*s1),2.0)/mw1;*rate=}THREAD_VAR(thread).fluid.porous用于檢測當(dāng)前網(wǎng)格是否屬于多空介質(zhì)區(qū)。CompiledUDFs面板打開共享庫連接UDFsUser-DefinedFunctionHooks面板選擇使用反應(yīng)速率Define→User-Defined→Function6.4.4a的質(zhì)量分?jǐn)?shù)。a0ab;管道空間組a100a沒有進(jìn)行反應(yīng)。圖 具有多空介質(zhì)區(qū)的2D管道內(nèi)的

溫馨提示

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

評論

0/150

提交評論