Skip to content
cfd-lab:~/zh/posts/fdm-fem-fvm● online

本文译自作者的韩语原文。 阅读原文(한국어)

NOTE #006DAY MON CFD기법DATE 2026.03.09UPDATED 2026.10.19READ 6 min read#CFD#FDM#FEM#FVM#Numerical-Methods

FDM vs FEM vs FVM:三种离散化技术的本质区别

离散的对象不同:差分算子、函数空间,或是界面通量。守恒不会自动跟着前两者走。

同一 PDE,三条路径#

把 PDE 放进计算机,先决定未知数坐在哪里。方程可以相同。点值、基函数系数、单元平均,三条路就分开了。

这里只留一条一维平流-扩散。

∂u∂t+a∂u∂x=ν∂2u∂x2\frac{\partial u}{\partial t} + a\frac{\partial u}{\partial x} = \nu\frac{\partial^2 u}{\partial x^2}

下拉菜单在 FDM、FEM、FVM 之间切换,同一张网格上的自由度就在节点、基系数和单元中心之间搬家。

같은 격자 위에 세 방법이 어떤 자유도(노드/셀/요소)를 가지는지 비교 — 보존성과 정확도 차이의 출발점.

FDM 把点排成一串,FVM 在每个单元中央放一个值。FEM 的系数在节点上,基函数穿过单元。


1. 有限差分法 (Finite Difference Method, FDM)#

核心思想

将微分直接近似为 差分 (difference)。

这是最直观的方法。通过对网格点 (node) 处的函数值进行泰勒级数展开来近似导数。

数学起点:泰勒展开

点 xix_i 处的泰勒展开:

u(xi+Δx)=u(xi)+Δx∂u∂x∣i+Δx22∂2u∂x2∣i+⋯u(x_i + \Delta x) = u(x_i) + \Delta x \frac{\partial u}{\partial x}\bigg|_i + \frac{\Delta x^2}{2}\frac{\partial^2 u}{\partial x^2}\bigg|_i + \cdots

由此导出差分近似:

前向差分 (Forward):

∂u∂x∣i≈ui+1−uiΔx+O(Δx)\frac{\partial u}{\partial x}\bigg|_i \approx \frac{u_{i+1} - u_i}{\Delta x} + O(\Delta x)

中心差分 (Central):

∂u∂x∣i≈ui+1−ui−12Δx+O(Δx2)\frac{\partial u}{\partial x}\bigg|_i \approx \frac{u_{i+1} - u_{i-1}}{2\Delta x} + O(\Delta x^2)

二阶导数:

∂2u∂x2∣i≈ui+1−2ui+ui−1Δx2+O(Δx2)\frac{\partial^2 u}{\partial x^2}\bigg|_i \approx \frac{u_{i+1} - 2u_i + u_{i-1}}{\Delta x^2} + O(\Delta x^2)

应用于平流-扩散方程#

使用中心差分:

duidt+aui+1−ui−12Δx=νui+1−2ui+ui−1Δx2\frac{du_i}{dt} + a\frac{u_{i+1} - u_{i-1}}{2\Delta x} = \nu\frac{u_{i+1} - 2u_i + u_{i-1}}{\Delta x^2}

这变成了关于网格点未知数 uiu_i 的联立常微分方程 (ODE) 系统。

优缺点

优点:

  • 概念简单,实现容易
  • 在结构化网格 (structured grid) 中非常高效
  • 易于实现高阶精度 (紧致格式、类谱格式)
  • 正交网格下矩阵结构清晰 (带状矩阵)

缺点:

  • 难以应用于非结构化网格 (unstructured grid) —— 这是致命弱点
  • 对于复杂几何形状的网格生成非常困难
  • 不会自动满足守恒定律

代表性应用领域

  • DNS/LES (基于正交网格的湍流模拟)
  • 气象/海洋模型 (结构化网格)
  • 地震波传播模拟
  • 基于紧致格式的高精度计算

2. 有限要素法 (Finite Element Method, FEM)#

核心思想

将解近似为 基函数 (basis function) 的线性组合, 并最小化 加权残差 (weighted residual)。

