UDF-自定義函數(shù)課件_第1頁
UDF-自定義函數(shù)課件_第2頁
UDF-自定義函數(shù)課件_第3頁
UDF-自定義函數(shù)課件_第4頁
UDF-自定義函數(shù)課件_第5頁
已閱讀5頁,還剩60頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、2021/3/231用戶自定義函數(shù)UDF2021/3/232用戶自定義函數(shù) 用戶自定義函數(shù)或UDF 是用戶自編的程序它可以被動(dòng)態(tài)的連接到Fluent 求解器上來提高求解器性能用戶自定義函數(shù)用C 語言編寫使用DEFINE 宏來定義UDFs 中可使用標(biāo)準(zhǔn)C 語言的庫函數(shù)也可使用預(yù)定義宏Fluent Inc.提供通過這些預(yù)定義宏可以獲得Fluent 求解器得到的數(shù)據(jù)2021/3/233UDF分類與區(qū)別 UDFs 使用時(shí)可以被當(dāng)作解釋函數(shù)解釋函數(shù)或編譯函數(shù)編譯函數(shù) 解釋函數(shù)解釋函數(shù)在運(yùn)行時(shí)讀入并解釋 編譯編譯UDFs 則在編譯時(shí)被嵌入共享庫中并與Fluent 連接解釋解釋UDFs 用起來簡(jiǎn)單但是有源代

2、碼和速度方面的限制不足。編譯型編譯型UDFs 執(zhí)行起來較快也沒有源代碼限制但設(shè)置和使用較為麻煩2021/3/234UDF的用途滿足用戶個(gè)性化需求 邊界條件 材料性質(zhì) 表面與體積反應(yīng)速率 輸運(yùn)方程源項(xiàng) 用戶標(biāo)量輸運(yùn)方程(UDS) 調(diào)節(jié)每次迭代值 初始化流場(chǎng) 異步執(zhí)行 后處理改善 模型改進(jìn)(離散項(xiàng)模型,多相混合物模型,輻射模型等)2021/3/235UDF舉例上壁面溫度 300K絕熱壁面絕熱壁面溫度: 315K溫度分布2021/3/236Profile處理(Temp point 26)(x 0.00E-03 2.00E-03 4.00E-03 6.00E-03 8.00E-03 1.00E-02

3、1.20E-02 1.40E-02 1.60E-02 1.80E-02 2.00E-02 2.20E-02 2.40E-02 2.60E-02 2.80E-02 3.00E-02 3.20E-02 3.40E-02 3.60E-02 3.80E-02 4.00E-02 4.20E-02 4.40E-02 4.60E-02 4.80E-02 5.00E-02 )(y 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00

4、 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 0.00E+00 )(t 3.49E+02 3.50E+02 3.50E+02 3.47E+02 3.46E+02 3.44E+02 3.41E+02 3.39E+02 3.36E+02 3.33E+02 3.31E+02 3.28E+02 3.26E+02 3.24E+02 3.22E+02 3.20E+02 3.19E+02 3.18E+02 3.17E+02 3.16E+0

5、2 3.16E+02 3.16E+02 3.15E+02 3.15E+02 3.15E+02 3.15E+02 )2021/3/237Profile處理要點(diǎn) (和一般計(jì)算一樣設(shè)置求解器,模型等) DefineProfileRead (數(shù)據(jù)) DefineBoundaryCondition所需設(shè)置的面ThermalTemperatureTemp t (和一般計(jì)算一樣,設(shè)置其它邊值條件、初值條件及求解與結(jié)果檢查等)2021/3/238UDF處理溫度#include udf.hDEFINE_PRO, thread, position) real xND_ND;/* this will hold th

6、e position vector */ real y; face_t f; begin_f_loop(f, thread) F_CENTROID(x,f,thread); y = x0; F_PRO) = 315. + (y-.044)*(y-.044)/.044/.044*35.; end_f_loop(f, thread)2021/3/239UDF設(shè)置邊界溫度處理要點(diǎn) (和一般計(jì)算一樣設(shè)置求解器,模型等) DefineUser definedFunctions(Interpreted Or Compiled)編譯 DefineBoundaryCondition所需設(shè)置的面ThermalT

