2. 非结构网格数据结构与质量分析基础
非结构网格与结构网格最本质的差别,在于单元之间没有固定的行列索引关系。结构网格可以用 (i, j, k) 三元组直接定位邻居,而非结构网格必须显式存储“谁和谁相邻”。因此,理解非结构网格的第一步不是看单元长什么样,而是理解它的数据结构:单元由哪些节点构成、面如何连接单元、几何量从哪里算出来、质量指标又建立在哪些几何量之上。这条链条决定了后续质量分析与修复能否高效、正确地实现。
常见单元类型与节点—面—单元三层结构
非结构网格中常见的单元包括二维的三角形、四边形与任意多边形,三维的四面体、六面体、棱柱、金字塔以及任意多面体。三角形和四面体因拓扑简单、自动生成算法成熟,是工程中最常用的填充单元;多边形和多面体则常见于多面体网格(polyhedral mesh)与切割类方法,它们能用更少的单元数贴合复杂边界,但每个单元的面数和节点数不固定。
为了统一表达这些形状各异的单元,非结构网格普遍采用节点—面—单元三层数据结构。节点只存坐标;面存它由哪些节点组成,以及它两侧各是哪个单元(边界面上有一侧为空);单元存它由哪些面围成。这种“以面为中心”的组织方式,使得三角形、四面体、多边形、多面体可以共用同一套邻接查询逻辑——找邻居只需通过面,而不必为每种单元单独写一套规则。
连接关系:邻接查询与遍历
三层结构建立后,最常用的操作是邻接查询。以“找单元 C0 的所有邻居”为例:遍历 C0 的面列表,对每个面读取其左右单元指针,若另一侧不是边界,则该单元即为邻居。这一操作的时间复杂度只与单元面数有关,与网格总量无关,这正是非结构网格能支撑大规模并行计算的原因。
实际实现中通常还会补充两类辅助结构:一是节点—单元反查表(节点被哪些单元共用),用于节点型有限体积格式的梯度重构与插值;二是单元—单元邻接表,把邻接关系预先展开存储,避免每次求解都重复遍历面。前者以内存换查询速度,后者以预处理换迭代效率,二者取舍取决于求解器访问模式。
需要特别注意的是面的方向约定。同一条内部面被两个单元共用,为保证通量计算符号一致,通常规定面法向从“左单元”指向“右单元”,即法向始终由 owner 指向 neighbor。若数据中左右单元顺序混乱,通量符号就会出错,表现为质量不守恒或残差震荡。因此读入网格后应统一检查:每个内部面的 owner/neighbor 编号是否唯一、法向与 owner→neighbor 方向是否一致。
几何量计算:从坐标到体积
几何量是质量指标的原料。以四面体为例,设四个节点为 P0、P1、P2、P3,体积可由混合积计算:
V = | (P1-P0) · [ (P2-P0) × (P3-P0) ] | / 6
若行列式结果为负,说明节点顺序使单元成为“负体积”单元,这在网格生成或格式转换中并不罕见,必须作为错误标记出来,否则后续所有基于体积的指标都会失真。多边形面则常采用“扇形分解”:以面内某节点为基准,把 n 边形拆成 n−2 个三角形,累加各三角形面积得到面面积,累加带符号的叉积得到面法向。
以一个教学示例说明:设某四面体节点为 P0(0,0,0)、P1(1,0,0)、P2(0,1,0)、P3(0,0,1),代入上式得 V = 1/6 ≈ 0.1667。该四面体三条棱两两垂直、长度均为 1,属于形状良好的参考单元,可作为质量指标标定的基准。若把 P3 改为 (0.01, 0.01, 1),体积几乎不变,但最小内角急剧减小,长宽比显著恶化——这说明体积本身不能反映形状质量,必须结合角度与边长类指标。
质量指标定义与判读
常用质量指标可归为三类。第一类是形状类,如长宽比(最长边与最短高之比)、形状因子(等效正单元与实际单元的尺度比);第二类是角度类,如最小/最大内角、面法向夹角;第三类是离散格式相关类,如正交性(面法向与单元质心连线的夹角余弦)与偏斜度(面心偏离质心连线中点的程度)。前两类与单元自身形状有关,第三类直接决定有限体积格式的截断误差。
判读时应建立分级阈值而非单一“合格线”。工程上常见的做法是:长宽比大于 100、最小内角小于 10°、正交性余弦小于 0.1 的单元列为“差单元”,优先修复;介于中间区间的列为“关注单元”,在关键区域(如壁面、激波附近)加密检查。阈值必须与求解器实际容忍度匹配,不能照搬其他软件默认值。
一个可执行的最小检查流程
把上述内容落成可操作的检查,可以按以下顺序执行:读入网格后,先统计单元类型分布与节点数、面数、单元数的比例关系(四面体网格通常满足 F ≈ 2C,可用于快速发现面表缺失);再逐单元计算带符号体积,统计负体积单元数量与编号;随后计算每个面的面积,筛出面积接近零的退化面;最后计算长宽比与最小内角,输出直方图与最差单元清单。每一步都应记录数量与位置,而不是只给一个“通过/不通过”的结论——定位到具体单元编号,才是后续修复的起点。
这套数据结构与指标体系的建立,使得非结构网格的质量分析从“凭经验看云图”转变为“可量化、可定位、可复现”的工程流程,也为后续的修复策略提供了明确的输入。