




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、2 Multiphase-specific Data Types多相專用數(shù)據(jù)類型1名詞解釋學(xué)習(xí)FLUENT UD編程,必須要從網(wǎng)格拓?fù)浜蛿?shù)據(jù)結(jié)構(gòu)(幾何數(shù)據(jù)、求解數(shù)據(jù)存儲的空間)兩方面來理 解一些重要概念。節(jié)點 node ;面face ;單元cell。simple 2D grid線 thread :線是一塊存儲空間,有節(jié)點線、面線和單元線三類,存儲了存在某種聯(lián)系的節(jié)點組、面組或單元組 的信息。定義線的指針 Thread *t;線對應(yīng)的是網(wǎng)格拓?fù)淅锩娴膠one,例如某邊界就是一個 zone,顯然它對應(yīng)的存儲空間是面線。在多相模型中,還要區(qū)分超級線superthread 和子線subthread 。
2、域 domain :域是比線更大的存儲空間,包含了存在某種聯(lián)系的所有線。定義域的指針 Doma in *d;域?qū)?yīng)的是網(wǎng)格拓?fù)淅锩娴膁omai n,由網(wǎng)格定義的所有節(jié)點、面和單元線索的組合。在多相模型中,還要區(qū)分超級線superdomain和子線subdomain??偟倪壿嬯P(guān)系是,域-> 線-> 節(jié)點/面/單元,這可以從常用的循環(huán)中看出:Domai n *doma in;Thread *c_thread;cell_t c; /* cell_t是線索(thread )內(nèi)單元標(biāo)識符的*/threadoop_c(c_thread, domai n)/*對域內(nèi)所有單元線做 loop*/be
3、gin_c_loop(c, c_thread) /*對線內(nèi)所有單元做循環(huán)*/en d_c_loop(c, c_thread)除了在 Data Types in ANSYS FLUENT 中呈獻(xiàn)的 ANSYS FLUEN專用的數(shù)據(jù)類型,還有一些專用于多相 UDF的線(thread )和域(domain)數(shù)據(jù)結(jié)構(gòu)。當(dāng)使用多相模型時(Mixture, VOF, or Eulerian),這些數(shù)據(jù)結(jié)構(gòu)用來存儲混合相( mixture of all of the phases)和每個單獨相的屬性和變量。在多相應(yīng)用中,最高級別的域是超級域(superdomain)。每一相占據(jù)一個子域(subdomain)
4、。第三種域是交互域(in teractiondoma in),被用于相的相互作用機(jī)制的定義。如果需要混合態(tài)屬性或變量(各相的總和),應(yīng)該用超級域;而如果需要每單相(in dividual phase)的這些信息,則應(yīng)該使用子域。在單相模型情況(只有一相),混合相(mixture )的概念用來代表各組分(species ,components)的 總和;多相模型的情況,它代表各相的總和。這個區(qū)別非常重要,因為FLUENT有能力處理多相多組分分析。 這時一個相可能是多個組分的混合。因為求解信息存儲在線thread數(shù)據(jù)結(jié)構(gòu)中,線必須與超級域或子域聯(lián)系起來。也就是說,對于每一個在超級域中定義的單元線或
5、面線,在各子域里面都有對應(yīng)有單元線或面線。有些超級域的線包含的信息與相應(yīng)的子域里的線共享。超級域內(nèi)的線稱為超級線,mixture-level thread,而與子域聯(lián)系的線稱為子線,rHistHjrF-Icvel thread (e-Ql. flkj-d zoitiekmiMliure drrKHn. dcmwlrl_ldiB 1pnniiir)!闊閒希.対 2wcMGiary phaw cig ruin, donninid 3wizandar)i piiaw domain donuin_id = 4liriLuAiCUail demalr d«rhftin_hdl 5_ L ZI
6、igurt 1.5 LXomM and Thread amjchre»lief arc liyrniMtwreBicI thie«d (i.y.r inM ecmtw'*Ddei:Eizumv r-Ini I-| *j | anwM> | ® Fphase-level thread. Figure 1.5 總結(jié)了域和線的體系結(jié)構(gòu)。r.srvyi MWiwSoil ion OmbdiMaFigure 1.5引入了 domain_id和phase_domain_index的概念。domaind用于將超級域與子域區(qū)分開, 超級域(mixture domai
7、n)的domain_id總是1,第一相對應(yīng)的子域domain_id是2,以此類推,同時交互域也有domain_id ??梢允褂煤瘮?shù) Domain *d=Get_Domain( domain_id )來得到域的指針 d。在Phases設(shè)置 面上,ID顯示的就是domaind。phase_domain_index 用來區(qū)分不同單相的線。第一相的 phase_domain_index 是0,第二相的 phase_domain_index 是 1。不同多相模型的數(shù)據(jù)結(jié)構(gòu)也有不同。比如,在Mixture模型中,只求解混合相的動量方程, 而在Eulerian模型中,對每一相都要求解動量方程。如果對它們指定
8、源項,數(shù)據(jù)結(jié)構(gòu)式不同的。勾在(hooked to)混合態(tài)的UDF函數(shù),求解器為其傳遞超級域結(jié)構(gòu);而勾在某一相的函數(shù)則獲得子域結(jié)構(gòu)輸入。DEFINE_ADJUST和DEFINE_INITUDFs是固定超級域上的。其他類型的函數(shù)可以勾在不同的相域。3 Adva need Multiphase Macros高級多相宏對于大多數(shù)多相模型的標(biāo)準(zhǔn)UDF函數(shù)需要的變量(域指針,線指針等)都會由求解器在求解時直接通過參數(shù)的方式傳遞給函數(shù)。你所要完成的就是將這些函數(shù)勾到你的模型。但是,可能有些復(fù)雜函數(shù)需要一些沒有通過參數(shù)直接傳遞的變量。比如,DEFINE_ADJUST,DEFINE_INIT函數(shù)只獲得了超級域的
9、變量。如果UDF需要相域(subdomain )的指針,則需要使用本節(jié)所述的宏來獲取。ON_DEMAND U沒有獲得任何參數(shù)傳遞,因此 on dema nd函數(shù)也常常要用到這些宏。當(dāng)你在編寫多相模型的 UDF 時,必須要牢記多相模型的數(shù)據(jù)結(jié)構(gòu)體系。要注意函數(shù)獲得的參數(shù),函數(shù) 勾在什么域上(GUI或者固定的)。同樣還有注意你使用的多相模型的類型。3.1 Phase Domain Pointer (DOMAIN_SUB_DOMAIN) 相域(子域)的指針已有超級域指針的情況下,有兩種方式獲取子域的指針:DOMAIN_SUB_DOMAN或Get_Domain。int phase_domain_ind
10、ex = 0; /*第一相的 phase_domain_index 是 0 */Domain *mixture_domain; /*超級域的指針 */Domain *subdomain = DOMAIN_SUB_DOMAIN(mixture_domain,phase_domain_index);在上面的例子中,要事先獲得超級域的指針。如前文所述,某些函數(shù)勾在超級域上,求解器就會自動傳遞超級域指針到 UDF而某些函數(shù)則不能顯式地得到超級域的指針,則需要用宏Get_Domain(1)來獲取。3.2 Phase-Level Thread Pointer (THREAD_SUB_THREAD) 相級線
11、的指針已知超級線的指針,則可以使用THREAD_SUB_THREAD求的其子線的指針。int phase_domain_index = 0;/*第一相的 phase_domain_index 是 0 */Thread *mixture_thread; /*超級線的指針 */Thread *subthread = THREAD_SUB_THREAD(mixture_thread,phase_domain_index);在上面的例子中,要事先獲得超級線的指針。同樣,超級線的指針可能通過函數(shù)形參獲取,或者使用 Lookup_Thread 獲取。int zone_ID = 2; /* 通過 ZONE
12、ID來求的線 */Thread *thread_name = Lookup_Thread(domain,zone_ID);3.2 Phase Thread Pointer Array (THREAD_SUB_THREADS) 子線的指針數(shù)組已知超級線的指針,可以使用THREAD_SUB_THREADS求得其所有子線的指針組成的數(shù)組。Thread *mixture_thread;Thread *pt; /* initialize pt */pt = THREAD_SUB_THREADS(mixture_thread);pti, 數(shù)組的一個單元, 是 phase_domain_index 為 i
13、的單相對應(yīng)的子線的指針。 例如, C_R(c,pti) 可用于返回第 i 相在單元 c 的密度。3.4 Mixture Domain Pointer (DOMAIN_SUPER_DOMAIN) 超級域的指針如果已知某子域的指針,可以用DOMAIN_SUPER_DOMA宏求的它的超級域(可以成為父域)的指針。Domain *subdomain;Domain *mixture_domain = DOMAIN_SUPER_DOMAIN(subdomain);在上面的例子中,要事先獲得子域(即相域)的指針。如果UDF勾在某一相域上,相域的指針也可以由求解器自動傳遞給 UDF在當(dāng)前版本 FLUENT中,
14、DOMAIN_SUPER_DOMAN Get_Domain 返回的指針是 一樣的。但是還是建議在 UDF中,盡可能使用 DOMAIN_SUPER_DOMA考慮到FLUENT版本的更新,未來可 能處理多個超級域。3.5 Mixture Thread Pointer (THREAD_SUPER_THREAD) 超級線的指針如果已知子線的指針,可以用THREAD_SUPER_THREA求超級線的指針。Thread *subthread;Thread *mixture_thread = THREAD_SUPER_THREAD(subthread);3.6 Domain ID (DOMAIN_ID)如果
15、已知某一子域的指針,可以用DOMAIN_ID宏獲取該子域的domain_id。Domain *subdomain;int domain_id = DOMAIN_ID(subdomain);3.7 Phase Domain Index (PHASE_DOMAIN_INDEX)如果已知某一子域的指針,可以用PHASE_DOMAINNDE宏獲取該子域的 phase_domain_index 。Domain *subdomain;int phase_domain_index = PHASE_DOMAIN_INDEX(subdomain);4. Multiphase Looping Macros 多相循
16、環(huán)宏本節(jié)討論只在多相 UDF中應(yīng)用的循環(huán)。4.1 Looping Over Phase Domains in Mixture (sub_domain_loop) 子域循環(huán)該循環(huán)對所有子域進(jìn)行循環(huán),這是一種獲取各單相域的指針的方法之一。int phase_domain_index; /* index of subdomain pointers */Domain *mixture_domain;Domain *subdomain; sub_domain_loop(subdomain, mixture_domain, phase_domain_index) 參數(shù)中, subdomain 是子域的指針
17、; mixture_domain 是超級域的指針。例子:下面UDF分塊初始化某一相的體積分?jǐn)?shù),只在求解開始執(zhí)行一次。 /*UDF for initializing phase volume fraction*/#include "udf.h"/* domain pointer that is passed by INIT function is mixture domain */ DEFINE_INIT(my_init_function, mixture_domain)int phase_domain_index;cell_t cell;Thread *cell_threa
18、d;Domain *subdomain;real xcND_ND;/* loop over all subdomains (phases) in the superdomain (mixture) */ sub_domain_loop(subdomain, mixture_domain, phase_domain_index) /* loop if secondary phase */if (DOMAIN_ID(subdomain) = 3)/* loop over all cell threads in the secondary phase domain */ thread_loop_c
19、(cell_thread,subdomain)/* loop over all cells in secondary phase cell threads */ begin_c_loop_all (cell,cell_thread) C_CENTROID(xc,cell,cell_thread); if (sqrt(ND_SUM(pow(xc0 - 0.5,2.), pow(xc1 - 0.5,2.), pow(xc2 - 0.5,2.) < 0.25)/* set volume fraction to 1 for centroid */C_VOF(cell,cell_thread) = 1.; else/* otherwise initialize to zero */C_VOF(cell,cell_thread) = 0.;end_c_loop_all (cell,cell_thread)4.2 Looping Over Phase Threads
溫馨提示
- 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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 目標(biāo)明確訓(xùn)練初級社會工作者試題及答案
- 多媒體應(yīng)用設(shè)計師的職業(yè)發(fā)展與考試試題及答案
- 精準(zhǔn)解讀信息管理三級考試試題及答案
- 公衛(wèi)傳染病試題及答案
- 2021php架構(gòu)師面試題及答案
- 知識與實踐的結(jié)合初級社會工作者考試試題及答案
- 勾股定理試題及答案
- 移動政務(wù)面試題庫及答案
- 中級社會工作者的實務(wù)探索試題及答案
- 公共治理面試題目及答案
- 細(xì)致解讀wps考試內(nèi)容的試題及答案
- 數(shù)據(jù)可視化與Python試題及答案
- 2025年兒童心理發(fā)展考試試題及答案
- 臺球股東合同協(xié)議書
- 新版《醫(yī)療器械經(jīng)營質(zhì)量管理規(guī)范》培訓(xùn)課件
- 2025時政試題及答案(100題)
- 新22J01 工程做法圖集
- 麥克維爾冷水機(jī)組
- PMBOK指南(第5版)第三章習(xí)題
- 炒股一招先100全集精華筆記-陳浩
- 服裝制衣廠常用縫紉機(jī)衣車中英文對照表單針平車NEEDLE
評論
0/150
提交評論