7、emperatureBottom Temperature (和一般計(jì)算一樣,設(shè)置其它邊值條件、初值條件及求解與結(jié)果檢查等)2021/3/2310側(cè)面與地面兩處UDF2021/3/2311定義一個(gè)以上UDF上壁面溫度 300K溫度拋物線分布絕熱壁面溫度: 315K溫度分布2021/3/2312UDF編寫#include udf.hDEFINE_PRO, thread, position) 程序1DEFINE_PRO, thread, position) 程序2 DEFINE_PRO)程序3。 2021/3/2313邊界溫度分布左側(cè)溫度分布 下面溫度分布2021/3/2314場(chǎng)溫度分布2021/3

8、/2315UDF編寫用C語言 注釋 /* 這是劉某人講課示范用的程序 */ 數(shù)據(jù)類型數(shù)據(jù)類型 Int:整型 Long:長整型 Real:實(shí)數(shù)Float:浮點(diǎn)型 Double:雙精度 Char:字符型 UDF解釋函數(shù)在單精度算法中定義real類型為float型,在雙精度算法宏定義real為double型。因?yàn)榻忉尯瘮?shù)自動(dòng)作如此分配,所以使用在UDF中聲明所有的float和double數(shù)據(jù)變量時(shí)使用real數(shù)據(jù)類型是很好的編程習(xí)慣。 2021/3/2316局部變量局部變量 局部變量只用于單一的函數(shù)中。當(dāng)函數(shù)調(diào)用時(shí),就被創(chuàng)建了,函數(shù)返回之后,這個(gè)變量就不存在了,局部變量在函數(shù)內(nèi)部(大括號(hào)內(nèi))聲明。在

9、下面的例子中,mu_lam和temp是局部變量。 2021/3/2317DEFINE_PROPERTY(cell_viscosity, cell, thread) real mu_lam; real temp = C_T(cell, thread); 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; 2021/3/2318FLUENT求解過程中UDFs的先后順序非耦合求解器2021/3/2319耦合求解器

10、2021/3/2320FLUENT 網(wǎng)格拓?fù)?單元(cell) 區(qū)域被分割成的控制容積 單元中心(cell center) FLUENT中場(chǎng)數(shù)據(jù)存儲(chǔ)的地方 面(face) 單元(2D or 3D)的邊界 邊(edge) 面(3D)的邊界 節(jié)點(diǎn)(node) 網(wǎng)格點(diǎn) 單元線索(cell thread) 在其中分配了材料數(shù)據(jù)和源項(xiàng)的單元組 面線索(face thread) 在其中分配了邊界數(shù)據(jù)的面組 節(jié)點(diǎn)線索(node thread) 節(jié)點(diǎn)組 區(qū)域(domain) 由網(wǎng)格定義的所有節(jié)點(diǎn)、面和單元線索的組合 2021/3/23212021/3/2322Fluent數(shù)據(jù)類型 cell_t face_t

11、Thread Node Domain cell_t是線索(thread)內(nèi)單元標(biāo)識(shí)符的數(shù)據(jù)類型。它是一個(gè)識(shí)別給定線索內(nèi)單元的整數(shù)索引。face_t是線索內(nèi)面標(biāo)識(shí)符的數(shù)據(jù)類型。它是一個(gè)識(shí)別給定線索內(nèi)面的整數(shù)索引。 Thread數(shù)據(jù)類型是FLUENT中的數(shù)據(jù)結(jié)構(gòu)。它充當(dāng)了一個(gè)與它描述的單元或面的組合相關(guān)的數(shù)據(jù)容器。 Node數(shù)據(jù)類型也是FLUENT中的數(shù)據(jù)結(jié)構(gòu)。它充當(dāng)了一個(gè)與單元或面的拐角相關(guān)的數(shù)據(jù)容器。 Domain數(shù)據(jù)類型代表了FLUENT中最高水平的數(shù)據(jù)結(jié)構(gòu)。它充當(dāng)了一個(gè)與網(wǎng)格中所有節(jié)點(diǎn)、面和單元線索組合相關(guān)的數(shù)據(jù)容器。2021/3/2323使用DEFINE Macros定義UDF DEFI