FEM 不直接求解微分方程。相反,它将其转换为称为 弱形式 (weak formulation) 的积分形式。

数学起点:弱形式 (Weak Form)#

在原始 PDE (强形式,strong form) 上乘以测试函数 ww 并积分:

∫Ωw(∂u∂t+a∂u∂x−ν∂2u∂x2)dx=0\int_\Omega w \left(\frac{\partial u}{\partial t} + a\frac{\partial u}{\partial x} - \nu\frac{\partial^2 u}{\partial x^2}\right) dx = 0

对扩散项应用分部积分 (integration by parts):

∫Ωw∂u∂t dx+∫Ωw a∂u∂x dx+∫Ων∂w∂x∂u∂x dx=[νw∂u∂x]Γ\int_\Omega w \frac{\partial u}{\partial t}\,dx + \int_\Omega w\, a\frac{\partial u}{\partial x}\,dx + \int_\Omega \nu\frac{\partial w}{\partial x}\frac{\partial u}{\partial x}\,dx = \left[\nu w \frac{\partial u}{\partial x}\right]_\Gamma

这就是 弱形式。请注意核心变化:

  • 原本需要二阶导数,分部积分后 仅需一阶导数
  • 放宽了对解的连续性要求 (C1→C0C^1 \to C^0)
  • 边界条件自然地包含在内 (Neumann BC = 右侧项)

伽辽金近似 (Galerkin Approximation)#

将解表示为基函数 ϕj\phi_j 的线性组合:

uh(x,t)=∑j=1NUj(t) ϕj(x)u^h(x, t) = \sum_{j=1}^{N} U_j(t)\,\phi_j(x)

在伽辽金方法中,测试函数和基函数取自同一空间 (w=ϕiw = \phi_i):

