网格生成 06:六面体网格与“Holy Grail”难题
六面体为什么难
四面体可以通过局部插点自然细化;纯六面体的连接关系更“刚”。在规则体网格中插入一个孤立点,无法只靠很小邻域内的简单操作保持所有单元都是六面体。局部决定会沿 sheet/chord 传播到很远,几何与拓扑强耦合。
六面体网格的目标也不只是 all-hex:还希望边界贴合、特征保持、奇异线少、Jacobian 为正、尺寸渐变合理,并能承受大变形求解。
正则与奇异结构
在内部,正则网格边通常邻接 4 个六面体。价数不为 4 的内部边形成奇异边;奇异边连接成奇异图。边界上正则价数另有约定,不能与内部混用。
从对偶角度:
- 一层相连六面体形成 sheet;
- 穿过相对面的序列形成 chord;
- sheet/chord 的塌缩、膨胀和交换会全局改变连接;
- 错误操作可能产生非流形、重复单元或负体积。
六类经典路线
| 路线 | 核心做法 | 优点 | 硬问题 |
|---|---|---|---|
| mapping | 把简单块映到目标体 | 规则、高质 | 只适合可映射几何 |
| sweeping | 从源面沿方向扫到目标面 | 工程常用、方向自然 | 自动识别可扫体困难 |
| multi-block | 先分成立方拓扑块 | 质量可控、IGA 友好 | 自动块分解仍难 |
| octree/grid | 体素覆盖后模板过渡 | 鲁棒、自动、并行 | 边界和奇异结构复杂 |
| polycube | 变形到轴对齐多立方体 | 可规则采样 | 双射、角点与畸变控制 |
| frame/parameterization | 3D 标架场再积分 | 方向表达强 | 奇异图可实现性和翻转 |
还有 plastering、whisker weaving、对偶方法与 hex-dominant 混合网格。它们解决的目标不同,不能只按是否全自动排名。
3D frame field 比 2D cross field 更难
三维标架是三个互相正交方向,但立方体的 24 个旋转对称使相邻单元的标架匹配属于离散群。场的奇异集合通常是一维曲线,不再是离散点。即使平滑标架存在,也未必对应可实现的六面体奇异图。
体参数化希望得到
并让三个梯度与标架对齐、切缝变换属于立方对称群加整数平移,同时要求。这些约束共同造成非凸、混合离散—连续优化。
Polycube 的逻辑
若存在双射,其中 是轴对齐 polycube,则可在 中铺规则体素,再通过 拉回:
但这句公式隐藏三件难事:构造合理 polycube 拓扑、保证 全局双射、让拉回六面体具有正且足够大的 Jacobian。
八节点六面体 Jacobian 检查
对参考立方体 的三线性形函数:
下面代码在 个点采样;它适合早期调试,但不是严格全域证明。
import numpy as np
SIGNS = np.array([
[-1,-1,-1], [ 1,-1,-1], [ 1, 1,-1], [-1, 1,-1],
[-1,-1, 1], [ 1,-1, 1], [ 1, 1, 1], [-1, 1, 1]
], dtype=float)
def hex_jacobian(vertices, xi):
vertices = np.asarray(vertices, dtype=float)
xi = np.asarray(xi, dtype=float)
dN = np.empty((8, 3))
for i, (a, b, c) in enumerate(SIGNS):
x, y, z = xi
dN[i] = [a*(1+b*y)*(1+c*z),
b*(1+a*x)*(1+c*z),
c*(1+a*x)*(1+b*y)]
dN /= 8.0
return vertices.T @ dN
def sampled_min_det(vertices):
samples = (-1.0, 0.0, 1.0)
return min(np.linalg.det(hex_jacobian(vertices, [x,y,z]))
for x in samples for y in samples for z in samples)
cube = (SIGNS + 1.0) / 2.0
assert sampled_min_det(cube) > 0为什么“存在”仍不等于“可用”
组合理论可能证明某类边界可以填充 all-hex,但没有同时给出:
- 小数量单元;
- 简单奇异图;
- 无翻转几何嵌入;
- 可接受的长宽比与边界正交性;
- 对任意 CAD 容差错误的鲁棒实现。
因此“从拓扑层面解决”和“工业级全自动解决”必须分开表述。
关键资料
- CubeCover, 2011
- All-hex meshing using singularity-restricted field, 2012
- Hex-Mesh Generation and Processing: A Survey, 2022
- Singularity structure simplification via ILP, 2024
自测
- 为什么纯 hex 难以像四面体那样局部插点?
- polycube 方法最关键的逻辑前提是什么?
- 角点 Jacobian 全正是否严格保证三线性 hex 内部有效?
答案:局部修改会沿 sheet/chord 全局传播;到 polycube 的映射必须全局双射且拉回有效;通常不够,需要更完整采样或严格界。
文献深读
octree、whisker weaving、polycube、frame field、体量化、奇异图优化和公开基准的三十年演化,见六面体网格、体参数化与块结构文献谱系。