轉載:知乎大神 中國空氣動力研究與發展中心 力學博士 劉雲楚 的文章
5.7網格質量控制(meshQualityControls)
在SnapPyHexMesh執行全局參數控制、面貼合、局部細化以及邊界層生成時,程序都會依據網格質量控制參數不斷調整網格迭代。且當網格位移或拓撲更改操作導致單元或面網格質量降低時,軟件可根據控制參數撤消移動或拓撲更改操作以將網格還原為之前滿足網格質量標准的狀態。
網格質量控制參數在子字典meshQualityControl中設置,命令輸入示例如下所示:
meshQualityControls { maxNonOrtho 65; maxBoundarySkewness 20; maxInternalSkewness 4; maxConcave 80; minVol 1e-13; minTetQuality 1e-15; minArea -1; minTwist 0.05; minDeterminant 0.001; minFaceWeight 0.05; minVolRatio 0.01; minTriangleTwist -1; nSmoothScale 4; errorReduction 0.75; relaxed { maxNonOrtho 75; maxBoundarySkewness 25; maxInternalSkewness 8; } }
詳細質量控制參數解析如下:
maxNonOrtho最大非正交角
該參數指定允許的最大非正交角,其通過計算相鄰兩單元中心點向量與公共面法向量
的夾角θ,此值為0時表示相鄰兩個網格完全正交。默認參考值為65,當設置為180時,表示關閉此項控制。該參數是衡量網格質量的主要指標之一。

maxBoundarySkewness最大邊界面網格偏斜度
此參數指定邊界面網格允許的最大偏斜度。其定義一個面或體與理想幾何(即等邊或等角)的接近程度。其計算方法是先計算出公共面中心點p3和相鄰兩單元中心線line(p1,p2)與公共面交點p4之間的距離L1,再計算相鄰兩單元中心線line(p1,p2)的長度L2,面偏斜度值等於L1/L2(如下圖所示)。默認參考值為20,當設置小於0的值時,表示關閉此項控制。

maxInternalSkewness最大內部面網格偏斜度
參數計算方式與最大邊界面網格偏斜度一致,不過其主要測試內部網格質量。默認參考值為4,當設置小於0的值時,表示關閉此項控制。該參數是衡量網格質量的主要指標之一。
maxConcave最大凹度
該參數用於檢查構成面的內凹角度(如下圖θ角),以允許低於該角度的凹面。0表示直面,小於0表示凸面。默認參考值為80,當設置為180時,表示關閉此項控制。

minFlatness最小平整值
最小投影面積和實際面積的比值,該參數值為1時,表示檢測面為平面。默認參數為0.5,設置為-1時,表示禁用此項控制。
minVol 最小單元體積
該參數為允許最小金字塔單元體積,其為網格絕對體積參數(單位m3),默認參數為1e-13。設置為較大的負值時(例如:-1e30),表示禁用此項控制。該參數是衡量網格質量的主要指標之一。
minArea最小網格面面積
該參數為允許最小網格面的面積,默認為-1,該參數設置為負值時,表示禁用此項控制。
minTwist最小面扭曲
使用面中心將面分解為三角形單元,並通過相鄰兩個單元中心點向量

與分解后三角形面法向量的點積計算面扭曲值(如下圖所示)。默認參考值為0.05,當設置參數小於-1時,表示關閉此項控制。
minDeterminant
該參數指定允許最小歸一化單元行列式值。通過計算每一個六面體的雅可比行列式值,然后標准化行列式的矩陣來表征單元的變形。參數值取值范圍為0到1,參數值設置為1 表示只允許有理想六面體網格;如果某單元行列式的值為0,則這個立方體有一個或多個退化的邊。參數值設置小於或等於0表示允許有負體積單元,默認參數值為0.001。
minFaceWeight
該參數指定允許相鄰網格間面權重最小值。其定義了面相對於相鄰單元間中心的相對位置(正交時為0.5),計算方法是先計算出單元中心到公共面中心長度L1,再計算出相鄰單元中心到公共面中心長度L2,面權重值等於L1與L2的最小值除以L1與L2之和(計算公式如下所示)。較小的面權重值表示相鄰網格尺寸相差較大。參數值取值范圍為0到0.5,默認參考值為0.05。
面權重計算公式如下:
minVolRatio
該參數指定允許相鄰網格間的最小體積膨脹率, 參數值取值范圍為0到1, 默認參考值為0.01。較大的比值會導致插值結果誤差較大。
minTriangleTwist
該參數表示允許最小三角單元扭曲值,通過使用面中心將面分解為三角形單元,然后依據相鄰的三角形單元法向量
的點積計算出三角形面扭曲值。默認參數值為-1,表示禁用此功能。若參數值大於0,則啟用此功能項。其主要目的為確保生成網格與Fluent網格的兼容性。
minTetQuality
通過網格單元中心和面中心將單元分解為四面體(如下圖所示)。 然后根據圓周半徑(Rc)和四面體體積(Vtet)計算四面體單元質量(計算公式如下所示)。對於一些跟蹤算例時(如流線計算),該參數需要設置為一個較小正值,以確保內部單元質量檢查正常運行。默認參數值為1e-30。
nSmoothScale
snappyHexMesh網格划分過程中可將局部網格縮放到之前網格質量滿足標准的狀態。用戶可通過nSmoothScale參數指定每次網格縮放恢復迭代時的平滑次數,參數默認值為4。
errorReduction
errorReduction參數同nSmoothScale參數一樣應用於網格縮放恢復迭代,用戶可通過該參數減小誤差點處的縮放位移量,參數默認值為0.75。
relaxed
軟件在划分邊界層網格時會優先使用meshQualityControls中基礎質量控制參數,檢測網格是否滿足要求。若邊界層添加算法迭代次數達到用戶設置nRelaxedIter參數值后,網格依然不能達到質量控制要求,則在此后的迭代中軟件將采用用戶設置的寬松質量控制標准值,以提高邊界層網格的覆蓋率。用戶可使用relaxed功能對一些關鍵網格質量控制參數(例如:非正交性nonOrtho、偏斜度skewness等)指定相對寬松的標准。
命令輸入格式如下:
relaxed { maxNonOrtho 75; maxBoundarySkewness 25; maxInternalSkewness 8; … }
