- CarieVinne
-
我也强答一下,不为传播知识,而是为了自己复习一下。所谓的有限元,有限体积和有限差分,都是数值计算里面的工具;而这些工具是整体数值方法的一部分(可能是最重要的)。数值方法,分这么几步:物理模型—边界条件—离散方法—代数方程求解。每一个都有自己的问题,物理模型是控制方程的类型,比如流体方程在不通条件下呈现不同类型的偏微分方程;边界条件不用说,是具体问题的关键;离散方法,也就是fem、fdm、fvm,是把连续方程离散化的关键一步,上为物理模型提供离散解决方案,下为数值求解提供代数方程;代数方程就是迭代求解了,比如并行求解或者瀑布网格的串行求解。离散方法有两个问题:时间离散和空间离散。原则有几个:齐次方程的误差项最小化,而且误差不积累不扩散不产生振荡,还要保持守恒和对称性。有一点需要注意的是,数值方法只对物理模型负责,即离散数值方法要尽量反映物理方程的光滑结果;数值方法不对实际现象负责(该负责的是物理方程),数值方法和实验值之间的误差包含两部分:物理模型和实际过程的误差、数值方法和物理方程(模型)之间的误差。而结果还有第三部分,即求解结果和数值方法的误差(比如机器的舍入误差,收敛准则,网格尺度)。
- nicehost
-
可以归结到这样的框架下。先看方程每一步算法用是怎么插值的 再看用了什么样的投影,用了什么试函数。对于CFD问题,还要看怎么重构对流通量.比如Fluent,它用的FVM,投影的试函数是1。而非定常项在时间上根据阶数取不同的阶的多项式,空间上应该是取的线性基函数;后面的对流项首先也是假设基函数为线性,基于标量的Green-Gauss定理,用边界面上的值重构出中心点的梯度,(但是此时边界的标量值还不知道呢。又要通过边界周围的单元中心点插值来构造。)得到了中心点梯度之后,单元内就搞清楚了;再用界面两侧单元的中心点值和梯度,构造边界的值,这个梯度在使用的时候还会受到Limiter的限制。构造完边界的值之后,还要根据规则构造出通量Flux,最后带到方程里计算。写的太乱了,总结一下关键特点,FDM基函数是多项式,插值点是网格点,试函数是Dirac函数,投影点一般在半网格点;FVM通常形函数是线性的,但是额外有梯度限制器,试函数是1,通量还有重构;FEM最广义,啥都有; 同时还有个额外的特点,FVM和FEM的空间刨分是不重合的很多单元,但是FDM如果按照包含的点来计算,是交错的。所以并行需要用Ghost cell,交换的数据量大。补充,FEM还可以在搞带曲线/曲面边界的问题。比如等参元把基函数当单元的变形形函数再用一遍。
- 苏萦
-
这个问题也困扰我好久,这些花里胡哨的名号后边到底有何玄机。以一维问题为例,你分别用三种方法进行二阶中心格式离散,你会发现得到的系数矩阵都是一样的三对角矩阵。因为二阶中心差分的情况下,大家都是利用‘直接邻居"的信息,所以三种方法得到的离散形式的是全等的。“Different numerical methods are usually more similar than they are distinct.”The Mathematical Theory of Finite Element Methods。但是再更高阶的情况下,三种方法就分道扬镳了,各自用不同的策略寻找高阶信息。关于三种方法思路的区别,J.S HestHaven 有一个很形象的阐述。参见这个讲稿,Discontinuous Galerkin methods Lecture 1 - Brown University。在他的书《Nodal discontinuous Galerkin methods》里,稍微详细地阐述这一观点。我现在是觉得,学界有兜售概念的倾向,毕竟这样显得创新更多。其实大家都差不多那么回事。