实例:twoSimpleRotor

1
runApplication subsetMesh box -patch hole -overwrite

命令拆解:

$$ \underbrace{\texttt{runApplication subsetMesh}}_{\textcolor{red}{\text{主程序}}} \; \underbrace{\texttt{box}}_{\textcolor{blue}{\text{参数1: cellSet集合名}}} \; \underbrace{\texttt{-patch hole}}_{\textcolor{green}{\text{参数2: 背景网格边界名}}} \; \texttt{-overwrite} $$

可以取消`-overwrite`参数,这样网格信息会写入新的时间步,结果见下:

subsetMesh和stitchMesh的区别

这相当于问:“切蛋糕”和“缝衣服”有什么区别?

`subsetMesh` 和 `stitchMesh` 是 OpenFOAM 网格操作中两个作用完全相反、用途截然不同的工具。


1. subsetMesh:切蛋糕(做减法)

它的核心逻辑是 “保留一部分,扔掉其余部分”。

  • 动作:它基于你选定的一个网格集合(CellSet),把这个集合抠出来,变成一个新的独立网格。没被选中的网格会被直接丢弃。
  • 物理结果:
    • 网格总量减少。
    • 会产生新的边界(Patch),即原来的内部面现在暴露在外面了。
  • 典型场景:
    • 雕刻网格:如之前的脚本,先画个大方块,然后“抠”出你想要的形状。
    • 提取子域:比如你有一个整车的网格,你只想算后视镜周围的气动声学,就用 `subsetMesh` 把后视镜那块单独切下来算。
    • 调试:网格某个角落报错,你切那一小块下来单独研究。

一句话:拿着手术刀,把不需要的肉割掉。


2. stitchMesh:缝衣服(做加法/修复)

它的核心逻辑是 “把两块裂开的布缝在一起”。

  • 动作:它取两个几何位置重合(或非常接近)的边界(Patch),把它们上面的面(Face)合并,使原本断开的两个区域连通变成内部面(Internal Face)。
  • 物理结果:
    • 网格拓扑连通。
    • 边界数量减少(两个 Patch 消失了,变成了内部连接)。
    • 如果不完美匹配,可能会稍微拉扯网格节点(几何变形)。
  • 典型场景:
    • 拼接网格:你有两套网格(比如一段直管和一段弯管),分别画好后,把它们拼在一起,接口处需要 `stitchMesh` 缝合,让流体能流过去。
    • 消除挡板 (Baffle):网格中间有一道极薄的墙(挡板),你想把它去掉,让流体穿过去,就把墙的两面“缝”起来。
    • 周期性边界修复:有时候做旋转周期性网格,首尾没对齐,可以用它强行缝合。

一句话:拿着针线,把两个分开的边界缝成一体。


对比总结表

特性 subsetMesh (切) stitchMesh (缝)
方向 拆分 / 提取 合并 / 连接
网格单元数 变少 (删除未选中的) 不变 (或者因合并略微减少面)
边界 (Patch) 增加 (切面变成新边界) 减少 (两个边界融合成内部面)
拓扑连通性 可能破坏连通性 (变孤岛) 修复/建立连通性
核心用途 只要一部分网格 把两部分网格连起来
生活类比 切除阑尾 缝合伤口

它们在你之前脚本里的关系

在刚才的“雕刻法”脚本中:

  1. `subsetMesh` 负责破坏:它把大方块切开,切出了形状,但可能导致某些本该连接的地方(比如环形结构的接口)变成了两个独立的边界。
  2. `stitchMesh` 负责善后:如果在切的过程中,导致了某些不需要的“裂缝”(比如你切了一个圆环,但圆环的首尾是断开的两个面),就需要用 `stitchMesh` 把这首尾缝起来,让流体能在圆环里无限循环流动。