12、NE_MACRONAME(udf_name, passed-in variables) 這里括號(hào)內(nèi)第一個(gè)自變量是你的UDF的名稱。名稱自變量是情形敏感的必須用小寫字母小寫字母指定。 一旦函數(shù)被編譯(和連接),你為你的UDF選擇的名字在FLUENT下拉列表中將變成可見的和可選的。第二套輸入到DEFINE 宏的自變量是從FLUENT求解器傳遞到你的函數(shù)的變量。2021/3/2324 DEFINE_PRO, thread, index) 用兩個(gè)從FLUENT傳遞到函數(shù)的變量thread和index定義了名字為inlet_x_velocity的分布函數(shù)。這些passed-in變量是邊界條件區(qū)域的ID(

13、作為指向thread的指針)而index確定了被存儲(chǔ)的變量。一旦UDF被編譯,它的名字(例如,inlet_x_velocity)將在FLUENT適當(dāng)?shù)倪吔鐥l件面板(例如,Velocity Inlet面板)的下拉列表中變?yōu)榭梢姷暮涂蛇x的。 2021/3/2325UDF源文件中包含udf.h文件 #include udf.h 通過在你的UDF源文件中包含udf.h,編譯過程中所有的DEFINE宏的定義與源代碼一起被包含進(jìn)來。udf.h文件也為所有的C庫函數(shù)頭文件包含#include指示,與大部分頭文件是針對(duì)F l u e n t 提 供 的 宏 和 函 數(shù) 是 一 樣 的 ( 例如,mem.h)。

14、除非有另外的指示,沒必要在你的UDF中個(gè)別地包含這些頭文件。 2021/3/2326DEFINE_PRO, thread, index) 定義在udf.h文件中為 #define DEFINE_PRO, t, i) void name(Thread *t, int i) 在編譯過程中延伸為 void inlet_x_velocity(Thread *thread, int index) 名字為inlet_x_velocity的函數(shù)不返回值由于它被聲明為空的數(shù)據(jù)類型。 2021/3/2327UDF任務(wù) 返回值 修改自變量 返回值和修改自變量 修改FLUENT變量(不能作為自變量傳遞) 寫信息到(

15、或讀取信息從)case或data文件2021/3/2328返回值 DEFINE_PROPERTY返回一個(gè)udf.h中指定的real數(shù)據(jù)類型。兩個(gè)real變量傳入函數(shù):通過函數(shù)計(jì)算層流粘度mu_lam的值,其是溫度C_T(cell,thread)的函數(shù)。根據(jù)單元體溫度,計(jì)算出mu_lam,在函數(shù)結(jié)尾,mu_lam值被返回。 DEFINE_PROPERTY(cell_viscosity, cell, thread) real mu_lam; real temp = C_T(cell, thread); if (temp 288.) mu_lam = 5.5e-3; else if (temp 28

16、6.) mu_lam = 143.2135 - 0.49725 * temp; else mu_lam = 1.; return mu_lam; 2021/3/2329Function that Modify an Argument判斷單元是否在多孔區(qū)域,給多孔介質(zhì)區(qū)域定義反應(yīng)速率;real指針變量rr是一個(gè)傳遞 給 函 數(shù) 的 自 變 量 。UDF使用廢棄操作符* 分配反應(yīng)速率值給廢棄指針*rr。指針rr指向的目標(biāo)是設(shè)置反應(yīng)速率。通過這個(gè)操作,存儲(chǔ)在內(nèi)存中這個(gè)指針上的字符的地址被改變了,不再是指針地址本身#include udf.h #define K1 2.0e-2 #define K2

17、5. DEFINE_VR_RATE(user_rate, c, t, r, mole_weight, species_mf, rr, rr_t) real s1 = species_mf0; real mw1 = mole_weight0; if (FLUID_THREAD_P(t) & THREAD_VAR(t).fluid.porous) *rr = K1*s1/pow(1.+K2*s1),2.0)/mw1; else *rr = 0.; 2021/3/2330返回一個(gè)值和修改一個(gè)自變量的函數(shù)DEFINE_SOURCE返回一個(gè)在udf.h中指定的數(shù)據(jù)類型。函數(shù)采用自變量ds(它是數(shù)

18、組的名字)并設(shè)置由eqn指定的元素為關(guān)于速度(w_vel)導(dǎo)數(shù)的值。(這是z動(dòng)量方程源項(xiàng))。這個(gè)函數(shù)也計(jì)算了旋轉(zhuǎn)速度源項(xiàng)的值source,并返回這個(gè)值到求解器。#include udf.h #define OMEGA 50. /* rotational speed of swirler */ #define WEIGHT 1.e20 /* weighting coefficients in linearized equation */ DEFINE_SOURCE(user_swirl, cell, thread, dS, eqn) real w_vel, xND_ND, y, source;

