有限差分法(Finite Difference Method, FDM)和有限体积法(Finite Volume Method, FVM)都是用数值解逼近微分方程的真实解的计算方法,其区别主要在于逼近思想、网格划分、格式类型和精度上有所不同。


  • 有限差分法(FDM)

将求解区域离散为差分网格,以有限个网格节点来代替连续的求解域,用网格上的差商来近似代替格点上的空间导数(整理后变为差分代替微分,故称之为差分格式),从而将原来的微分方程转化为以网格节点上的场值作为未知量的代数(差分)方程组,然后进行求解。

从是否对时间进行离散来划分,有半离散格式和全离散格式(前者只离散空间导数,原方程转化为大规模常微分方程组,于是时间推进可利用Runge-Kutta格式);从格式的精度来划分,有一阶、二阶和高阶格式;从导数的差分形式来划分,可分成中心格式和迎风格式;若考虑时间离散(即考虑全离散格式),差分格式还可以进一步分为显式格式、隐式格式、半隐式格式、显隐交替格式等;针对差分格式缺点(格式精度越高,差商依赖的节点越多,边界条件不好处理)进行改进,出现了所谓的紧致差分格式。

差分格式主要通过泰勒展开来构造,因此能很方便控制时间和空间上精度的阶数。目前,常见的差分格式是上述几种不同类型的组合,不同的组合构成不同的差分格式。

FDM主要适用于正交有序的网格,即结构化网格,因此特别适合结构简单、外形规整的计算域。对于外形不是特别复杂,但又不规则的计算域,仍可使用贴体和分块技术来转化为结构化网格。网格单元的尺寸一般需要适应流动情况(例如在有激波、边界层、涡等现象地方网格尺寸应该小)以及满足CFL(Courant-Friedrichs-Lewy)稳定性条件。

FDM数学概念直观,推导自然,是发展较早且比较成熟的数值方法。


  • 有限体积法(FVM)

FVM将求解区域离散为网格(可以是结构化也可以是非结构化类型),然后将其划分为一系列不重合的控制体,对待解的微分方程在单个控制体内进行体积分,利用斯托克斯定理得到微分方程相应的积分形式,然后对方程进行离散求解。

根据未知量所处的位置,离散格式类型可分为两种:一种是未知量处于网格单元中心(cell-centered);一种位于网格节点上(vertex-centered)。前者计算量较大,但精度也比后者高。为了方便,通常使用的是前者。

为了求出控制体内的积分,必须假定场值在网格内之间的变化规律,或者直接给出通量的近似表达式。这便是有FVM格式构造的核心。根据通量导数构造方式,也可以分为中心型格式和迎风型格式两大类。中心型较为特殊,需要使用交错网格,这里不谈。

迎风型格式根据其所用到的物理思想,又可分为通量矢量分裂(Flux Vector Splitting, FVS)、通量差分分裂(Flux Difference Splitting, FDS)、总变差衰减(Total Variation Diminishing, TVD)、波动分裂(Fluctuation Splitting, FS)等格式。其中最为经典的Godunov格式、加权本质无振荡(WENO)格式就是属于FDS一类,而ASUM家族类的格式以及经典的Steger-Warming格式,van Leer格式则属于FVS一类。

根据格式精度,也能分为一阶格式、二阶格式和高阶格式。同样,根据时间是否离散,可以分为半离散格式和全离散格式。对于时间进行离散的格式中,又可分为显式、隐式、显隐交替格式等。像前面的高阶精度格式(TVD、WENO)都喜欢与半离散方式结合,这样容易控制时间和空间精度,缺点是计算开销大。

可以说,FVM中上述格式也吸收借鉴了FDM中格式构造的思想,它们之间也是相互促进的,并非完全独立的。


从数学本质来说,FVM属于加权参量法家族中的子区域法(而限元法则是基于变分原理和加权残量法,可以说FVM是FDM和有限元法之间的结合物)。有限体积法的物理意义清晰,即守恒变量在任意大小的控制体积(乃至对整个计算区域)中满足守恒律,这是FVM的最大优点,而FDM仅当网格非常密时,离散方程才满足积分守恒。

总结二者的典型不同之处:

  1. FVM在复杂区域上容易进行,而FDM实施起来较困难;但FVM使用非结构化网格对复杂区域求解,解的质量与网格质量关系较大。
  2. 对于复杂计算域,若采用贴体网格,FDM中几何量和物理量是耦合运算的,故采用不同的差分格式,这些几何量对计算结果的影响不同,因而会产生所谓几何诱导误差。
  3. 对多维问题而言,高精度(高于二阶)FDM较为容易构造,而FVM的构造和实施比较困难,且多维的引入会带来几何源项。
  4. FDM适合光滑流动(低速流),但对网格光滑性要求较高;FVM适合流场有大梯度或间断的流动(如激波)。

