Fluent培訓(xùn)筆記:UDF編程
2017-03-04 by:CAE仿真在線 來源:互聯(lián)網(wǎng)
題記:在學(xué)習(xí)使用Fluent的時(shí)候,有不少朋友需要使用動(dòng)網(wǎng)格模型(Dynamic Mesh Model),因此,本版推出這個(gè)專題,進(jìn)行大討論,使大家在使用動(dòng)網(wǎng)格時(shí)盡量少走彎路,更快更好地掌握;也歡迎使用過的版友積極參與討論指導(dǎo),謝謝!
該專題主要包括以下的主要內(nèi)容:
##1. 動(dòng)網(wǎng)格的相關(guān)知識(shí)介紹;
##2. 以NACA0012翼型俯仰振蕩實(shí)例進(jìn)行講解動(dòng)網(wǎng)格的應(yīng)用過程;
##3. 與動(dòng)網(wǎng)格應(yīng)用有關(guān)的參考文獻(xiàn);
##4. 使用動(dòng)網(wǎng)格進(jìn)行計(jì)算的一些例子。
##1. 動(dòng)網(wǎng)格的相關(guān)知識(shí)介紹
有關(guān)動(dòng)網(wǎng)格基礎(chǔ)方面的東西,請(qǐng)具體參考FLUENT User’s Guide或FLUENT全攻略的相關(guān)章節(jié),這里只給出一些提要性的知識(shí)要點(diǎn)。
1、簡介
動(dòng)網(wǎng)格模型可以用來模擬流場形狀由于邊界運(yùn)動(dòng)而隨時(shí)間改變的問題。邊界的運(yùn)動(dòng)形式可以是預(yù)先定義的運(yùn)動(dòng),即可以在計(jì)算前指定其速度或角速度;也可以是預(yù)先未做定義的運(yùn)動(dòng),即邊界的運(yùn)動(dòng)要由前一步的計(jì)算結(jié)果決定。網(wǎng)格的更新過程由FLUENT 根據(jù)每個(gè)迭代步中邊界的變化情況自動(dòng)完成。在使用動(dòng)網(wǎng)格模型時(shí),必須首先定義初始網(wǎng)格、邊界運(yùn)動(dòng)的方式并指定參予運(yùn)動(dòng)的區(qū)域。可以用邊界型函數(shù)或者UDF 定義邊界的運(yùn)動(dòng)方式。FLUENT 要求將運(yùn)動(dòng)的描述定義在網(wǎng)格面或網(wǎng)格區(qū)域上。如果流場中包含運(yùn)動(dòng)與不運(yùn)動(dòng)兩種區(qū)域,則需要將它們組合在初始網(wǎng)格中以對(duì)它們進(jìn)行識(shí)別。那些由于周圍區(qū)域運(yùn)動(dòng)而發(fā)生變形的區(qū)域必須被組合到各自的初始網(wǎng)格區(qū)域中。不同區(qū)域之間的網(wǎng)格不必是正則的,可以在模型設(shè)置中用FLUENT軟件提供的非正則或者滑動(dòng)界面功能將各區(qū)域連接起來。
注:一般來講,在Fluent中使用動(dòng)網(wǎng)格,基本上都要使用到UDF,所以你最好具備一定的C語言編程基礎(chǔ)。
2、動(dòng)網(wǎng)格更新方法
動(dòng)網(wǎng)格計(jì)算中網(wǎng)格的動(dòng)態(tài)變化過程可以用三種模型進(jìn)行計(jì)算,即彈簧近似光滑模型(spring-based smoothing)、動(dòng)態(tài)分層模型(dynamic layering)和局部重劃模型(local remeshing)。
彈簧近似光滑模型
在彈簧近似光滑模型中,網(wǎng)格的邊被理想化為節(jié)點(diǎn)間相互連接的彈簧。移動(dòng)前的網(wǎng)格間距相當(dāng)于邊界移動(dòng)前由彈簧組成的系統(tǒng)處于平衡狀態(tài)。在網(wǎng)格邊界節(jié)點(diǎn)發(fā)生位移后,會(huì)產(chǎn)生與位移成比例的力,力量的大小根據(jù)胡克定律計(jì)算。邊界節(jié)點(diǎn)位移形成的力雖然破壞了彈簧系統(tǒng)原有的平衡,但是在外力作用下,彈簧系統(tǒng)經(jīng)過調(diào)整將達(dá)到新的平衡,也就是說由彈簧連接在一起的節(jié)點(diǎn),將在新的位置上重新獲得力的平衡。從網(wǎng)格劃分的角度說,從邊界節(jié)點(diǎn)的位移出發(fā),采用虎克定律,經(jīng)過迭代計(jì)算,最終可以得到使各節(jié)點(diǎn)上的合力等于零的、新的網(wǎng)格節(jié)點(diǎn)位置,這就是彈簧光順法的核心思想。
原則上彈簧光順模型可以用于任何一種網(wǎng)格體系,但是在非四面體網(wǎng)格區(qū)域(二維非三角形),最好在滿足下列條件時(shí)使用彈簧光順方法:
(1)移動(dòng)為單方向。
(2)移動(dòng)方向垂直于邊界。
如果兩個(gè)條件不滿足,可能使網(wǎng)格畸變率增大。另外,在系統(tǒng)缺省設(shè)置中,只有四面體網(wǎng)格(三維)和三角形網(wǎng)格(二維)可以使用彈簧光順法,如果想在其他網(wǎng)格類型中激活該模型,需要在dynamic-mesh-menu 下使用文字命令spring-on-all-shapes?,然后激活該選項(xiàng)即可。
動(dòng)態(tài)層模型
對(duì)于棱柱型網(wǎng)格區(qū)域(六面體和或者楔形),可以應(yīng)用動(dòng)態(tài)層模型。動(dòng)態(tài)層模型的中心思想是根據(jù)緊鄰運(yùn)動(dòng)邊界網(wǎng)格層高度的變化,添加或者減少動(dòng)態(tài)層,即在邊界發(fā)生運(yùn)動(dòng)時(shí),如果緊鄰邊界的網(wǎng)格層高度增大到一定程度,就將其劃分為兩個(gè)網(wǎng)格層;如果網(wǎng)格層高度降低到一定程度,就將緊鄰邊界的兩個(gè)網(wǎng)格層合并為一個(gè)層:
如果網(wǎng)格層j擴(kuò)大,單元高度的變化有一臨界值:
H_min>(1+alpha_s)*h_0
式中h_min為單元的最小高度,h_0為理想單元高度,alpha_s為層的分割因子。在滿足上述條件的情況下,就可以對(duì)網(wǎng)格單元進(jìn)行分割,分割網(wǎng)格層可以用常值高度法或常值比例法。在使用常值高度法時(shí),單元分割的結(jié)果是產(chǎn)生相同高度的網(wǎng)格。在采用常值比例法時(shí),網(wǎng)格單元分割的結(jié)果是產(chǎn)生是比例為alpha_s的網(wǎng)格。
若對(duì)第j層進(jìn)行壓縮,壓縮極限為:
H_min<alpha_c*h_0
式中alpha_c為合并因子。在緊鄰動(dòng)邊界的網(wǎng)格層高度滿足這個(gè)條件時(shí),則將這一層網(wǎng)格與
外面一層網(wǎng)格相合并。
動(dòng)網(wǎng)格模型的應(yīng)用有如下限制:
(1)與運(yùn)動(dòng)邊界相鄰的網(wǎng)格必須為楔形或者六面體(二維四邊形)網(wǎng)格。
(2)在滑動(dòng)網(wǎng)格交界面以外的區(qū)域,網(wǎng)格必須被單面網(wǎng)格區(qū)域包圍。
(3)如果網(wǎng)格周圍區(qū)域中有雙側(cè)壁面區(qū)域,則必須首先將壁面和陰影區(qū)分割開,再用
滑動(dòng)交界面將二者耦合起來。
(4)如果動(dòng)態(tài)網(wǎng)格附近包含周期性區(qū)域,則只能用FLUENT 的串行版求解,但是如果周期性區(qū)域被設(shè)置為周期性非正則交界面,則可以用FLUENT 的并行版求解。
如果移動(dòng)邊界為內(nèi)部邊界,則邊界兩側(cè)的網(wǎng)格都將作為動(dòng)態(tài)層參與計(jì)算。如果在壁面上只有一部分是運(yùn)動(dòng)邊界,其他部分保持靜止,則只需在運(yùn)動(dòng)邊界上應(yīng)用動(dòng)網(wǎng)格技術(shù),但是動(dòng)網(wǎng)格區(qū)與靜止網(wǎng)格區(qū)之間應(yīng)該用滑動(dòng)網(wǎng)格交界面進(jìn)行連接。
局部重劃模型
在使用非結(jié)構(gòu)網(wǎng)格的區(qū)域上一般采用彈簧光順模型進(jìn)行動(dòng)網(wǎng)格劃分,但是如果運(yùn)動(dòng)邊界的位移遠(yuǎn)遠(yuǎn)大于網(wǎng)格尺寸,則采用彈簧光順模型可能導(dǎo)致網(wǎng)格質(zhì)量下降,甚至出現(xiàn)體積為負(fù)值的網(wǎng)格,或因網(wǎng)格畸變過大導(dǎo)致計(jì)算不收斂。為了解決這個(gè)問題,FLUENT 在計(jì)算過程中將畸變率過大,或尺寸變化過于劇烈的網(wǎng)格集中在一起進(jìn)行局部網(wǎng)格的重新劃分,如果重新劃分后的網(wǎng)格可以滿足畸變率要求和尺寸要求,則用新的網(wǎng)格代替原來的網(wǎng)格,如果新的網(wǎng)格仍然無法滿足要求,則放棄重新劃分的結(jié)果。
在重新劃分局部網(wǎng)格之前,首先要將需要重新劃分的網(wǎng)格識(shí)別出來。FLUENT 中識(shí)別不合乎要求網(wǎng)格的判據(jù)有二個(gè),一個(gè)是網(wǎng)格畸變率,一個(gè)是網(wǎng)格尺寸,其中網(wǎng)格尺寸又分最大尺寸和最小尺寸。在計(jì)算過程中,如果一個(gè)網(wǎng)格的尺寸大于最大尺寸,或者小于最小尺寸,或者網(wǎng)格畸變率大于系統(tǒng)畸變率標(biāo)準(zhǔn),則這個(gè)網(wǎng)格就被標(biāo)志為需要重新劃分的網(wǎng)格。在遍歷所有動(dòng)網(wǎng)格之后,再開始重新劃分的過程。局部重劃模型不僅可以調(diào)整體網(wǎng)格,也可以調(diào)整動(dòng)邊界上的表面網(wǎng)格。
需要注意的是,局部重劃模型僅能用于四面體網(wǎng)格和三角形網(wǎng)格。在定義了動(dòng)邊界面以后,如果在動(dòng)邊界面附近同時(shí)定義了局部重劃模型,則動(dòng)邊界上的表面網(wǎng)格必須滿足下列條件:
(1)需要進(jìn)行局部調(diào)整的表面網(wǎng)格是三角形(三維)或直線(二維)。
(2)將被重新劃分的面網(wǎng)格單元必須緊鄰動(dòng)網(wǎng)格節(jié)點(diǎn)。
(3)表面網(wǎng)格單元必須處于同一個(gè)面上并構(gòu)成一個(gè)循環(huán)。
(4)被調(diào)整單元不能是對(duì)稱面(線)或正則周期性邊界的一部分。
動(dòng)網(wǎng)格的實(shí)現(xiàn)在FLUENT 中是由系統(tǒng)自動(dòng)完成的。如果在計(jì)算中設(shè)置了動(dòng)邊界,則FLUENT 會(huì)根據(jù)動(dòng)邊界附近的網(wǎng)格類型,自動(dòng)選擇動(dòng)網(wǎng)格計(jì)算模型。如果動(dòng)邊界附近采用的是四面體網(wǎng)格(三維)或三角形網(wǎng)格(二維),則FLUENT 會(huì)自動(dòng)選擇彈簧光順模型和局部重劃模型對(duì)網(wǎng)格進(jìn)行調(diào)整。如果是棱柱型網(wǎng)格,則會(huì)自動(dòng)選擇動(dòng)態(tài)層模型進(jìn)行網(wǎng)格調(diào)整。在靜止網(wǎng)格區(qū)域則不進(jìn)行網(wǎng)格調(diào)整。
動(dòng)網(wǎng)格問題中對(duì)于固體運(yùn)動(dòng)的描述,是以固體相對(duì)于重心的線速度和角速度為基本參數(shù)加以定義的。既可以用型函數(shù)定義固體的線速度和角速度,也可以用UDF 來定義這兩個(gè)參數(shù)。同時(shí)需要定義的是固體在初始時(shí)刻的位置。
注:這一小節(jié)主要講述了動(dòng)網(wǎng)格的更新方法,最好能掌握,尤其是各種方法的適用范圍,通常來講,在一個(gè)case中,我們使用的更新方法都是根據(jù)網(wǎng)格類型以及和要實(shí)現(xiàn)的運(yùn)動(dòng)來選擇的,很多時(shí)候都是幾種更新方法搭配起來使用的。
總結(jié)一下:
使用彈簧近似光滑法網(wǎng)格拓?fù)涫冀K不變,無需插值,保證了計(jì)算精度。但彈簧近似光滑法不適用于大變形情況,當(dāng)計(jì)算區(qū)域變形較大時(shí),變形后的網(wǎng)格會(huì)產(chǎn)生較大的傾斜變形,從而使網(wǎng)格質(zhì)量變差,嚴(yán)重影響計(jì)算精度。動(dòng)態(tài)分層法在生成網(wǎng)格方面具有快速的優(yōu)勢,同時(shí)它的應(yīng)用也受到了一些限制。它要求運(yùn)動(dòng)邊界附近的網(wǎng)格為六面體或楔形,這對(duì)于復(fù)雜外形的流場區(qū)域是不適合的。使用局部網(wǎng)格重劃法要求網(wǎng)格為三角形(二維)或四面體(三維),這對(duì)于適應(yīng)復(fù)雜外形是有好處的,局部網(wǎng)格重劃法只會(huì)對(duì)運(yùn)動(dòng)邊界附近區(qū)域的網(wǎng)格起作用。
3、動(dòng)網(wǎng)格問題的建立
設(shè)置動(dòng)網(wǎng)格問題的步驟如下:
(1)在Solver(求解器)面板中選擇非定常流(unsteady)計(jì)算。
(2)設(shè)定邊界條件,即設(shè)定壁面運(yùn)動(dòng)速度。
(3)激活動(dòng)網(wǎng)格模型,并設(shè)定相應(yīng)參數(shù),菜單操作如下:
Define -> Dynamic Mesh -> Parameters...
(4)指定移動(dòng)網(wǎng)格區(qū)域的運(yùn)動(dòng)參數(shù),菜單操作如下:
Define -> Dynamic Mesh -> Zones...
(5)保存算例文件和數(shù)據(jù)文件。
(6)預(yù)覽動(dòng)網(wǎng)格設(shè)置,菜單操作為:
Solve -> Mesh Motion...
(7)在計(jì)算活塞問題時(shí),設(shè)定活塞計(jì)算中的事件:
Define -> Dynamic Mesh -> Events...
并可以通過顯示閥與活塞的運(yùn)動(dòng),檢查上述設(shè)置是否正確:
Display -> IC Zone Motion...
(8)應(yīng)用自動(dòng)保存功能保存計(jì)算結(jié)果。
File -> Write -> Autosave...
在動(dòng)網(wǎng)格計(jì)算中,因?yàn)槊總€(gè)計(jì)算步中網(wǎng)格信息都會(huì)改變,而網(wǎng)格信息是儲(chǔ)存在算例文件中的,所以必須同時(shí)保存算例文件和數(shù)據(jù)文件。
(9)如果想建立網(wǎng)格運(yùn)動(dòng)的動(dòng)畫過程,可以在Solution Animation(計(jì)算結(jié)果動(dòng)畫)面板中進(jìn)行相關(guān)設(shè)置。
注:在這一步中,需要提醒一下,使用動(dòng)網(wǎng)格進(jìn)行正式計(jì)算之前,最好養(yǎng)成預(yù)覽動(dòng)網(wǎng)格更新的習(xí)慣;就是在正式計(jì)算前,瀏覽一下動(dòng)網(wǎng)格的更新情況,這樣可以避免在計(jì)算過程中出現(xiàn)動(dòng)網(wǎng)格更新本身的問題。在預(yù)覽更新時(shí),很多人都說會(huì)出現(xiàn)負(fù)體積的警告,更新不成功,出現(xiàn)這樣的問題時(shí),最好先把時(shí)間步長改的更小點(diǎn)兒試試,一般來講,排除UDF本身的原因,出現(xiàn)更新出錯(cuò)的原因都與時(shí)間步長有關(guān),這需要結(jié)合所使用的更新方法多琢磨。
4、設(shè)定動(dòng)網(wǎng)格參數(shù)
為了使用動(dòng)網(wǎng)格模型,需要在dynamic mesh(動(dòng)網(wǎng)格)面板中激活Dynamic Mesh(動(dòng)網(wǎng)格)選項(xiàng)。如果計(jì)算的是活塞運(yùn)動(dòng),則同時(shí)激活I(lǐng)n-Cylinder(活塞)選項(xiàng)。然后選擇動(dòng)網(wǎng)格模型,并設(shè)置相關(guān)參數(shù)。
1)選擇網(wǎng)格更新模型
在Mesh Methods(網(wǎng)格劃分方法)下面選擇Smothing(彈簧光順模型),Layering(動(dòng)態(tài)層模型)和(或)Remshing(局部重劃模型)。
2)設(shè)置彈簧光順參數(shù)
激活彈簧光順模型,相關(guān)參數(shù)設(shè)置位于Smoothing(光順)標(biāo)簽下,可以設(shè)置的參數(shù)包括Spring Constant Factor(彈簧彈性系數(shù))、Boundary Node Relaxation(邊界點(diǎn)松弛因子)、
Convergence Tolerance(收斂判據(jù))和Number of Iterations(迭代次數(shù))。
彈簧彈性系數(shù)應(yīng)該在0 到1 之間變化,彈性系數(shù)等于0 時(shí),彈簧系統(tǒng)沒有耗散過程,在圖中算例中,靠近壁面的網(wǎng)格沒有被改變,而是保持了原來的網(wǎng)格形狀和密度;在彈性系數(shù)等于1 時(shí),彈簧系統(tǒng)的耗散過程與缺省設(shè)置相同,從圖中可以發(fā)現(xiàn)壁面發(fā)生變形,壁面附近網(wǎng)格因?yàn)檫^度加密而質(zhì)量下降。因此在實(shí)際計(jì)算中應(yīng)該在0 到1 之間選擇一個(gè)適當(dāng)?shù)闹怠_吔琰c(diǎn)松弛因子用于控制動(dòng)邊界上網(wǎng)格點(diǎn)的移動(dòng)。當(dāng)這個(gè)值為零時(shí),邊界節(jié)點(diǎn)不發(fā)生移動(dòng);在這個(gè)值為1 時(shí),則邊界節(jié)點(diǎn)的移動(dòng)計(jì)算中不采用松弛格式。在大多數(shù)情況下,這個(gè)值應(yīng)該取為0 到1 之間的一個(gè)值,以保證邊界節(jié)點(diǎn)以合適的移動(dòng)量發(fā)生移動(dòng)。
收斂判據(jù)就是網(wǎng)格節(jié)點(diǎn)移動(dòng)計(jì)算中,迭代計(jì)算的判據(jù)。迭代次數(shù)是指網(wǎng)格節(jié)點(diǎn)移動(dòng)計(jì)算的最大迭代次數(shù)。
3)動(dòng)態(tài)層
相關(guān)標(biāo)簽搜索:Fluent培訓(xùn)筆記:UDF編程 Fluent培訓(xùn) Fluent流體培訓(xùn) Fluent軟件培訓(xùn) fluent技術(shù)教程 fluent在線視頻教程 fluent資料下載 fluent分析理論 fluent化學(xué)反應(yīng) fluent軟件下載 UDF編程代做 Fluent、CFX流體分析 HFSS電磁分析