English    手机客户端
客户通道  |  员工通道  |  企业邮箱
    首页  |   聆听敬业  |   产品介绍  |   科研创新  |   健康频道  |   人才需求  |   视听在线
 
FDMFVMFEM之间到底有没有联系

发布日期: 2019-11-12

FDMFVMFEM之间到底有没有联系


     在7月24-25日甘肃省工商局、甘肃省个体劳动者协会、甘肃省私营企业协会举办的“艰苦创业 本人很少写程序,但是自认对固体的FEM,流体的FDM和FVM理论比较了解。下面从数值方法的角度来说说。所有求解方程的数值方法第一核心是插值算子简单的说:有N个插值点,上面的函数值你都知道了,插值算子I就是一个映射:把映射成给定域上的u(x)函数。另外,从实现方便的角度,通常这个插值为线性的,也就是这样:有了插值算子,同时插值又是线性的,我们就可以求出微分算子和积分算子。比如:微分算子:积分算子:方程假设是的形式,是微分算子(不一定是线性的),把上述微积分算子给倒腾进去,就可以得到:形式的方程。这样,要求的连续解u(x)我们就可以用一堆离散的系数u_i表示出来了,只要我们把u_i求对了,问题就解决了~~,而对应的就是所谓基函数basisfunction或形函数shapefunction,这些基函数所张成的n维线性空间就是我们能求出来的解可能存在的空间,是u(x)实际可能存在的无穷维空间的一个子集,这个近似程度就是通常所说的n阶精度。推广一点:这个空间点x_i可以是在计算域上的空间点,也可以是某个频率空间上的一个频率;函数值u_i可以是该点的函数值u(x=x_i),也可以是这点的导数(紧致格式?)或者谱空间的系数。另外需要注意,方程的不同项,插值方法可以不一样!根据不同项的特点,可以选取不同的插值方法取得更好的效果;FVM为例,Fluent和OpenFOAM的FVM,把点放在网格中心位置,可以认为采用的基函数是一阶线性的大平板:-),这样只要有中心点的值和中心点的梯度,就能重构出单元内的解,但是对于对流项和扩散项,可以采用其他的格式。类似的,不同的离散单元,插值方法也可以不一样!,比如上风格式upwindscheme,当地速度方向不一样,采用的插值点也不一样~~同样的,不同维度的插值方法也可以不一样,比如时间和空间,不过文献里一般先对空间进行离散,时间算子先不离散,把空间的搞清楚了,就成了一个超大型ODEs常微分方程组,接下来再玩Euler,龙格库塔,隐式等问题。FVM和FEM都是空间离散方法。FDM可以离散时间。甚至,多个计算步骤的插值方法也不一样,插值算法也不一定能显式地描述出来(Fluent的最小二乘法求梯度)~反正只要是想要得到你手里没有的值,又没有函数可以算,就得插一下~~上面只是达成解的离散,方程还是连续的,计算机还是没法解。下面要把方程也给离散了,计算机才会玩~~这涉及到数值方法的另一个核心:投影,搞FEM的人叫加权余量法,玩FDM和FVM的我感觉还没想这么深入~~。其实就是把方程和一个试函数testfunction即进行积分,得到一个数字,然后令其为0~~~:逼格高点儿的说法是把高维问题投影成一系列低维问题去解这样就可以把一个连续的方程,变成M个代数形式的方程,每个方程有N个未定的系数u_i下面是一些细节:假设L算子是线性的,u_i可以提出来,最终形式差不多是A*u=b的线性代数矩阵形式。如果是非线性的,会有u_i的交叉相乘项,很麻烦。如果phi和psi是正交的,并且L是线性的,那么A就是对角矩阵(三对角、5对角之类的)~~u直接可以求出来。。。所以正交性一大好处是交叉项莫名其妙没有了:-)理论上,如果phi和psi一样,对于自伴随算子,矩阵A能搞成对称的,如果phi和psi能搞成算子自伴随算子L的特征函数,貌似可以达到A=I==>x=b,直接求出来了。。。如果试函数和基函数取成一样,那么这类方法叫Galerkin方法,好处是可以重复使用基函数~~例子:最简单的FDM,方程只要在x=x_i这些插值点上成立即可,psi_j(x)=delta(x),也就是狄拉克函数,这种方法又叫配点法,老简单了~~;但是注意,对于配点法,投影点和插值点可以不一样!对于FVM,....对于FEM,更高级一点,真正是要玩积分的~~通量重构问题~上述所谓讨论的都是一个单元的情况,对于单纯的FDM,反正玩配点,配遍整个计算域,把方程个数搞够就行~但流体力学方程的三个基本性质导致CFD有额外的问题:1.非线性,动量方程对于速度u存在u*grad(u)非线性,会出激波;2.对流性,密度温度等物性随着速度跑来跑去,跟下游没啥关系;3.守恒性,单元界面进出应该一样。方程进行体积分之后,利用Gauss公式可以把通量项精确地化为面积分,大家一般认为体积分难算,面积分好算,所以就都这么干了~可惜这么干的时候暴露了一个问题,两个单元分别计算出的同一个公共界面的积分通量是不一样的,这与守恒性是矛盾的。所以要进行界面通量的重构。对于不那么纯粹的FDM,也有类似的问题,计算导数时插值点可以从上游多取几个,也可以从下游多取几个,同样的,计算的对流通量在构造方程中通量的微分时又可以进行插值的选择~~搞得大家头大得不行~对于FEM和FVM而言,情况还简单点儿,一个界面两侧只有两个单元,所以只要重构一个就行了(对于FDM,还可以搞得更复杂)。这还对这个通量提出一个对称性要求一个简单方法是两边平均一下算了,但是波形会被拉宽~,精度不高;而且由于非线性,这东西很不好搞~然后有大神就搞出一堆重构通量的格式和Riemann求解器之类的玩意儿~总之要把它搞对,并使得到的解的发展满足一定的数学物理限制,比如很有名的TVD,单调,保单调等概念,就是对解的发展的一种限制:后面的速度再快也不穿越能跑到前面去。离题已经万里了,回到题主的CFD算法的区别和联系,不同的数值方法教科书上的推导方法千奇百怪,但是可以归结到这样的框架下。先看方程每一步算法用是怎么插值的再看用了什么样的投影,用了什么试函数。对于CFD问题,还要看怎么重构对流通量比如Fluent,它用的FVM,投影的试函数是1。而非定常项在时间上根据阶数取不同的阶的多项式,空间上应该是取的线性基函数;后面的对流项首先也是假设基函数为线性,基于标量的Green-Gauss定理,用边界面上的值重构出中心点的梯度,(但是此时边界的标量值还不知道呢。。。又要通过边界周围的单元中心点插值来构造。。。)得到了中心点梯度之后,单元内就搞清楚了;再用界面两侧单元的中心点值和梯度,构造边界的值,这个梯度在使用的时候还会受到Limiter的限制。构造完边界的值之后,还要根据规则构造出通量Flux,最后带到方程里计算。。。写的太乱了,总结一下关键特点,FDM基函数是多项式,插值点是网格点,试函数是Dirac函数,投影点一般在半网格点;FVM通常形函数是线性的,但是额外有梯度限制器,试函数是1,通量还有重构;FEM最广义,啥都有;同时还有个额外的特点,FVM和FEM的空间刨分是不重合的很多单元,但是FDM如果按照包含的点来计算,是交错的。所以并行需要用Ghostcell,交换的数据量大。补充,FEM还可以在搞带曲线/曲面边界的问题~比如等参元把基函数当单元的变形形函数再用一遍~~p.s.随便转载,我也懒得加参考文献,cfdonlinewiki都有,FLUENTTheoryGuide也很详细~~

 
 
                                                                   
                                                                  2019-11-12 20:52:24
 
上一篇 :上一篇:表面活性剂的种类和成分都有哪些有没有一种确定无毒害及对人类恶性副作用的表面活性剂如果有是什么          下一篇: 下一篇:Tick数据在技术上究竟是什么东西
CopyRight © 2006-2010 All Rights Reserved 甘肃敬业农业科技有限公司 版权所有
公司地址:甘肃省民勤县城东开发区     联系电话:0935—4133138  全国客服电话:400-188-6639  
备案号:陇ICP备05000242号  网站地图