mergeOrSplitBaffles 是 OpenFOAM 中一个功能强大但常被忽视的工具,主要用于处理网格中的挡板(Baffles)。它是 createBaffles 的“升级版”或“互补版”,专注于根据几何特征自动识别并处理挡板。

以下是关于它的发展历程及使用说明的简述:

📅 发展历程 (Evolution)

mergeOrSplitBaffles 的出现是为了解决手动定义挡板的繁琐问题,以及处理复杂的网格拓扑修复需求。

  1. 早期 (The createBaffles Era):

    • 最初,OpenFOAM 用户主要依靠 createBaffles。这需要用户编写详细的 createBafflesDict 字典,明确指定哪些面(Faces)或者哪些 SearchableSurface 需要变成挡板。
    • 痛点:对于已经生成的网格,如果想“反悔”(把挡板变回内部面),或者自动探测几何上重合的边界面,操作非常麻烦。
  2. 中期 (引入 mergeOrSplitBaffles):

    • 为了更智能地处理拓扑,OpenFOAM 引入了这个工具。
    • 核心突破:它具备了几何探测能力。它不需要你告诉它具体是哪个面 ID,而是可以根据物理位置(是否重合)来决定是“拆分(Split)”还是“合并(Merge)”。
    • 它主要服务于 snappyHexMesh 生成后的后处理,或者多块网格拼接后的接缝处理。
  3. 现状 (集成与特化):

    • 在 OpenFOAM 的不同分支(Foundation org vs ESI com)中,功能略有分化,但核心逻辑保留。
    • 它现在常用于检测网格中的**“非法”重合面**,或者清理那些在几何预处理中产生的多余内部边界。

🛠️ 使用说明 (Usage Guide)

mergeOrSplitBaffles 的核心逻辑是:检测成对出现的面(Coincident Faces)

  • Split(拆分): 发现一个内部面(Internal Face)实际上连接了两个完全不同的几何区域(或者根据某些标准),把它拆成两个边界面。
  • Merge(合并): 发现两个边界面(Boundary Faces)在空间上完美重合,且属于挡板关系,把它们缝合成一个内部面。

1. 基本命令结构

1
mergeOrSplitBaffles [OPTIONS]
  • -split : 执行拆分模式(把内部面变成挡板)。
  • -merge : 执行合并模式(把挡板变回内部面,这是你上一个问题最需要的)。
  • -overwrite : 直接覆盖当前时间步的网格。
  • -detectOnly : 只检测,不修改,报告会发现多少个面。

2. 典型场景一:合并挡板(去除 0 厚度壁面)

这是最常用的功能。假设你有一个挡板(比如误操作生成的,或者为了某些临时计算加的),现在想让流体穿过它。

1
2
# 检测并缝合所有重合的边界面
mergeOrSplitBaffles -merge -overwrite

工作原理

  1. 工具遍历所有边界 Patch。
  2. 寻找几何位置完全重合、法向相反的面对(Master & Slave)。
  3. 在拓扑上将它们连接,移除边界属性,恢复为 Internal Face。

3. 典型场景二:拆分网格(制造挡板)

这通常需要配合字典文件 system/mergeOrSplitBafflesDict(如果版本需要)或者依靠几何判据。但更常见的是用 createBaffles 做这事。mergeOrSplitBaffles -split 更多是用于处理某些特殊的拓扑退化情况。

4. 关键字典参数 (如果有 system/mergeOrSplitBafflesDict)

虽然命令行可以直接跑,但你可以通过字典细化控制:

1
2
3
4
5
6
7
8
9
10
11
// system/mergeOrSplitBafflesDict

// 容差,判断两个面是否重合
mergeTol 1e-6;

// 仅处理特定的 Patch
detect
{
// 如果不写,默认检测所有
patches ( "wall_.*" );
}

💡 核心优势总结

  1. 自动化:不需要像 stitchMesh 那样必须手动指定 Master 和 Slave Patch,它自己会全场扫描找重合面。
  2. 鲁棒性:对于非共形(Non-conformal)但几何重合的网格,它的处理能力往往比 polyDualMesh 等工具更直接。
  3. 双向性:既能制造隔阂(Split),也能消除隔阂(Merge),是网格拓扑的“拉链”。

建议
针对你之前的“0厚度面变内部面”的问题,直接运行 mergeOrSplitBaffles -merge -overwrite 是最快、最简单的尝试方案。它会自动识别你那个单薄的边界其实是两个重合面,并把它们缝起来。