上述文章收录自2018-11-14 15:36叶落无声的回答,具体请看

有限差分法和有限体积法的区别? - 知乎

有限差分法和有限体积法的区别相关推荐

  1. 有限元法、有限差分法和有限体积法的区别(转载)

    有限元法.有限差分法和有限体积法的区别(转载) (2011-06-12 21:52:50) 有限差分方法(FDM)是计算机数值模拟最早采用的方法,至今仍被广泛运用.该方法将求解域划分为差分网格,用有限 ...

  2. 有限体积法、有限差分法和有限元法介绍

    学过弹性力学的人应该都知道什么是有限元,而对学计算流体力学的来说,有限差分和有限体积法也是两种非常重要的方法.三者虽然目前形式各异,但是思想上有很多类似的地方.CFD(Computational Fl ...

  3. 计算流体力学的基本方法简介(有限差分法、有限元法、有限体积法)

    1.有限差分法: 原理,用差商代替微商: 优缺点: 2.有限元方法: 有限元剖分方法: 特点: 3.有限体积法: 两种方式,格心格式和格点格式: 特点:

  4. 有限体积法及其网格简介

    有限体积法及其网格简介 有限体积法使目前CFD领域广泛使用的离散化方法,其特点不仅表现在对控制方程的离散结果上,还表现在所使用的网格上. 1.有限体积法的基本思想 有限体积法(Finite Volum ...

  5. 有限体积法(6)——离散格式的特性

    为了能够在有限网格数下得到符合物理现实的数值解,就需要离散格式满足某些特性.最重要的几个有:守恒性.有界性和输运性. 守恒性 守恒来自很自然的物理规律,比如一个无内源的流体域,无论它有几个入口和几个出 ...

  6. 有限体积法求解二维方腔流(一)——动量方程和连续性方程的离散

    1. 有限体积法求解二维方腔流–理论手册 1.1. 不可压缩流体控制方程 连续性方程 ∇⋅U=0(1)\nabla \cdot U=0 \tag{1} ∇⋅U=0(1) 动量方程 ∂U∂t+∇⋅(UU ...

  7. 二维有限体积 matlab,二维有限体积法计算热传导及源码.pdf

    二维有限体积法计算热传导及源码 //#include "stdafx.h" #include #include #include #include #include using n ...

  8. 有限体积法(2)——二维、三维扩散方程的离散推导

    稳态扩散方程: ∇⋅(Γ∇ϕ)+Sϕ=0(1)\nabla \cdot ( \Gamma \nabla \phi) + S_\phi =0 \tag{1} ∇⋅(Γ∇ϕ)+Sϕ​=0(1) 在有限控制 ...

  9. 二阶常微分方程的数值解法(中心差分法和有限体积法)

    二阶常微分方程的数值解法(中心差分法和有限体积法) 这里我们介绍中心差分法和有限体积法求解方程. 题目: 用差分法的中心差分格式和有限体积法求解两点边值问题 u′′−α(2x−1)u′−2αu=0,0 ...

最新文章

  1. content 内容生成技术2
  2. 史上最大“云办公”实验开始,你参加了吗?
  3. c 语言26个小写字母,26个字母表大小写
  4. *【HDU - 1042 】 N! (大数乘法)
  5. 中关村windows11 32位专业版镜像v2021.07
  6. Linux系统调用表(system call table)
  7. 扩展Jquery方法创建LigerUI Grid
  8. JAVA代码规范(二)
  9. 用Python快速实现YOLO目标检测
  10. 深度学习CNN系列笔记
  11. 用java编写简单的仓库管理_仓库管理系统+可视化界面java编写
  12. 中国石油大学-《现代应用文写作》第一阶段在线作业
  13. npy/npz/pkl/csv长字符串存储
  14. 被互联网婚恋榨干的你,还会相信爱情吗?
  15. EBS 表 Mtl_Material_Transactions及相关表说明
  16. UNITY之EventTrigger,EventListener
  17. 计算机一级电子表格计算公式,计算机一级电子表格(23页)-原创力文档
  18. 【腾讯面经】泥腿子大学如何进击大腾讯(2014腾讯校招从笔试到拿到offer)
  19. 个人站长不要把理想和青春赌到网站上,写得太对了!
  20. Spring Boot 生产中的 16 条最佳实践

热门文章

  1. 数据分析实战<一>脑电(EEG)分析
  2. 茗创:脑电数据处理业务
  3. 【web】movie review——静态页面训练、css训练
  4. 浅谈数据库用户表结构设计,第三方登录
  5. decodeURIComponent() 方法
  6. 动手学数据分析-数据可视化
  7. 【C++】win 10:VC 6.0 中文版下载、安装、使用
  8. k8s学习-kubectl命令常用选项详解与实战
  9. Android Studio连接手机和夜神模拟器
  10. 个性注释,让你的代码飞起来