轉載:知乎大神 中國空氣動力研究與發展中心 力學博士 劉雲楚 的文章
5.6邊界層(addLayersControls)
snappyHexMesh的網格生成策略是自上而下生成網格,即先生成體網格,再擬合表面上面網格。邊界層網格生成時,軟件采用中軸位移法收縮現有體網格。即先沿表面法向向網格划分區域投影指定厚度,再根據投影厚度值計算網格松弛系數收縮現有體網格,收縮后形成的空腔作為邊界層網格的划分區域。具體邊界層划分原理步驟如下所示:
在划分邊界層時,用戶需注意在全局參數設置中激活邊界層划分功能,即將addLayers值設置為true。邊界層配置參數在addLayersControls子字典中設置,其參數類型可分為基本參數與高級控制參數。
邊界層命令設置示例如下:
addLayerControls { //基本參數輸入 relativeSizes true; expansionRatio 1.2; finalLayerThickness 0.3; minThickness 0.1; nGrow 0; layers { leftHalf //允許用戶對各個面指定不同邊界層設置 { nSurfaceLayers 3; } "(road|motorBike_.*)" //輸入面名稱時支持正則表達式 { nSurfaceLayers 3; expansionRatio 1.2; finalLayerThickness 0.3; minThickness 0.1; } } //高級控制參數輸入 featureAngle 180; slipFeatureAngle 75; nRelaxIter 5; ... }
5.6.1基本參數設置
snappyHexMesh邊界層生成基本參數包含:相對值(relativeSizes)、邊界層數(nSurfaceLayers)、膨脹比(expansionRatio)、最后一層厚度(finalLayerThickness)、第一層厚度(firstLayerThickness)邊界層總厚度(thickness)、邊界層最小總厚度(minThickness)以及nGrow。
用戶可通過expansionRatio、finalLayerThickness、firstLayerThickness、thickness四項參數,選擇其中兩項指定邊界層厚度。如果同時指定多個參數,則軟件只會使用最后兩個參數。因為snappyHexMesh划分邊界層時是先擠出一定邊界層厚度區域,再插入邊界層。為提高邊界層網格生成質量,邊界層厚度控制參數選擇finalLayerThickness優於firstLayerThickness,相對臨近單元尺寸比值優於絕對值,即relativeSizes值true優於false。
基本參數詳細解析如下。
relativeSizes
邊界層基礎參數中finalLayerThickness、firstLayerThickness、thickness與minThickness的參數值有兩種定義方法。1、采用相對臨近單元尺寸比值,2、直接由絕對值(單位m)定義。用戶選用哪種定義方法通過設置relativeSizes確定。
命令示例如下所示:
addLayersControls { relativeSizes true; }
參數值為true:邊界層厚度參數值為相對於鄰近曲面上的體網格單元大小的比值。
參數值為false:邊界層厚度參數值直接由絕對單位的值(單位.米)定義。
如下例所示:finalLayerThickness參數值分別采用絕對值參數和相對值參數。當設置絕對值時,邊界層最后一層網格尺寸與鄰近體網格尺寸無關;當設置為相對值參數時,邊界層最后一層網格尺寸值與鄰近體網格單元大小成比例關系。
邊界層膨脹比(expansionRatio)
兩個相鄰層的厚度比,該值越大,各層間的高度差越大。調整膨脹比參數,不同膨脹比下邊界層網格划分結果如下圖所示:
邊界層最后一層厚度(finalLayerThickness)
確保邊界層最后一層網格不大於該值。調整最后一層網格的最大厚度,在不同厚度下邊界層網格的划分結果如下如所示:
finalLayerThickness=0.7 finalLayerThickness=1
圖3. 不同邊界層最后一層高度對比圖
邊界層第一層的厚度(firstLayerThickness)
指定距離曲面最近的邊界層的高度,確保邊界層第一層網格不大於該值。調整第一層網格的最大厚度,在不同厚度下邊界層網格的划分結果如下如所示:
注:此處厚度值為體網格相對值
邊界層總厚度(thickness)
這指定了所有邊界層的最大厚度。設置較大的邊界層總厚度值會導致體網格收縮位移相應增大,體網格變形量增加將導致網格質量降低。當網格質量小於用戶設置網格質量控制參數時,系統將取消此處邊界層網格划分。
調整邊界層總厚度,在不同厚度下邊界層網格的划分結果如下如所示:
注:邊界層總厚度值不宜大於五倍相鄰體網格尺寸值。
最小總層厚度(minThickness)
這指定了所有邊界層的總體最小厚度。若邊界層擠出區域厚度小於該值,則該區域將不會生成邊界層。
注:此圖參數采用相對值,邊界層總厚度控制到1,故當minThickness設置為2時邊界層不會生成
最大取消邊界層單元數(nGrow)
該參數指定未設置邊界層的相鄰面相交處邊界層的過渡層數。這有助於將邊界層過渡到特征邊附近。
在邊界層生成時,體網格需先沿表面法向向網格划分區域收縮指定厚度,有些特征邊上存在未移動的節點,則包含該節點的表面單元也不會移動。通過設置nGrow值,指定此單元附近多少個單元不會移動,以保證該特征邊附近網格貼體性及質量。
指定面設置邊界層基本參數
snappyHexMesh中允許用戶對各個表面設置不同的邊界層基本參數。如果未指定,則應用全局基本參數。邊界層的幾何面名稱指定於面加密不同,其名稱包含幾何體與面信息,例如:用戶需對幾何體box中的Face1面划分邊界層,則邊界層指定的面名稱應該為box_Face1,而不是Face1。並且用戶在指定面名稱時支持正則表達式。
指定面邊界層設置命令如下:
layers { box_Face1 { nSurfaceLayers 3; } "(box_Face1|box_side.*)" { nSurfaceLayers 3; expansionRatio 1.2; finalLayerThickness 0.3; minThickness 0.1; } }
邊界層層數(nSurfaceLayers)
nSurfaceLayers該參數確定邊界層層數,需在指定面設置邊界層基本參數中輸入,為強制性參數。
網格划分結果如下圖所示:
5.6.2高級控制參數設置
表面網格最大縱橫比(maxFaceThicknessRatio)
該參數指定了表面網格縱橫比的最大允許值。當要在高度扭曲的單元上(特別是在角落)生成邊界層時,縱橫比高於此值的單元上邊界層停止生成,以保證邊界層網格質量。
建議值為0.5。
邊界層最大面夾角(featureAngle)[°]
兩個相鄰面邊界層網格划分時,軟件可根據featureAngle值確定兩個面相交邊處體網格是否收縮,以確定邊界層划分區域。當兩個曲面之間的法向夾角(如下圖所示θ角)小於參數featureAngle值時,允許兩個曲面的相交邊處體網格向域內收縮,形成邊界層划分區域。用戶可根據幾何特征設置合適的featureAngle值,以確保邊界層的生成范圍。
下圖顯示了特征角為60度和180度時邊界層生成的差異。在面夾角為90度區域,若featureAngle值小於面夾角時,則取消夾角處邊界層划分。
圖10. 不同最大面夾角參數設置對比圖
注:為確保角落邊緣處邊界層生長,featureAngle可設置為180或更高值。但在大角度或較扭曲區域邊界層質量會急劇下降,受網格質量控制影響,此處邊界層也會無法生成。
邊界層滑移角度(slipFeatureAngle)[°]
在早期版本snappyHexMesh添加邊界層時,指定的面邊緣的頂點已經固定。當邊界層生成到面邊緣處時,會在此處收縮。現若用戶想保留在面邊緣處的邊界層效果,可以指定slipFeatureAngle參數,使邊界層面邊緣處頂點延邊界面滑動,以保證邊界層在邊緣處的划分空間。例如:當需要划分邊界層的面與其相鄰面之間的角度大於slipFeatureAngle值時,則保留邊界處邊界層網格。否則,邊界處邊界層網格將收縮(如下圖所示)。
注:建議使用70-80之間的最佳值來限制層的滑動,默認值為featureAngle的一半。
邊界層終止面的緩沖單元數(nBufferCellsNoExtrude)
為邊界層終止端創建緩沖收縮區,即逐漸降低邊界層數。設置值小於0,則表示在終止端立即停止邊界層。
邊界層厚度平滑迭代次數(nSmoothThickness)
邊界層網格生成前,軟件需要根據投影厚度值收縮現有體網格,用戶可通過nSmoothThickness值設置投影厚度值的迭代次數。軟件通過迭代投影厚度松弛系數值(1-0)使體網格質量達到質量控制要求。
邊界層曲面法線平滑迭代次數(nSmoothSurfaceNormals)
邊界層網格生成前,軟件需要根據曲面法線方向收縮現有體網格,用戶可通過nSmoothSurfaceNormals指定曲面法線平滑迭代次數。該值越高,邊界層網格間平滑性越好,但網格划分時間越長。建議值為1。
拾取中間軸點的角度(minMedianAxisAngle)
這指定用於拾取中間軸點的角度。建議值為90度。最新版本90度對應17x版本前的130度。
層厚度與中間軸長度的最大比率(maxThicknessToMedialRatio)
這指定了邊界層厚度與中間軸長度的最大比率。當比率大於指定值時,層生長減少。建議值為0.3
體網格收縮迭代次數(nRelaxIter)
單步投影厚度值的迭代中,系統需根據投影厚度值計算體網格收縮松弛系數。用戶可設置nRelaxIter參數指定該松弛系數迭代次數,該值越大越有利於提高體網格網格質量。建議值為5
體網格平滑迭代次數(nSmoothNormals)
體網格收縮時,用戶可通過nSmoothNormals指定體網格間移動方向的迭代次數。該值越高,體網格間平滑性越好,但網格划分時間越長。建議值為3。
邊界層添加的最大總迭代次數(nLayerIter)
這指定了整體邊界層添加算法迭代次數。如果達到此迭代次數,邊界層網格划分將立即停止,並保留最后一次迭代生成的邊界層。建議值為50-60。
寬松質量控制標准的起始迭代次數(nRelaxedIter)
這指定了開始使用寬松網格質量控制的起始迭代次數。軟件在划分邊界層網格時會優先使用meshQualityControls中基礎質量控制參數,檢測網格是否滿足要求。若邊界層添加算法迭代次數達到用戶設置nRelaxedIter參數值后,網格依然不能達到質量控制要求,則在此后的迭代中軟件將采用用戶設置的寬松質量控制標准值。參數建議值為20。