等几何分析的入口
# CAE、几何建模与有限元:等几何分析的入口
GAMES302「高级图形学与增强现实」前三讲笔记。课程由杭州电子科技大学徐岗教授主讲,围绕等几何分析(Isogeometric Analysis, IGA)这一前沿方向,从 CAE 全景出发,经几何建模基础,到有限元与网格生成,逐步搭建起理解 IGA 的知识框架。
---
现代工业产品的诞生,要经历一条"设计 → 仿真 → 优化 → 制造"的数字化全流程。这条链上的三个核心技术支柱分别是:
- CAD(Computer-Aided Design):负责产品的几何建模,把工程师脑中的形状用数学语言描述出来。
- CAE(Computer-Aided Engineering):负责物理仿真,让设计好的模型在虚拟环境中接受力学、热学、流体等考验。
- 结构优化(Structure Optimization):在仿真结果的基础上,自动调整设计参数、形状乃至拓扑结构,让产品更轻、更强、更高效。
GAMES302 的第一讲做的第一件事,就是把这条链条完整地铺开。这不是走过场——只有理解了链条上每个环节的输入与输出,才能看到后面的"语言鸿沟"问题出在哪里。
一个关键的认知锚点:波音 777 的研发采用 CAE 数字化样机技术后,仅一次试飞即获得成功(每次物理样机实验花费约 1 亿美元);汽车工业中,CAE 技术使新车开发周期从 5~6 年缩减到 1~2 年。这些不是传说,是工业界每天都在经历的现实。
---
问题是什么?
CAD 和 CAE 看似同一根链条上的两个环节,但它们说的是不同的数学语言。
CAD 用样条(Spline)来描述几何——具体来说,是 NURBS(Non-Uniform Rational B-Spline,非均匀有理 B 样条)。NURBS 可以精确表达从直线、圆弧到汽车车身自由曲面的各种形状,是 CAD 领域的工业标准。
CAE 的核心工具是有限元分析(Finite Element Analysis, FEA)。FEA 需要把连续的计算域切成大量小单元(网格),然后在每个单元上用低阶多项式(通常是线性 Lagrange 插值)来近似物理场。
这就产生了一个根本性的断裂:CAD 给出的精确 NURBS 几何,必须被近似为网格才能做 FEA。这个过程叫做"网格生成"(Mesh Generation),它带来的后果有三层:
- 精度损失:网格对原始几何的近似引入几何误差,这在壳体仿真中尤为严重——网格离散带来的几何误差是影响精度的首要因素。
- 效率瓶颈:网格生成占整个分析流程 70%~80% 的时间。工程师花在"造网格"上的精力远超"做分析"本身。
- 数据断裂:CAD 的输入是控制点、节点向量、权重等样条参数;FEA 的输出是顶点坐标和标量/矢量场值。两者的数据格式完全不同,无法直接互通。
课件中展示了这个断裂的直观对比:同一个几何模型,CAD 侧的数据是紧凑的 NURBS 参数(控制点 + 节点向量),FEA 侧的数据则是海量的 OFF 格式顶点列表。数据从精确、紧凑变成了近似、膨胀。
为什么难以解决?
课件给出了一个深层的学科史视角:FEA 起源于 1940 年代,CAD 起源于 1970 年代。两个领域各自独立发展了几十年,做 FEA 的人对计算几何不甚了解,研究计算几何的人对 FEA 也不熟悉。这种学科隔阂不是靠"多沟通"就能消除的——它已经渗透到了软件架构、数据格式、人才培养等各个层面。
"实现几何建模、物理仿真、结构优化的数据表示一致性"已被列为 CAD 面临的十大挑战之一。
---
2005 年,美国三院院士 T.J.R. Hughes 提出了等几何分析(Isogeometric Analysis, IGA),其核心思想可以用一句话概括:
用同一种数学语言(NURBS 样条)来表示几何外形和物理场。
具体来说:
- 计算域不再是网格近似的产物,而是直接使用 CAD 输出的 NURBS 曲面(二维问题)或 NURBS 参数体(三维问题)。
- 基函数不再是线性 Lagrange 多项式,而是 NURBS 基函数本身。
- 未知量不再是网格节点上的物理值,而是 NURBS 控制顶点上的物理属性分量。
课件中对比了 IGA 和 FEA 的数据格式,这个对比非常有说服力:
- FEA:CAD 输入是 NURBS 参数 → 网格生成 → 输出是 OFF 格式的海量顶点。输入和输出格式完全不同。
- IGA:CAD 输入是 NURBS 参数 → 直接在 NURBS 参数空间上求解 → 输出仍然是 NURBS 参数格式(控制点 + 节点向量 + 权重,只是控制点从三维坐标扩展为带物理属性的四维坐标)。输入和输出格式完全一致。
这带来的好处是显然的:
- 消除几何近似误差:不再需要网格离散,几何是精确的。
- 大幅提升效率:省去了网格生成这一最耗时的环节。课件中提到一个震撼的数字:在个性化医疗的心脏瓣膜闭合模拟中,同样精度下,FEA 花费的时间约是 IGA 的 500 倍。
- CAD/CAE 无缝集成:数据格式统一,设计迭代不再需要反复的格式转换。
当然,IGA 也有自己的挑战:如何对任意复杂的 CAD 模型构造体参数化(第四、五讲的内容)、如何处理裁剪 NURBS 曲面、如何与现有 FEA 软件生态兼容等等。但核心思想是清晰的——它不是对 FEA 的修补,而是对整个 CAD/CAE 流程的重新设计。
---
第二讲是纯粹的几何学内容,为理解 IGA 提供数学工具。IGA 的"燃料"是 NURBS,而这一讲就是 NURBS 的原理拆解。
从参数表示说起
工业产品的几何形状有三种数学表示方式:
- 显式表示 $y = f(x)$:直观,但无法表示多值曲线(比如圆)。
- 隐式表示 $f(x,y) = 0$:容易判断点在曲线内外,但坐标对应关系不直观。
- 参数表示 $\mathbf{P}(t) = [x(t), y(t), z(t)]$:最适合计算机处理,可以表示任意复杂形状,且参数域上的点与物理空间上的点有清晰的映射关系。
现代 CAD 几乎全部采用参数表示。
Bézier 曲线:第一个里程碑
1960 年代,法国雷诺汽车公司的 Pierre Bézier(贝塞尔)提出了一种用控制多边形来交互设计曲线的方法。核心公式:
$\mathbf{C}(t) = \sum_{i=0}^{n} B_{i,n}(t) \mathbf{P}_i, \quad t \in [0,1]$
其中 $B_{i,n}(t) = \binom{n}{i} t^i (1-t)^{n-i}$ 是 Bernstein 基函数,$\mathbf{P}_i$ 是控制顶点。
Bézier 曲线有几个重要性质:端点插值(曲线通过首末控制点)、凸包性(曲线始终在控制多边形的凸包内)、对称性。但它的致命弱点是全局性——移动任何一个控制点,整条曲线都会改变。这严重限制了交互设计的效率。
B 样条:局部控制的突破
B 样条(B-Spline)通过引入节点向量(Knot Vector)来解决 Bézier 的全局控制问题。B 样条基函数由 Cox-de Boor 递推公式定义:
$N_{i,0}(t) = \begin{cases} 1, & t_i \le t < t_{i+1} \\ 0, & \text{otherwise} \end{cases}$
$N_{i,p}(t) = \frac{t - t_i}{t_{i+p} - t_i} N_{i,p-1}(t) + \frac{t_{i+p+1} - t}{t_{i+p+1} - t_{i+1}} N_{i+1,p-1}(t)$
其中 $p$ 是次数,$\{t_i\}$ 是节点向量。关键性质:每个基函数只在有限区间上非零,这意味着移动一个控制点只影响曲线的局部区域——这正是交互设计所需要的。
B 样条的节点向量还控制着曲线的连续性。重复的节点(multiplicity)会降低连续性阶数:$p$ 次 B 样条在非重复节点处具有 $C^{p-1}$ 连续性,而在重复度为 $k$ 的节点处降为 $C^{p-k}$。
NURBS:工业标准
NURBS(Non-Uniform Rational B-Spline)在 B 样条的基础上引入了权重,使其能够精确表示圆锥曲线(圆、椭圆、抛物线等):
$\mathbf{C}(t) = \frac{\sum_{i=0}^{n} N_{i,p}(t) w_i \mathbf{P}_i}{\sum_{i=0}^{n} N_{i,p}(t) w_i}$
其中 $w_i$ 是第 $i$ 个控制点的权重。权重越大,曲线越靠近对应的控制点。NURBS 之所以成为 CAD 工业标准(STEP、IGES 等标准文件格式均支持),是因为它统一了自由曲线和解析曲线的表示——同一套数学框架既能描述汽车车身的自由曲面,也能精确表达孔、圆角等标准几何。
从曲线到曲面到曲体
B 样条和 NURBS 可以自然地推广到高维:
- 曲面 $\mathbf{S}(u,v)$:张量积形式,双参数,用二维控制网格。
- 体(Volume) $\mathbf{V}(u,v,w)$:三变量参数化,用三维控制格。这是 IGA 的关键——IGA 需要的不是曲面边界,而是完整的体参数化来作为计算域。
课件中介绍了 Coons 体的构造方法:给定六面体边界上的 B 样条控制点,利用 Coons 插值思想构造内部的控制点。这在后续讲中会频繁用到。
iGame 实验室还开源了一套几何内核,用 C++ 统一实现了 Curve、Surface、Volume 三个层次的几何对象,接口设计清晰——getPointAtParam(参数 → 物理坐标)、eval(计算基函数值)、evalDers(计算基函数值 + 导数),为 IGA 编程实践提供了基础设施。
---
第三讲回答一个前置问题:传统 FEA 是怎么工作的?网格是怎么生成的?只有理解了这些,才能精确地评价 IGA 的改进。
场问题与有限元法
工程和科学中的许多问题都可以归结为场问题:给定偏微分方程和边界条件,求解区域上的未知场函数(位移场、温度场、电磁场等)。形式化地写:
$A(\mathbf{u}) = f(\mathbf{x}), \quad \mathbf{x} \in \Omega$
$B(\mathbf{u}) = g(\mathbf{x}), \quad \mathbf{x} \in \partial\Omega$
解析解只存在于极少数简单问题中。对于真实工程问题,必须求助于数值方法。
有限元法的核心思想是"里兹法 + 分片近似":
- 离散化:将求解域划分为有限个互不重叠的单元(三角形、四边形、四面体、六面体等),原始连续域被这些单元的集合近似替代。
- 分片近似:在每个单元内选择简单的插值函数(通常是低阶多项式)来近似真实的场函数,以节点值为未知量。
- 组装与求解:基于变分原理或加权残值法(如 Galerkin 方法),将所有单元方程组装为全局线性方程组,求解得到节点值。
"分片近似"是有限元法的精髓——它不需要在整个区域上找一个复杂的试探函数,而是在每个小单元上用简单函数局部逼近。随着单元尺寸缩小,近似解收敛于精确解。
有限元法的基本步骤
课件总结了一个完整的 FEA 流程:
- 结构离散化(前处理):划分网格。
- 单元分析:选择单元类型和形函数,推导单元刚度矩阵。
- 整体分析:组装全局刚度矩阵 $\mathbf{K}$。
- 引入边界条件:施加载荷和约束。
- 求解方程组 $\mathbf{K}\mathbf{u} = \mathbf{f}$。
- 结果后处理:计算应力、应变等派生量并可视化。
网格生成:前处理的核心
网格生成是 FEA 前处理的核心环节,课件分两大类介绍:
非结构化网格:三角形/四面体网格。主流算法有:
- Delaunay 三角化:基于空圆准则(任意三角形的外接圆内不包含其他点),具有良好的数学性质。
- Advancing Front(波前法):从边界向内逐步推进,生成三角形。优点是可以自然地保证边界质量。
- Q-Morph:先生成三角形网格,再通过局部操作将其转化为四边形网格。
结构化网格:四边形/六面体网格,具有规则的拓扑结构。生成方法包括:
- 映射法(Mapped Meshing):通过超限插值(TFI)将规则格点映射到物理区域。
- 扫掠法(Sweeping):在源面和目标面之间扫掠生成六面体网格。
- 中轴法(Medial Axis):通过"最大内切球"的中轴来分解区域,将复杂区域分解为可映射的子区域。
- 标架场引导法:课件重点介绍了基于标架场(Cross Field)的全自动四边形网格生成框架——求解拉普拉斯方程获取光滑矢量场,转化为标架场后,通过分析奇异结构将区域分解为四边形子区域,再在每个子域内用映射法生成高质量网格。这是一个研究前沿,也是 iGame 实验室的代表性工作之一。
结构化网格是"金标准":全自动、鲁棒性好、网格质量高、保持边界 CAD 几何。但这些优点的代价是区域剖分的难度——这正是标架场方法要解决的问题。
---
把三讲放在一起看,一条清晰的叙事线浮现出来:
第一讲抛出问题:CAD 和 CAE 之间有"语言鸿沟",IGA 是一种解决思路。但此时你对 IGA 的理解还只是一个概念——"用 NURBS 同时表示几何和物理场"。
第二讲提供工具:IGA 说要用 NURBS,那 NURBS 到底是什么?这一讲从参数表示出发,经过 Bézier → B 样条 → NURBS 的完整推导,让你真正理解控制点、节点向量、权重、基函数这些概念。没有这一讲,IGA 的公式对你来说只是符号。
第三讲解释替代对象:IGA 要替代 FEA,但 FEA 为什么长成今天这个样子?网格生成为什么那么难?理解了 FEA 的"里兹法 + 分片近似"框架和网格生成的各种算法,你才能精确地评价 IGA 跳过网格环节所带来的优势。
三讲构成一个"问题 → 工具 → 对照"的三角结构。第四讲开始,课程将进入 IGA 的核心算法——平面参数化和体参数化——那时你会发现,前三讲的每一部分都在为后续内容服务。
---
如果你正在学习 GAMES302 或对 IGA 感兴趣,以下是一个建议的学习路线:
基础准备(前置知识):
- 线性代数(矩阵运算、方程组求解)
- 微积分(偏微分方程的基本概念)
- 数值分析(数值积分、插值)
核心主线(GAMES302 课程):
- 第一讲:建立 CAE 全景认知,理解"语言鸿沟"
- 第二讲:掌握 NURBS 数学,这是 IGA 的根基
- 第三讲:理解 FEA 与网格生成,这是 IGA 要改进的对象
- 第四~五讲:参数化方法(IGA 的核心难点)
- 第六~九讲:IGA 的各种求解器(Poisson、弹性、超弹性、配点法)
- 第十~十一讲:IGA 在优化中的应用(形状优化、拓扑优化)
- 第十二~十三讲:前沿方向(细分、深度学习)
参考书目:
- 《The NURBS Book》— Piegl & Tiller,NURBS 的百科全书
- 《Curves and Surfaces for CAGD》— Farin,CAGD 经典教材
- Hughes et al., "Isogeometric analysis: CAD, finite elements, NURBS, exact geometry and mesh refinement," CMAME, 2005 — IGA 的奠基论文
- 《有限元分析及应用》— 胡于进、王璋奇,清华大学出版社
实践建议:
- iGame 实验室开源了几何内核和 IGA 求解器,可以直接上手编程
- 对比实现同一问题的 FEA 和 IGA 求解,体会精度与效率的差异
- 关注标架场引导的结构化网格生成,这是当前研究热点
---
课程来源:GAMES302 高级图形学与增强现实,徐岗教授,杭州电子科技大学 iGame 实验室