Skip to content
cfd-lab:~/zh/posts/fdm-fem-fvmonline
NOTE #008DAY MON CFD기법DATE 2026.03.09READ 5 min readWORDS 2,595#CFD#FDM#FEM#FVM#数值方法

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

比较有限差分法 (FDM)、有限要素法 (FEM) 和有限体积法 (FVM) 的数学起点、优缺点以及各自擅长的领域。

同一 PDE,三条路径#

要用计算机求解偏微分方程 (PDE),必须对连续空间进行 离散化 (discretization)。即便对于同一个方程,根据离散化哲学的不同,也会演变为完全不同的数值技术。

我们以简单的一维平流-扩散方程为例:

ut+aux=ν2ux2\frac{\partial u}{\partial t} + a\frac{\partial u}{\partial x} = \nu\frac{\partial^2 u}{\partial x^2}

让我们看看 FDM、FEM 和 FVM 分别如何处理这一个方程。


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

核心思想#

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

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

数学起点:泰勒展开#

xix_i 处的泰勒展开:

u(xi+Δx)=u(xi)+Δxuxi+Δx222ux2i+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):

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

中心差分 (Central):

uxiui+1ui12Δ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)

二阶导数:

2ux2iui+12ui+ui1Δ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+1ui12Δx=νui+12ui+ui1Δ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(ut+auxν2ux2)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):

Ωwutdx+Ωwauxdx+Ωνwxuxdx=[νwux]Γ\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

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

  • 原本需要二阶导数,分部积分后 仅需一阶导数
  • 放宽了对解的连续性要求 (C1C0C^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ϕjdx)dUjdt+j(Ωϕiaϕjdx+Ωνϕiϕjdx)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 最直接地反映了物理守恒定律。

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

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

ddtViudx+Vi(auνux)ndS=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=[xi1/2,xi+1/2]V_i = [x_{i-1/2},\, x_{i+1/2}]

duˉidt=1Δx(F^i+1/2F^i1/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+1uˉ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ˉiuˉi1)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ωkqk(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,在不连续附近自动给光滑的模板分配权重。

优缺点#

优点:

  • 在离散水平上精确满足守恒定律 —— 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)。

ViwuhtdxViwxF(uh)dx+F^i+1/2wi+1/2F^i1/2wi1/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) 进行近似。 在自由表面流动、大变形问题上有优势,但存在精度/一致性问题。


结论:该如何选择?#

没有万能的技术。问题的性质决定了选择:

  • 结构分析、热传递、电磁学: FEM
  • 可压缩流动、激波、多相流: FVM
  • DNS、结构化网格高精度计算: FDM
  • 同时追求高阶精度 + 守恒性: DG (FEM + FVM 混合)

核心在于理解每种技术的 数学起点和局限性。 只有这样,才能针对问题选择合适的工具,并正确解释结果。

切换下拉菜单 FDM/FEM/FVM,立刻看到同一网格上自由度布置的差异。

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

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