有限差分方法(FDM, Finite Difference Method)、有限体积方法(FVM, Finite Volume Method)和有限元方法(FEM,Finite Element Method)是数值计算领域最主流的三种方法。
「有限」指模板单元的有限长度。
1 有限差分方法简单,几何适应性差;
2 有限体积方法简单、几何适应性好,但不容易扩展到高阶格式;
3 有限元方法几何适应性好,易扩展到高阶格式,但算法复杂,内存要求高。
基于各自的特点,有限差分方法格式在基础研究领域应用较多,有限体积格式由于其直观的特点,较多应用于工程领域;由于历史的原因,有限元方法主要应用于结构力学的分析。
有限差分方法是点值近似,导数用点值的差分代替。有限体积法基于积分形式的控制方程,未知量是网格的平均值。有限元方法使在每个单元上采用函数近似,在单元内部引入了更多的自由度,然后采用Galerkin或者配置点方法求解。
三种方法看起来完全不同。这里从余量函数法(residual )的角度将三种方法联系起来。
以标量守恒方程为例(Ω是整体计算域):
当我们表述一种数值格式时,要明确两个问题:
- 近似解uh(x, t)以何种方式逼近精确解u(x, t)?
- 近似解以何种方式满足守恒率?定义余量函数为:
即Rh以何种方式趋近于零?
余量函数趋近于零的方式决定了不同的数值方法。
1 有限差分方法(FDM)
差分方法中,利用局部的点值定义多项式函数:
显然,Rh在该区间上不恒等于零,否则就是精确解了。对于有限差分方法,可以定义,对于每个网格点kϵ[1, …, K-1, K]
Rh(xk,t)=0,
K个未知量对应K个方程,满足求解条件。
小 结:有限差分方法(FDM)要求余量函数在每个网格点上恒等于零。
2 有限体积方法(FVM)
有限体积方法中,未知数不再是点值,而是每个网格单元的平均值,比如第k网格单元:
这时每个网格单元的余量函数可以写作:
网格单元:
对于有限体积方法,可以要求:
即余量函数在每个网格单元的积分恒等于零。这样就可以得到有限体积方法:
接下来就是如何通过网格单元平均值重构单元界面数值通量的过程。
小 结:有限体积方法(FVM)要求余量函数在每个网格单元的平均值恒等于零。
3 有限元方法(FEM)
有限差分方法和有限体积方法需要扩展到高阶格式时,都只能增加模板(stencil)的长度,给高阶方法的构造带来了极大的不便。注意到,无论是有限差分方法还是有限体积方法,每个网格单元都只对应一个未知量。那么如果增加每个单元对应的自由度呢?
有限元方法中,每个单元的近似解用函数表示:
其中,Np表示基函数的个数,也即基函数空间的维度。
基函数一般选择多项式。对于整体计算域,近似解可以表达为:
其中Nk(x)是线性的形函数(shapefuntion),满足
构成了全局的基函数(basisfunction)。
有限元方法中,余量函数以何种方式趋于零呢?可以定义一个由测试函数(test function)构成的函数空间,其维数与基函数构成的函数空间Vh相同。要求余量函数满足:
即:
如果基函数空间和测试函数空间一致,这就是Galerkin方法。这样就得到通常的有限元方法数值格式:
M是质量矩阵,S是刚度矩阵。
小 结:有限元方法(FEM)中,余量函数与测试函数空间正交。
4 其它方法
上述三种方法都是「有限的」,即它们都采用局部的近似,无论是跨点/网格单元还是单元内部的函数近似。谱方法的近似是全局的,即对于整体计算域:
容易看到谱方法中,近似解本身及其任意阶导数在计算域内都是连续的。它导致了所谓谱精度。谱方法也可以从余量函数的角度推导。
上述有限元方法由于采用了全局连续的测试函数,因此也叫做连续有限元方法,与间断有限元方法对应。后者允许在网格单元的界面处出现间断。
因此,无论是有限差分方法(FDM),还是有限体积方法(FVM),亦或是连续/间断有限元方法(FEM),乃至谱方法,都可以通过余量函数推导得到,除了定义近似解的方式不同外,有限差分方法(FDM)要求余量函数在每个网格点等于零,有限体积方法(FVM)要求余量函数在每个网格单元的平均值等于零, 有限元方法(FEM),要求余量函数与测试函数空间正交。