【視頻1:nFx前處理-HM】
【視頻2:nFx前處理-SimLab】
從本期開始,小汰將為大家詳細講解求解器的關鍵設置、前後處理中的小竅門、各種複雜運動的實現方式以及所有隱藏在求解器深處的高級選項。今天,我們先來聊一聊nanoFluidX的粒子類型。
nanoFluidX有幾種粒子類型?
這或許是大家最關心的問題。可能大家會不自覺地把傳統CFD求解器中需要設置的邊界條件和粒子類型等同起來,這樣的類比有助於我們理解粒子法求解器的設置,但也不完全正確。
我們先來回憶一下傳統CFD方法中是怎麼定義的。一般來說,網格法求解器會涉及到Surface和Volume的概念,在體網格中定義固體或流體的材料屬性,在面網格中定義入口、出口、壁面等邊界條件。然而,在粒子法求解器中,完全不存在面和體,只有粒子這一個定義物件。nanoFluidX把不同的粒子類型稱為phase,在每個phase的定義中,包含了上面提到的所有資訊。
具體來說,nanoFluidX中有四種不同的粒子類型:WALL,MOVINGWALL,FLUID和MASSFLOW。我們可以簡單地理解為:所有的流體粒子都屬於FLUID類型,所有的固定不動的固體粒子都屬於WALL,所有運動的固體粒子都屬於MOVINGWALL,而MASSFLOW是一類不參與計算、只進行流量統計的特殊粒子。聽完這一句話介紹,大家能否根據下面這張圖,把不同顏色的粒子分別對號入座呢?
答案揭曉:
空氣Air和油Oil粒子都屬於FLUID類型,一對齒輪Gear1和Gear2的粒子屬於MOVINGWALL類型,外殼Housing粒子屬於WALL類型。答對了嗎?
一共3種粒子,我們卻用了5種顏色以示區分,那麼問題來了,同樣類型的粒子,需要分在不同的phase中嗎?或者說,分組的依據究竟是什麼?其實,最簡單的理解就是,需要設置不同參數的粒子,必須分在不同的phase中。這就需要我們對每種phase對應的參數有一定的瞭解了。
➡ 對於WALL來說,如果不涉及熱分析,那麼原則上我們可以都整理在一起;
➡ MOVINGWALL比較重要的是定義運動類型和運動規律,那麼運動規律不同的粒子就需要區別對待了。比如上圖中的齒輪對,轉動方向不同,因此要分在不同的phase中分別定義。如果是具有多個轉軸的複雜模型,那麼需要分成更多的phase;
➡ FLUID粒子最重要的定義項是物性參數,也就是我們通常講的密度和粘度,油和空氣的物性參數不同,因此也需要定義在不同的phase中。
如何生成不同類型的粒子?
理解了粒子的分組原則後,讓我們來看看不同種類的粒子在前處理中的注意事項了吧。首先是粒子間距,可能大家拿到模型後最迷茫的問題就是,粒子間距到底應該設置多大?
由於nanoFluidX目前的版本支持的是全計算域內採用等間距粒子的處理方式,所以這個參數就顯得尤為重要。如同傳統CFD方法,採用基於粒子法的求解器進行流體分析,也需要兼顧精度與效率。
如果精度優先,那麼我們需要考慮的是捕捉到模型中的最小特徵,但這樣的操作往往會造成粒子數量過於龐大的副作用;如果效率優先,那麼在模型簡化階段就應該考慮忽略一些對流場影響不大的小特徵,增大粒子間距,從而有效地控制計算模型的規模。
從粒子生成的角度來看,我們大致需要3種不同的生成方式,分別針對殼體、除殼體外的固體部件、流體。為什麼這麼區分呢?為了解釋得更清楚,我們需要複習一下SPH的基本理論。SPH演算法的核心是kernel function(核函數)的定義,nanoFluidX中採用的核函數是Quintic spline kernel(五次樣條核),具體的函數表達如下:
其中,q這個值可以理解為粒子的個數,也就是計算一個粒子的狀態需要關注它周圍的多少個粒子。如果仔細觀察一下這個分段函數,我們不難發現五次樣條核關注的影響粒子個數為3個。這就解釋了為什麼在生成固體壁面的粒子時,原則上我們只需要生成3層粒子。
我們來總結一下,FLUID粒子需要充滿流體域,也就是直接在識別出的流體域內生成粒子,並填滿整個空腔;固體粒子,無論是WALL還是MOVINGWALL,原則上都只起到定義壁麵條件的作用,考慮到上面解釋的核函數的特殊性,一般需要從流固交界面開始往固體內生成3層粒子。那麼,為什麼殼體需要區別對待呢?
這裡要強調一下,殼體作為計算域的邊界,其實我們並不關心它的複雜結構,對計算起到作用的,是直接和流體接觸的那層流固交界面,通常也被稱為濕表面。我們在做前處理的時候,就應該把濕表面提取出來,然後基於這層面,生成3層固體壁面粒子。與上面提到的其他固體部件不同之處在於,殼體由於只保留了最裡層的濕表面,所以在生成粒子時的方向是向外的。具體來說,不管使用的哪種前處理工具,HyperMesh和SimLab都有非常簡單的選項處理這類問題。
如果大家認真地按照我們提供的教程練習前處理的話,可能會有一個疑問。我們反復強調,壁面只要3層粒子就可以了,為什麼教程中讓我們生成4層粒子呢?
固體壁面3層粒子真的足夠嗎?
從理論上來說,3層粒子確實是足夠了。但此處說到的3層粒子的方向,指的是壁面法向,那麼如果是高級曲面的話,是否能保證壁面法向一定有3層粒子呢?大家看了下面這張圖就能明白其中的奧秘了。
SPH粒子的填充,是基於預先定義的全域坐標系的。我們從上面的圖中可以看到,在全域坐標系的各座標方向,確實都生成了3層粒子;但如果觀察這個曲面的法向,在某些曲率較大的區域,並不能滿足3層粒子的要求。因此,在實際的工程應用中,我們通常建議大家生成5層以上的壁面粒子,這樣能確保複雜曲面的法向也會有3層粒子。越是複雜的模型,越需要更多的層數來確保局部達到最低要求。
初始狀態下,粒子可以重疊嗎?
這個也是我們經常會被問到的問題。確實,工程項目中的實際模型不會像教程中的那麼簡單,前處理中不可避免會遇到這樣那樣的問題,而粒子干涉就是其中最常見的一類問題了。根據nanoFLuidX的特性,固體粒子如有局部的干涉或重疊,是可以接受的,但是固體粒子和流體粒子在初始狀態下不允許有任何形式的接觸。如何做到這一點呢?
前處理工具已經充分考慮到了這個需求,大家只要注意一下HyperMesh中的Wall Clearance或者SimLab中的Liquid gap和Gas gap這幾個參數就可以了。一般來說,如果粒子間距是1mm的話,這些參數填寫0.1mm即可。
這一期中,我們介紹了幾乎每個算例中都要用到的FLUID,WALL和MOVINGWALL這三種類型的粒子。至於第四種MASSFLOW,由於它是極其神秘的特殊粒子,我們會在下一期中做專題介紹。感到好奇的話,記得關注下一期的CFD專欄哦。