blockMesh 分段与渐变:工程设置与参数选择
从首层与末层尺寸反算 simpleGrading 比值,给出几何级数公式、multiGrading 三段语法和网格长宽比约束,附一段可核对的 0.1 m 通道手算。
blockMesh 分段与渐变:工程设置与参数选择
渐变网格的作用是把单元预算堆到壁面附近,代价是引入额外的数值扩散与长宽比。blockMesh 提供三种写法:simpleGrading 单一比值、edgeGrading 十二条边各自比值、multiGrading 分段折线。选错的典型后果是首层厚度差两倍、共享面尺寸突变、或者长宽比大到 checkMesh 报 high aspect ratio。
几何级数与 simpleGrading 的含义
simpleGrading (R1 R2 R3) 中的 是该方向上末层厚度与首层厚度之比,不是逐层增长率。层厚按几何级数排布:
其中 是该方向单元数、 是块边长、 才是逐层增长率。反解首层厚度只需 与 、 三个量:
把 误当成 代入,是渐变设置最常见的错误: 时两者相差近一倍。
0.1 m 通道的手算
设通道半高 、、取 simpleGrading (6.7 1 1)。先算增长率 :,除以 39 得 0.04877,取指数得 。再算首层:
即首层 0.828 mm。末层 ,比值 ,与字典里写的 自洽。单元尺寸从 0.828 mm 递增到 5.55 mm,总长校验 。
若目标首层是 0.5 mm,则 要重算:由 与 的对应关系,把 缩到 0.5 mm 需 从 6.7 降到约 3.3,代价是末层只有 1.65 mm,过渡变缓。
三段 multiGrading 与边级控制
当渐变需要“近壁密、中段匀、外侧再拉”时,用 multiGrading。每个三元组是 (长度分数 单元数分数 该段末/首比值),长度分数之和必须为 1,单元数分数之和也必须为 1。
blocks
(
hex (0 1 2 3 4 5 6 7) (40 20 1)
multiGrading
(
(0.2 0.5 5) // 近壁段:占 20% 长度、50% 单元、末/首 = 5
(0.6 0.4 1) // 中段:占 60% 长度、40% 单元、均匀
(0.2 0.1 0.2) // 外侧:占 20% 长度、10% 单元、末/首 = 0.2
)
);
近壁段 20 个单元铺 20 mm,末/首比值 5,反算首层 ,,得 ,即 0.40 mm。中段 16 个单元铺 60 mm,单元 3.75 mm;外侧 4 个单元铺 20 mm,首层与末层比值 0.2,单元从 8.33 mm 收到 1.67 mm。三段的单元尺寸在交界处分别为 2.0 mm、3.75 mm、8.33 mm,比值 1.9 与 2.2,属于可接受的过渡。
edgeGrading 则给出 12 个值(每个方向 4 条边的比值),用于块被弯曲、四条边长度不等的场合;此时 simpleGrading 会把四个方向统一成一个比值,容易在短边上过密。
长宽比与过渡比的护栏
网格长宽比定义为最大边与最小边之比:
壁面解析用的边界层网格, 达到 100 量级是正常的;但同一个单元面内的 超过约 200 会显著恶化对角占优性。相邻单元的过渡比 建议控制在 1.2 以内,级数渐变天然满足;multiGrading 的段间跳变才需要单独检查。上面算例的段间跳变 1.9 与 2.2 已接近上限,若再放大到 3 以上,checkMesh 的 max skewness 会明显上升。
另外注意展向:2D 算例常把 方向设成 1 个单元,此时 就是几何厚度本身。若厚度取 0.01 m 而面内首层 0.4 mm,,在可接受范围;但如果把厚度误取成 1 m 做“伪 2D”, 会到 2500,求解器压力修正方程的条件数会立刻恶化。
生成后可以直接把层厚提取出来核对,而不必只看 checkMesh:
blockMesh 2>&1 | tee log.blockMesh
postProcess -func "writeCellCentres" -time 0
checkMesh -allGeometry | grep -E "aspect ratio|non-orthogonality"
writeCellCentres 写出每个单元的中心坐标,取同一列相邻两个中心之差即为该处层厚,与手算的 、 对照即可确认渐变是否按预期分布。
失败模式与判定
| 现象 | 根因 | 判定试验 |
|---|---|---|
| 首层厚度与设计差近 2 倍 | 把 simpleGrading 的末/首比值当成逐层增长率 |
用 手算并与网格量测对照 |
| 相邻两块在共享面上尺寸突变 | 两块在该方向的 或 不同 | 提取两层单元中心间距,比值应接近 1 |
checkMesh 报高长宽比 |
单方向 过大或展向取了伪厚度 | 看 max aspect ratio 实际值与出现位置 |
| 段间出现坏单元 | multiGrading 相邻段尺寸跳变超过 2 倍 |
逐段手算末层与首层尺寸并对比 |
multiGrading 解析报错 |
长度分数之和或单元数分数之和不为 1 | 把两个分数列分别求和 |
| 壁面 y+ 与设计不符 | 首层按单元中心还是壁面距口径混淆 | 用 反算并对比求解器输出 |
| 过渡区残差抬升 | 渐变比过陡导致数值扩散 | 把 减半重跑,比较同一监测点的时间平均 |
可复现记录
渐变参数必须与手算一起归档,否则换人接手时无法判断 是设计值还是随手填的。记录项建议为:方向、(m)、、、、(mm)、(mm)、。上例中该行为:x2, 0.1, 40, 6.7, 1.050, 0.828, 5.55, 6.7。
改动 而保留 会同时改变 和 : 从 40 提到 60、 仍取 6.7 时,,,首层从 0.828 mm 降到 0.560 mm,末层升到 3.75 mm。也就是说,加密并不只是“变细”,它同时改变了渐变形状,必须重算。
参考文献
- OpenFOAM Foundation, OpenFOAM User Guide v11, §3.2.4 “Grading”, 2023.
- OpenFOAM v11 源码
src/mesh/blockMesh/blockMesh/blockDescriptor/blockDescriptor.C中simpleGrading/edgeGrading/multiGrading的解析与calcCellSizes。 - J. H. Ferziger, M. Perić, R. L. Street, Computational Methods for Fluid Dynamics, 4th ed., Springer, 2020, §4.6 “Non-uniform grids”.
- H. K. Versteeg, W. Malalasekera, An Introduction to Computational Fluid Dynamics: The Finite Volume Method, 2nd ed., Pearson, 2007, §4.3.3.
- P. J. Roache, Verification and Validation in Computational Science and Engineering, Hermosa Publishers, 1998.
- I. B. Celik, U. Ghia, P. J. Roache, C. J. Freitas, H. Coleman, P. E. Raad, “Procedure for estimation and reporting of uncertainty due to discretization in CFD applications”, Journal of Fluids Engineering, 130(7): 078001, 2008.