有限體積法

有限体积法（ 英文：finite volume method ）是一种以数值方法解偏微分方程的計算方式。 在有限體積法中，將要描述的物理實體切分為網格單元來描述，並使用发散定理，將所有包含发散项的偏微分方程中的體積積分轉換為表面积分。然后將每個網格的项加總，便成為每個有限體積表面的通量。因为進入给定體積的通量与离开相鄰體積的通量相同，所以这些方法是守恆的。该方法用於许多计算流体动力学軟體。 有限体积法常被拿來與有限元素分析做比較，后者使用節點值来近似導數，或者使用有限元方法来使用局部數值来逼近解的局部近似值，并通過將它們加總在一起来形成全域近似值。另一方面，有限體積法會計算某个體積中的網格解之平均，然后使用此平均值来決定單元内解的近似值。 一维平流問題： ( 1 ) ∂ ρ ∂ t + ∂ f ∂ x = 0 , t ≥ 0. {\displaystyle \quad (1)\qquad \qquad {\frac {\partial \rho }{\partial t}}+{\frac {\partial f}{\partial x}}=0,\quad t\geq 0.} ρ = ρ ( x , t )   {\displaystyle \rho =\rho \left(x,t\right)\ } 在這裡代表狀態變量， f = f ( ρ ( x , t ) )   {\displaystyle f=f\left(\rho \left(x,t\right)\right)\ } 代表的通量或流量 ρ   {\displaystyle \rho \ } 。習慣上， f   {\displaystyle f\ } 正值代表向右流動，而 f   {\displaystyle f\ } 負值代表向左流動。如果假設式（1）表示恆定面積的流動介質，則可以空间域 x   {\displaystyle x\ } ，细分為數個網格單元，以每個網格單元所佔的有限體積以 i   {\displaystyle i\ } 作為標記 。對於特定的單元 i   {\displaystyle i\ } ，我们可以定義該體積某物理量（ 壓力、溫度等 ）之通量或流量平均值 ρ i ( t ) = ρ ( x , t )   {\displaystyle {\rho }_{i}\left(t\right)=\rho \left(x,t\right)\ } 在時間 t = t 1   {\displaystyle {t=t_{1}}\ } 和 x ∈ [ x i − 1 2 , x i + 1 2 ]   {\displaystyle {x\in \left[x_{i-{\frac {1}{2}}},x_{i+{\frac {1}{2}}}\right]}\ } ，如式（2） ( 2 ) ρ ¯ i ( t 1 ) = 1 x i + 1 2 − x i − 1 2 ∫ x i − 1 2 x i + 1 2 ρ ( x , t 1 ) d x , {\displaystyle \quad (2)\qquad \qquad {\bar {\rho }}_{i}\left(t_{1}\right)={\frac {1}{x_{i+{\frac {1}{2}}}-x_{i-{\frac {1}{2}}}}}\int _{x_{i-{\frac {1}{2}}}}^{x_{i+{\frac {1}{2}}}}\rho \left(x,t_{1}\right)\,dx,} 而在時間 t = t 2   {\displaystyle {t=t_{2}}\ } 時式（2）可寫為： ( 3 ) ρ ¯ i ( t 2 ) = 1 x i + 1 2 − x i − 1 2 ∫ x i − 1 2 x i + 1 2 ρ ( x , t 2 ) d x , {\displaystyle \quad (3)\qquad \qquad {\bar {\rho }}_{i}\left(t_{2}\right)={\frac {1}{x_{i+{\frac {1}{2}}}-x_{i-{\frac {1}{2}}}}}\int _{x_{i-{\frac {1}{2}}}}^{x_{i+{\frac {1}{2}}}}\rho \left(x,t_{2}\right)\,dx,} 此處 x i − 1 2   {\displaystyle x_{i-{\frac {1}{2}}}\ } 和 x i + 1 2   {\displaystyle x_{i+{\frac {1}{2}}}\ } 分别代表上游和下游面或網格單元的交界面位置 i t h   {\displaystyle i^{th}\ } 。 將式（1）積分，可得： ( 4 ) ρ ( x , t 2 ) = ρ ( x , t 1 ) − ∫ t 1 t 2 f x ( x , t ) d t , {\displaystyle \quad (4)\qquad \qquad \rho \left(x,t_{2}\right)=\rho \left(x,t_{1}\right)-\int _{t_{1}}^{t_{2}}f_{x}\left(x,t\right)\,dt,} 當 f x = ∂ f ∂ x {\displaystyle f_{x}={\frac {\partial f}{\partial x}}} 。 為了得到在時間 t = t 2   {\displaystyle t=t_{2}\ } 的有限體積平均值 ρ ( x , t ) {\displaystyle \rho \left(x,t\right)} ，在此積分位於整個有限體積的所有網格的流量 ρ ( x , t 2 ) {\displaystyle \rho \left(x,t_{2}\right)} ，並 [ x i − 1 2 , x i + 1 2 ] {\displaystyle \left[x_{i-{\frac {1}{2}}},x_{i+{\frac {1}{2}}}\right]} 並將計算结果除以 Δ x i = x i + 1 2 − x i − 1 2 {\displaystyle \Delta x_{i}=x_{i+{\frac {1}{2}}}-x_{i-{\frac {1}{2}}}} ，即可得： ( 5 ) ρ ¯ i ( t 2 ) = 1 Δ x i ∫ x i − 1 2 x i + 1 2 { ρ ( x , t 1 ) − ∫ t 1 t 2 f x ( x , t ) d t } d x . {\displaystyle \quad (5)\qquad \qquad {\bar {\rho }}_{i}\left(t_{2}\right)={\frac {1}{\Delta x_{i}}}\int _{x_{i-{\frac {1}{2}}}}^{x_{i+{\frac {1}{2}}}}\left\{\rho \left(x,t_{1}\right)-\int _{t_{1}}^{t_{2}}f_{x}\left(x,t\right)dt\right\}dx.} 我們可以逆向積分的順序。同样，请记住，流量垂直於單元的表面。現在，因为一维 f x ≜ ∇ ⋅ f {\displaystyle f_{x}\triangleq \nabla \cdot f} ，我们可以應用散度定理，即 ∮ v ∇ ⋅ f d v = ∮ S f d S {\displaystyle \oint _{v}\nabla \cdot fdv=\oint _{S}f\,dS} ，并用的值代替散度的体积积分 f ( x )   {\displaystyle f(x)\ } 在網格單元表面計算（某單元與其他單元之前後交界面 x i − 1 2   {\displaystyle x_{i-{\frac {1}{2}}}\ } 和 x i + 1 2   {\displaystyle x_{i+{\frac {1}{2}}}\ } ）的有限體積如下： ( 6 ) ρ ¯ i ( t 2 ) = ρ ¯ i ( t 1 ) − 1 Δ x i ( ∫ t 1 t 2 f i + 1 2 d t − ∫ t 1 t 2 f i − 1 2 d t ) . {\displaystyle \quad (6)\qquad \qquad {\bar {\rho }}_{i}\left(t_{2}\right)={\bar {\rho }}_{i}\left(t_{1}\right)-{\frac {1}{\Delta x_{i}}}\left(\int _{t_{1}}^{t_{2}}f_{i+{\frac {1}{2}}}dt-\int _{t_{1}}^{t_{2}}f_{i-{\frac {1}{2}}}dt\right).} 當 f i ± 1 2 = f ( x i ± 1 2 , t ) {\displaystyle f_{i\pm {\frac {1}{2}}}=f\left(x_{i\pm {\frac {1}{2}}},t\right)} 。 因此，對于上述問題，我们可以得出一个半離散的數值格式，其單元中心的索引為 i   {\displaystyle i\ } ，且單元交界面通量的索引為 i ± 1 2 {\displaystyle i\pm {\frac {1}{2}}} ，通過對時間對式（6）進行微分，可得： ( 7 ) d ρ ¯ i d t + 1 Δ x i [ f i + 1 2 − f i − 1 2 ] = 0 , {\displaystyle \quad (7)\qquad \qquad {\frac {d{\bar {\rho }}_{i}}{dt}}+{\frac {1}{\Delta x_{i}}}\left[f_{i+{\frac {1}{2}}}-f_{i-{\frac {1}{2}}}\right]=0,} 通過某單元交界面通量的值 f i ± 1 2 {\displaystyle f_{i\pm {\frac {1}{2}}}} 可以通过對單元平均值进行内插或外推来獲得。式（7）對於該有限體積的平均值是精确的，因為在推導過程中未進行任何近似。 該方法也可以應用於2D形況，只要同時考慮單元四周交界面，北面、南面、东面和西面即可。 我們還可以考慮以下PDE代表的一般守恒定律問題， ( 8 ) ∂ u ∂ t + ∇ ⋅ f ( u ) = 0 . {\displaystyle \quad (8)\qquad \qquad {{\partial {\mathbf {u} }} \over {\partial t}}+\nabla \cdot {\mathbf {f} }\left({\mathbf {u} }\right)={\mathbf {0} }.} 此處 u   {\displaystyle {\mathbf {u} }\ } 代表狀態向量 f   {\displaystyle \mathbf {f} \ } 代表相应的通量張量。同样，我們可以將空間域细分為有限體積的網格單元。對於特定的網格單元 i   {\displaystyle i\ } ，將體積積分乘以單元的總體積 v i   {\displaystyle v_{i}\ } ， 如式（9）。 ( 9 ) ∫ v i ∂ u ∂ t d v + ∫ v i ∇ ⋅ f ( u ) d v = 0 . {\displaystyle \quad (9)\qquad \qquad \int _{v_{i}}{{\partial {\mathbf {u} }} \over {\partial t}}\,dv+\int _{v_{i}}\nabla \cdot {\mathbf {f} }\left({\mathbf {u} }\right)\,dv={\mathbf {0} }.} 將第一項積分可得体积平均值，然后将散度定理應用於第二項，可得： ( 10 ) v i d u ¯ i d t + ∮ S i f ( u ) ⋅ n   d S = 0 , {\displaystyle \quad (10)\qquad \qquad v_{i}{{d{\mathbf {\bar {u}} }_{i}} \over {dt}}+\oint _{S_{i}}{\mathbf {f} }\left({\mathbf {u} }\right)\cdot {\mathbf {n} }\ dS={\mathbf {0} },} 此處 S i   {\displaystyle S_{i}\ } 代表單元的總表面積， n {\displaystyle {\mathbf {n} }} 是垂直於表面並指向外的單位向量。最后，可得一般结果如式（11）。 ( 11 ) d u ¯ i d t + 1 v i ∮ S i f ( u ) ⋅ n   d S = 0 . {\displaystyle \quad (11)\qquad \qquad {{d{\mathbf {\bar {u}} }_{i}} \over {dt}}+{{1} \over {v_{i}}}\oint _{S_{i}}{\mathbf {f} }\left({\mathbf {u} }\right)\cdot {\mathbf {n} }\ dS={\mathbf {0} }.} 同樣的，可以通過對單元平均值进行内插或外推来重建交界面通量的值。實際的數值將取决於問題的幾何形狀和軮格結構。 有限体积方案是守恆的，因為單元平均会通过交界面通量而變化。換句話說，某個單元所損失的物理量，必定會通過交界面而被另一單元所獲得！ Eymard, R. Gallouët, T. R., Herbin, R.（英语：Raphaèle Herbin） (2000) The finite volume method Handbook of Numerical Analysis, Vol. VII, 2000, p. 713–1020. Editors: P.G. Ciarlet and J.L. Lions. Hirsch, C. (1990), Numerical Computation of Internal and External Flows, Volume 2: Computational Methods for Inviscid and Viscous Flows, Wiley. Laney, Culbert B. (1998), Computational Gas Dynamics, Cambridge University Press. LeVeque, Randall (1990), Numerical Methods for Conservation Laws, ETH Lectures in Mathematics Series, Birkhauser-Verlag. LeVeque, Randall (2002), Finite Volume Methods for Hyperbolic Problems, Cambridge University Press. Patankar, Suhas V. (1980), Numerical Heat Transfer and Fluid Flow, Hemisphere. Tannehill, John C., et al., (1997), Computational Fluid mechanics and Heat Transfer, 2nd Ed., Taylor and Francis. Toro, E. F. (1999), Riemann Solvers and Numerical Methods for Fluid Dynamics, Springer-Verlag. Wesseling, Pieter (2001), Principles of Computational Fluid Dynamics, Springer-Verlag. LeVeque, Randall. Finite Volume Methods for Hyperbolic Problems. 2002 [2020-12-23]. ISBN 9780511791253. （原始内容存档于2020-10-23）.  Fallah, N. A.; Bailey, C.; Cross, M.; Taylor, G. A. Comparison of finite element and finite volume methods application in geometrically nonlinear stress analysis. Applied Mathematical Modelling. 2000-06-01, 24 (7): 439–455. ISSN 0307-904X. doi:10.1016/S0307-904X(99)00047-5 （英语）.  Ranganayakulu, C. (Chennu). Chapter 3, Section 3.1. Compact heat exchangers : analysis, design and optimization using FEM and CFD approach. Seetharamu, K. N. Hoboken, NJ. ISBN 978-1-119-42435-2. OCLC 1006524487.  Finite volume methods （页面存档备份，存于互联网档案馆） by R. Eymard, T Gallouët and R. Herbin（英语：Raphaèle Herbin）, update of the article published in Handbook of Numerical Analysis, 2000 Rübenkönig, Oliver. The Finite Volume Method (FVM) – An introduction. （原始内容存档于2009-10-02）. , available under the GFDL. FiPy: A Finite Volume PDE Solver Using Python （页面存档备份，存于互联网档案馆） from NIST. CLAWPACK （页面存档备份，存于互联网档案馆）: a software package designed to compute numerical solutions to hyperbolic partial differential equations using a wave propagation approach