19、C_CENTROID(x, cell, thread); y = x1; w_vel = y*OMEGA; /* linear w-velocity at the cell */ s o u r c e = W E I G H T * ( w _ v e l - C_WSWIRL(cell,thread); dSeqn = -WEIGHT; return source; 2021/3/2331修改FLUENT變量的函數(shù)函數(shù)由聲明變量f作為face_t數(shù)據(jù)類型開始。一維數(shù)組x和變量y是real 數(shù)據(jù)類型。循環(huán)宏用來在區(qū)域中每個(gè)面上循環(huán)以創(chuàng)建型線或數(shù)據(jù)數(shù)組。在每個(gè)循環(huán)內(nèi),F_CENTROID為含有

20、index f的面輸出面 質(zhì) 心 的 值 ( 數(shù) 組x),index f在由thread指向的線索上。存儲(chǔ)在x1中的y坐標(biāo)分配給變量y,它用于計(jì)算x速度。然 后 這 個(gè) 值 分 配 給F_PROFILE, 它使用整數(shù)index(由求解器傳遞個(gè)它)來設(shè)置內(nèi)存中面上的x速度值。DEFINE_PRO, thread, index) real xND_ND; /* this will hold the position vector */ real y; face_t f; begin_f_loop(f, thread) F_CENTROID(x,f,thread); y = x1; F_PROFIL

21、E(f, thread, index) = 20. - y*y/(.0745*.0745)*20.; end_f_loop(f, thread) 2021/3/2332寫/讀Case或Data文件在頂部整數(shù)kount被定義為全局的(由于它被源代碼文件中的所有三個(gè)函數(shù)使 用 ) 并 初 始 化 為 0 。 名 字 為demo_ca lc的 第 一 個(gè) 函 數(shù) ,使 用DEFINE_ADJUST 宏來定義。在demo_calc中,kount的值每次迭代后 增 加 因 為 每 次 迭 代 調(diào) 用DEFINE_ADJUST一次。名字為writer的第二個(gè)函數(shù),使用DEFINE_RW_FILE宏來定義。

22、當(dāng)保存數(shù)據(jù)文件時(shí),它指示FLUENT寫當(dāng)前kount值到數(shù)據(jù)文件。名字為reader的第三個(gè)函數(shù),當(dāng)讀取數(shù)據(jù)文件時(shí),它指示FLUENT從這個(gè)數(shù)據(jù)文件中讀取kount的值。 這三個(gè)函數(shù)一起工作如下。如果你運(yùn)行10次迭代計(jì)算(kount將增加到值為10)并保存這個(gè)數(shù)據(jù)文件,當(dāng)前kount(10)的值被寫入你的數(shù)據(jù)文件。如果你讀這個(gè)數(shù)據(jù)返回到FLUENT并繼續(xù)計(jì)算,kount將以值10開始隨著每次迭代繼續(xù)增加。#include udf.h int kount = 0; /* define global variable kount */ DEFINE_ADJUST(demo_calc, domain

23、) kount+; printf(kount = %dn,kount); DEFINE_RW_, fp) printf(Writing UDF data to data file.n); fprintf(fp, %d,kount); /* write out kount to data file */ DEFINE_RW_, fp) printf(Reading UDF data from data file.n); fscanf(fp, %d,&kount); /* read kount from data file */ 2021/3/2333DEFINE_ADJUST功能及其使用

24、方法 2021/3/2334功能 DEFINE_ADJUST是一個(gè)用于調(diào)節(jié)和修改FLUENT變量的通用宏。 可以用DEFINE_ADJUST來修改流動(dòng)變量(如:速度,壓力)并計(jì)算積分。 用來對(duì)某一標(biāo)量在整個(gè)流場(chǎng)上積分,然后在該結(jié)果的基礎(chǔ)上調(diào)節(jié)邊界條件。 在每一步迭代中都可以執(zhí)行用DEFINE_ADJUST定義的宏,并在解輸運(yùn)方程之前的每一步迭代中調(diào)用它。2021/3/2335DEFINE_ADJUST ( name, d) DEFINE_ADJUST有兩個(gè)參變量:name和d。name是你所指定的UDF的名字。當(dāng)你的UDF編譯并連接時(shí),你的FLUENT圖形用戶界面就會(huì)顯示這個(gè)名字,此時(shí)你就可以

