Skip to content
cfd-lab:~/ja/posts/fdm-fem-fvmonline
NOTE #008DAY MON CFD기법DATE 2026.03.09READ 7 min readWORDS 3,421#CFD#FDM#FEM#FVM#Numerical-Methods

FDM vs FEM vs FVM:3つの離散化手法の本質的な違い

有限差分法(FDM)、有限要素法(FEM)、有限体積法(FVM)の数学的な出発点、メリット・デメリット、そしてそれぞれが真価を発揮する領域を比較します。

同じ PDE、3つの道#

偏微分方程式(PDE)をコンピュータで解くためには、連続的な空間を 離散化(discretization) する必要があります。同じ方程式であっても、どのような哲学で離散化するかによって、全く異なる数値手法になります。

ここでは、単純な 1D 移流拡散方程式を例に挙げます。

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)における関数値をテイラー展開(Taylor expansion)し、導関数を近似します。

数学的な出発点:テイラー展開#

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 Difference):

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 Difference):

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)。
  • 境界条件が自然に含まれます(ノイマン境界条件 = 右辺)。

ガラーキン近似(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高精度、コスト増

メリットとデメリット#

メリット:

  • 非構造格子と相性が良い — 三角形や四面体メッシュで複雑な形状を処理できる
  • 数学的に厳密な誤差評価(a priori / a posteriori 誤差評価)が可能
  • 適応格子(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)やアップウィンド(upwind)ベース:

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次精度):

3つの2次多項式の候補を非線形に加重平均することで、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})

滑らかさの指標(smoothness indicator) β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)
衝撃波の捕捉可能困難優秀
数学的理論普通優秀普通
移流支配問題普通安定化が必要優秀

境界が曖昧になる現代の手法#

近年では、3つの手法のメリットを組み合わせたハイブリッドな手法が活発に研究されています。

不連続ガラーキン法(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 ソルバーとして注目されています。

粒子法(Meshless Methods, SPH など)#

格子そのものをなくすアプローチ。粒子(particle)ベースで近似します。自由表面流や大変形問題に強みがありますが、精度や一貫性の問題があります。


結論:どれを選択すべきか#

万能な手法はありません。問題の性質が選択を決定します。

  • 構造解析、熱伝導、電磁気:FEM
  • 圧縮性流れ、衝撃波、多相流:FVM
  • DNS、構造格子での高精度計算:FDM
  • 高次精度 + 保存性を同時に達成したい場合:DG(FEM + FVM のハイブリッド)

重要なのは、各手法の 数学的な出発点と限界 を理解することです。それによって、問題に合ったツールを選び、結果を正しく解釈できるようになります。

メニューで FDM/FEM/FVM を切り替えると、同じ格子上の自由度配置の違いが一目で分かる。

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

役に立ったらシェアしてください。