∑j(∫Ωϕiϕj dx)dUjdt+∑j(∫Ωϕi a ϕj′ dx+∫Ων ϕi′ ϕj′ dx)Uj=0\sum_j \left(\int_\Omega \phi_i \phi_j\,dx\right) \frac{dU_j}{dt} + \sum_j \left(\int_\Omega \phi_i\, a\, \phi_j'\,dx + \int_\Omega \nu\, \phi_i'\, \phi_j'\,dx\right) U_j = 0

矩阵形式:

MdUdt+KU=f\mathbf{M}\frac{d\mathbf{U}}{dt} + \mathbf{K}\mathbf{U} = \mathbf{f}
  • M\mathbf{M}: 质量矩阵 (mass matrix)
  • K\mathbf{K}: 刚度矩阵 (stiffness matrix)
  • f\mathbf{f}: 边界/源项向量

基函数的选择

最常用的是基于 拉格朗日多项式 (Lagrange polynomial) 的单元:

单元阶数节点数 (2D 三角形)特点
P1 (Linear)1阶3最基础,成本低
P2 (Quadratic)2阶6可表示曲面形状
P3 (Cubic)3阶10高精度,成本增加

优缺点

优点:

  • 天然适合非结构化网格 —— 使用三角形/四面体网格处理复杂形状
  • 可以进行数学上严密的误差估计 (先验/后验误差估计)
  • 与自适应网格加密 (adaptive mesh refinement) 结合良好
  • 可以灵活选择 p-refinement (提高多项式阶数) 和 h-refinement (细化网格)

缺点:

  • 不会直接满足守恒定律 (标准伽辽金法)
  • 在平流主导问题中不稳定 (震荡) —— 需要 SUPG、GLS 等稳定化技术
  • 需要求质量矩阵的逆 (或使用质量集中 mass lumping)
  • 实现复杂度高于 FDM/FVM

代表性应用领域

  • 固体力学 / 结构分析 (FEM 的原始领地)
  • 电磁场分析
  • 热传递
  • 生物力学
  • 岩土/地质力学

3. 有限体积法 (Finite Volume Method, FVM)#

核心思想

对 控制体 (control volume) 积分守恒定律, 并平衡通过体积边界的 通量 (flux)。

FVM 最直接地反映了物理守恒定律。

数学起点:积分型守恒定律

将平流-扩散方程写成积分形式:

ddt∫Viu dx+∮∂Vi(au−ν∂u∂x)⋅n dS=0\frac{d}{dt}\int_{V_i} u\,dx + \oint_{\partial V_i} \left(au - \nu\frac{\partial u}{\partial x}\right) \cdot n\, dS = 0

对于控制体 Vi=[xi−1/2, xi+1/2]V_i = [x_{i-1/2},\, x_{i+1/2}]:

duˉidt=−1Δx(F^i+1/2−F^i−1/2)\frac{d\bar{u}_i}{dt} = -\frac{1}{\Delta x}\left(\hat{F}_{i+1/2} - \hat{F}_{i-1/2}\right)

其中 uˉi\bar{u}_i 是单元平均值,F^i+1/2\hat{F}_{i+1/2} 是单元边界处的 数值通量。

数值通量的确定

FVM 的核心在于如何计算单元边界通量:

平流项 —— 基于黎曼求解器 (Riemann solver) 或上风格式:

F^i+1/2adv=RiemannSolver(uˉi, uˉi+1)\hat{F}^{adv}_{i+1/2} = \text{RiemannSolver}(\bar{u}_i,\, \bar{u}_{i+1})

扩散项 —— 中心差分:

F^i+1/2diff=−νuˉi+1−uˉiΔx\hat{F}^{diff}_{i+1/2} = -\nu\frac{\bar{u}_{i+1} - \bar{u}_i}{\Delta x}

重构 (Reconstruction)#

仅靠单元平均值只有一阶精度。为了获得高阶精度, 必须对单元内部的分布进行 重构 (reconstruction):

MUSCL (2阶):

ui+1/2L=uˉi+12ψ(ri) (uˉi−uˉi−1)u_{i+1/2}^L = \bar{u}_i + \frac{1}{2}\psi(r_i)\,(\bar{u}_i - \bar{u}_{i-1})

其中 ψ\psi 是斜率限制器 (slope limiter),rir_i 是连续梯度的比例。

WENO (5阶):

通过对三个二阶多项式候选者进行非线性加权平均来实现五阶精度:

ui+1/2L=∑k=02ωk qk(xi+1/2)u_{i+1/2}^L = \sum_{k=0}^{2} \omega_k\, q_k(x_{i+1/2})

根据光滑度指示器 βk\beta_k 确定权重 ωk\omega_k,在不连续附近自动给光滑的模板分配权重。

界面扩散是用正交间距去除的 −ν(uˉi+1−uˉi)/Δx-\nu(\bar{u}_{i+1}-\bar{u}_i)/\Delta x。法向顺着网格线时,这个差才是法向导数。面一歪,单靠相邻平均值的差对不上方向。这个缺口由 非正交扩散修正 补上。去掉修正,写成守恒型,扩散仍然会偏。

前面的前差是 O(Δx)O(\Delta x),中心差分和二阶导数模板是 O(Δx2)O(\Delta x^2)。前差留下泰勒展开里的 Δx2/2\Delta x^2/2。中心差分用 ui+1u_{i+1} 减 ui−1u_{i-1},把该项消掉。间距减半,前差误差大约减半,O(Δx2)O(\Delta x^2) 大约降到四分之一。只有单元平均、不做重构,就停在一阶。高阶是在抬到界面时加上的。

MUSCL 里的 1/21/2 是把单元平均线性抬到界面的系数。ψ(ri)=1\psi(r_i)=1 时斜率全留,ψ=0\psi=0 时界面值回到 uˉi\bar{u}_i,又是一阶。WENO 只加 k=0,1,2k=0,1,2 三个候选。每个 qkq_k 是二次多项式,ωk\omega_k 削减 βk\beta_k 大的模板。光滑区间里三者合成五阶,说的是这个加权和的阶。ψ\psi 掉到 0,五阶公式还在,那个面已经掉回一阶。三角形上 P1 是 3 个节点,P2 是 6 个,P3 是 10 个。阶数从 1 提到 3,单元未知数从 3 越过 10。弱形式里 M\mathbf{M} 是 ∫ϕiϕj dx\int \phi_i \phi_j\,dx,K\mathbf{K} 把 ϕiϕj′\phi_i \phi_j' 和 ν ϕi′ϕj′\nu\,\phi_i'\phi_j' 捆在一起。ν\nu 为正,扩散块接近对称。对流速度 aa 留下非对称。

优缺点

优点:

  • 在离散水平上精确满足守恒定律 —— CFD 中的决定性优点
  • 擅长捕捉激波和不连续面
  • 可应用于非结构化网格
  • 基于通量的思维直接对应物理直觉

缺点:

  • 实现高阶精度比 FEM 困难 (重构变得复杂)
  • 在扩散方程中可能比 FEM 效率低
  • 在非结构化网格上实现高阶重构非常棘手

代表性应用领域

  • 整个 CFD 领域 (OpenFOAM, ANSYS Fluent, SU2)
  • 可压缩/不可压缩流动
  • 多相流、燃烧、反应流
  • 气象/气候模型动力框架的一部分

核心对比

数学起点

技术起点核心工具
FDM强形式 (Strong form) PDE泰勒展开
FEM弱形式 (Weak form)基函数 + 加权残差
FVM积分型守恒定律控制体 + 数值通量

离散化“什么”

这是最本质的区别:

  • FDM: 离散化微分算子 (∂/∂x\partial/\partial x)
  • FEM: 离散化解空间 (solution space)
  • FVM: 离散化积分方程中的通量

未知数的位置

  • FDM: 网格点 (node) 处的点值 (point value)
  • FEM: 节点 (node) 处的点值 (基函数的系数)
  • FVM: 单元 (cell) 的平均值 (cell average)

综合对比

项目FDMFEMFVM
实现难度低高中
非结构化网格困难天然适合可能
守恒性XX (标准)O
复杂几何困难优秀可能
高阶精度容易容易 (p-ref)可能 (WENO)
激波捕捉可能困难优秀
数学理论一般优秀一般
平流主导问题一般需要稳定化优秀

边界模糊的现代技术

近年来,结合三种技术优点的混合方法正受到活跃研究:

不连续伽辽金法 (Discontinuous Galerkin, DG)#

结合了 FEM 的基函数 + FVM 的通量概念。 在每个单元内部用多项式近似解 (FEM), 在单元边界用黎曼求解器计算通量 (FVM)。

∫Viw∂uh∂t dx−∫Vi∂w∂xF(uh) dx+F^i+1/2wi+1/2−−F^i−1/2wi−1/2+=0\int_{V_i} w \frac{\partial u^h}{\partial t}\,dx - \int_{V_i} \frac{\partial w}{\partial x} F(u^h)\,dx + \hat{F}_{i+1/2} w_{i+1/2}^- - \hat{F}_{i-1/2} w_{i-1/2}^+ = 0

同时满足 守恒性 + 高阶精度 + 非结构化网格。 但计算成本高,且在激波附近需要限制器 (limiter)。

谱差分 (Spectral Difference) / 通量重构 (Flux Reconstruction)#

与 DG 类似,但以微分形式求解而不进行积分,从而提高了效率。 与 GPU 加速结合良好,在下一代 CFD 求解器中备受关注。

无网格方法 (SPH 等)#

彻底取消网格的方法。基于粒子 (particle) 进行近似。 在自由表面流动、大变形问题上有优势,但存在精度/一致性问题。


要守恒就把差分模板放下

盒子里的 DNS、网格又正交,中心差分的 O(Δx2)O(\Delta x^2) 就够。三点做出二阶导数,矩阵保持带状。几何一折、网格变成非结构,这套模板就找不到邻居。弱形式这时把几何吃进去。标准伽辽金的 M\mathbf{M} 和 K\mathbf{K} 仍然不保证每个单元的通量互相抵消。

激波过去之后积分值必须原样回来,那就用 FVM。界面通量 F^i+1/2\hat{F}_{i+1/2} 是左单元的损失、右单元的收益,内部面在总和里消失。高阶和守恒要放在同一个格式里,就走 间断伽辽金离散:单元内多项式,单元面黎曼通量。拿掉限制器,这种混合在激波前一样会振荡。

如果对您有帮助,请分享。