25、選擇它了。d是FLUENT解算器傳給你的UDF的變量。 D是一個(gè)指向區(qū)域的指針,調(diào)節(jié)函數(shù)被應(yīng)用于這個(gè)區(qū)域上。區(qū)域變量提供了存取網(wǎng)格中所有單元和表面的線程。對(duì)于多相流,由解算器傳給函數(shù)的區(qū)域指針是混合層區(qū)域指針。 DEFINE_ADJUST函數(shù)不返回任何值給解算器。2021/3/2336DEFINE_INIT 用DEFINE_INIT宏來定義一組解的初始值。 DEFINE_INIT 完成和修補(bǔ)一樣的功能,只是它以另一種方式UDF來完成。 每一次初始化時(shí)DEFINE_INIT函數(shù)都會(huì)被執(zhí)行一次,并在解算器完成默認(rèn)的初始化之后立即被調(diào)用。因?yàn)樗窃诹鲌?chǎng)初始化之后被調(diào)用的,所以它最常用于設(shè)定流動(dòng)變量的

26、初值。2021/3/2337DEFINE_INIT ( name, d) DEFINE_INIT有兩個(gè)參變量:name和d。 name是你所指定的UDF的名字。當(dāng)你的UDF編譯并連接時(shí),你的FLUENT圖形用戶界面就會(huì)顯示這個(gè)名字,此時(shí)你就可以選擇它了。 d是FLUENT解算器傳給你的UDF的變量所作用的計(jì)算區(qū)域2021/3/2338DEFINE_INIT舉例舉例 下面的UDF名字是my_init_func,它在某一個(gè)解中初始化了流動(dòng)變量。在解過程開始時(shí)它被執(zhí)行了一次。它可以作為解釋程序或者編譯后的UDF在FLUENT中執(zhí)行。#include udf.h DEFINE_INIT(my_init

27、_function, domain) cell_t c; Thread *t; real xcND_ND; /* loop over all cell threads in the domain */ thread_loop_c (t,domain) /* loop over all cells */ begin_c_loop_all (c,t) C_CENTROID(xc,c,t); if (sqrt(ND_SUM(pow(xc0 - 0.5,2.), pow(xc1 - 0.5,2.), pow(xc2 - 0.5,2.) 0.25) C_T(c,t) = 400.; else C_T(c

28、,t) = 300.; end_c_loop_all (c,t) 2021/3/2339DEFINE_ON_DEMAND#include udf.h DEFINE_ON_DEMAND(on_demand_calc) Domain *d; /* declare domain pointer since it is not passed a */ /* argument to DEFINE macro */ real tavg = 0.; real tmax = 0.; real tmin = 0.; real temp,volume,vol_tot; Thread *t; cell_t c; d

29、 = Get_Domain(1); /* Get the domain using Fluent utility */ /* Loop over all cell threads in the domain */ thread_loop_c(t,d) /* Compute max, min, volume-averaged temperature */ /* Loop over all cells */ begin_c_loop(c,t) volume = C_VOLUME(c,t); /* get cell volume */ temp = C_T(c,t); /* get cell tem

30、perature */ if (temp tmax | tmax = 0.) tmax = temp; vol_tot += volume; tavg += temp*volume; end_c_loop(c,t) tavg /= vol_tot; printf(n Tmin = %g Tmax = %g Tavg = %gn,tmin,tmax,tavg); /* Compute temperature function and store in user-defined memory*/ /*(location index 0) */ begin_c_loop(c,t) temp = C_

31、T(c,t); C_UDMI(c,t,0) = (temp-tmin)/(tmax-tmin); end_c_loop(c,t) 2021/3/2340DEFINE DEFINE_DELTAT DEFINE_DIFFUSIVITY DEFINE_HEAT_FLUX DEFINE_NOX_RATE DEFINE_PROFILE DEFINE_PROPERTY DEFINE_SCAT_PHASE_FUNC DEFINE_SOURCE DEFINE_SR_RATE DEFINE_TURB_PREMIX_SOURCE DEFINE_TURBULENT_VISCOSITY DEFINE_UDS_FLUX

32、 DEFINE_UDS_UNSTEADY DEFINE_VR_RATE 2021/3/2341提取Fluent中變量值 C_T(c,t)cell t c, Thread *t 溫度 C_P(c,t)cell t c, Thread *t 壓力 C_U(c,t)cell t c, Thread *t u 方向的速度 C_V(c,t)cell t c, Thread *t v方向的速度 C_W(c,t)cell t c, Thread *t w方向的速度 C_H(c,t)cell t c, Thread *t 焓 C_YI(c,t,i) cell t c, Thread *t, int i 物質(zhì)質(zhì)

33、量分?jǐn)?shù) C_K(c,t)cell t c, Thread *t 湍流運(yùn)動(dòng)能 C_D(c,t)cell t c, Thread *t 耗散率2021/3/2342速度導(dǎo)數(shù)名稱(參數(shù))名稱(參數(shù))參數(shù)類型參數(shù)類型返回值返回值C DUDX(c,t)cell t c, Thread *tvelocity derivativeC DUDY(c,t)cell t c, Thread *tvelocity derivativeC DUDZ(c,t)cell t c, Thread *tvelocity derivativeC DVDX(c,t)cell t c, Thread *tvelocity deri

34、vativeC DVDY(c,t)cell t c, Thread *tvelocity derivativeC DVDZ(c,t)cell t c, Thread *tvelocity derivativeC DWDX(c,t)cell t c, Thread *tvelocity derivativeC DWDY(c,t)cell t c, Thread *tvelocity derivativeC DWDZ(c,t)cell t c, Thread *tvelocity derivative2021/3/2343 C_R(c,t)cell t c, Thread *t密度C_MU L(c

35、,t)cell t c, Thread *t層流粘性系數(shù)C_MU T(c,t)cell t c, Thread *t湍流粘性系數(shù)C_MU EFF(c,t)cell t c, Thread *t有效粘度C_K_L(c,t)cell t c, Thread *t層流熱傳導(dǎo)系數(shù)C_K_T(c,t)cell t c, Thread *t湍流熱傳導(dǎo)系數(shù)C_K_ EFF(c,t)cell t c, Thread *t有效熱傳導(dǎo)系數(shù)C_CP(c,t)cell t c, Thread *t比熱C_RGAS(c,t)cell t c, Thread *t通用氣體常數(shù)C_DIFF L(c,t,i,j)cell t

36、 c, Thread *t, int i,int j層流擴(kuò)散率 物性參數(shù)2021/3/2344循環(huán)宏6.2.1 Looping over Cell Threads in a Domain ( thread_loop_c) 查詢控制區(qū)的單元線6.2.2 Looping over Face Threads in a Domain ( thread_loop_f) 查詢控制區(qū)的面6.2.3 Looping over Cells in a Cell Thread ( begin.end_c_loop) 查詢單元線中的單元6.2.4 Looping over Faces in a Face Thread

37、 ( begin.end_f_loop)查詢面單元中的面6.2.5 Looping over Faces on a Cell ( c_face_loop) 查詢單元面6.2.6 Looping over Nodes of a Cell ( c_node_loop) 查詢單元節(jié)點(diǎn) 2021/3/2345UDF編譯連接 Interpreted UDFs:解釋的UDF被編譯成與體系結(jié)構(gòu)無關(guān)的中間代碼或偽碼。這一代碼調(diào)用時(shí)是在內(nèi)部模擬器或解釋器上運(yùn)行。與體系結(jié)構(gòu)無關(guān)的代碼犧牲了程序性能,但其UDF可易于共享在不同的結(jié)構(gòu)體系之間,即操作系統(tǒng)和FLUENT版本中。 Compiled UDFs :編譯后的U

38、DF由C語言系統(tǒng)的編譯器編譯成本地目標(biāo)碼。這一過程須在FLUENT運(yùn)行前完成。在FLUENT運(yùn)行時(shí)會(huì)執(zhí)行存放于共享庫里的目標(biāo)碼,這一過程稱為“動(dòng)態(tài)裝載”。 2021/3/2346Interpreted UDFs2021/3/2347Compiled UDFs方法一在你case所在的目錄下,建立libudf在libudf下建立兩個(gè)src和ntx86子目錄源程序(*.c)放進(jìn)src;在ntx86下再建2d、2d_host、2d_node等(2d)然后在2d文件夾下,把Fluent.Incfluent6. srcmake和Fluent.Inc fluent6. src user_nt.udf拷進(jìn)去,將make重命名為makefile接著修改user_nt.udf里的內(nèi)容,要改成以下格式: SOURCES = $(SRC)udfexample.c(源程序名字) VERSION = 2d(是二維還是三維) PARALLEL_NODE = none(有沒有并行)

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(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)論