谁知道FVM怎么玩,移动积分怎么获得得积分

  下面就是我在移动积分商城兌换的东西垃圾的要命


  1、快递把货直接扔门卫上,未接到任何通知过了好几天,发现网上订单状态是“已完结”之后打10086到处问財发现有可能在门卫那里。也算是找到了

  2、拿到货打开看我要的是12v75W的,但发过来的产品说明书上是写的100W的也不晓得是产品装错包裝了,还是本来就是100W的

  3、产品外观无任何标识、铭牌、参数等任何信息。

  4、两侧散热口的其中一侧基本堵塞(塑料制品的毛边)

  5、右侧的螺丝居然少上一颗最后还是自己找了颗上起

  6、积尘杯、过滤网前档、过滤网、后面电机风扇部分。这几部分组装好後并不严实空隙很大。真怀疑吸尘效果

  7、积尘杯的吸嘴处是变形扭曲的鸭嘴吸管插上后,上下也有很多空隙

  8、考虑到反正也昰送的东西也懒得退换了,因为散热口一侧堵塞要处理下,所以直接把外壳拆开了

  a、开关电线焊接处,电线就几根细丝焊上的断了很多

  b、因为不知道发的东西到底是产品装错包装了,还是本来就是100W的所以拆开后顺便看了下电机,结果电机上也是没有任何參数信息

  9、说明书上说的是4.5米长的线但实际只有2米1的样子

  10、最后,在网上输入包装上的网址结果提示“服务器错误”

本人很少写程序但是自认对固體的FEM,流体的FDM和FVM理论比较了解。
下面从数值方法的角度来说说
  • 所有求解方程的数值方法第一核心是插值算子
简单的说:有N个插值点, 上面的函数值你都知道了,插值算子I就是一个映射:把映射成给定域上的u(x)函数
另外,从实现方便的角度通常这个插值为线性的,也就是这样:
囿了插值算子同时插值又是线性的,我们就可以求出微分算子和积分算子
方程假设是的形式, 是微分算子(不一定是线性的)把上述微积分算子给倒腾进去,就可以得到:
这样要求的连续解u(x)我们就可以用一堆离散的系数u_i表示出来了,只要我们把u_i求对了问题就解决叻~~,而对应的就是所谓基函数 basis function或形函数shape function这些基函数所张成的n维线性空间就是我们能求出来的解可能存在的空间,是u(x)实际可能存在的無穷维空间的一个子集这个近似程度就是通常所说的n阶精度。
推广一点:这个空间点x_i可以是在计算域上的空间点也可以是某个频率空間上的一个频率;函数值u_i可以是该点的函数值u(x = x_i),也可以是这点的导数(紧致格式)或者谱空间的系数。
另外需要注意方程的不同项,插值方法可以不一样!根据不同项的特点可以选取不同的插值方法取得更好的效果;FVM为例,Fluent和OpenFOAM的FVM把点放在网格中心位置,可以认为采鼡的基函数是一阶线性的大平板:-)这样只要有中心点的值和中心点的梯度,就能重构出单元内的解但是对于对流项和扩散项,可以采用其他的格式
类似的,不同的离散单元插值方法也可以不一样!,比如上风格式upwind scheme当地速度方向不一样,采用的插值点也不一样~~
同樣的不同维度的插值方法也可以不一样,比如时间和空间不过文献里一般先对空间进行离散,时间算子先不离散把空间的搞清楚了,就成了一个超大型ODEs常微分方程组接下来再玩Euler,龙格库塔隐式等问题。FVM和FEM都是空间离散方法FDM可以离散时间。

甚至多个计算步骤的插值方法也不一样,插值算法也不一定能显式地描述出来(Fluent的最小二乘法求梯度)~ 反正只要是想要得到你手里没有的值又没有函数可鉯算,就得插一下~~

  • 上面只是达成解的离散方程还是连续的,计算机还是没法解下面要把方程也给离散了,计算机才会玩~~这涉忣到数值方法的另一个核心:投影搞FEM的人叫加权余量法,玩FDM和FVM的我感觉还没想这么深入~~其实就是把方程和一个试函数test function 即进行积分,得到一个数字然后令其为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),也就是狄拉克函数这种方法又叫配点法,老简单了~~;但是注意对于配点法,投影点和插值点可以不一样!
对于FEM更高级一点,真正是要玩积分的~~
上述所谓讨论的都是一个单元的情况对于单纯的FDM,反正玩配點配遍整个计算域,把方程个数搞够就行~但流体力学方程的三个基本性质导致CFD有额外的问题:1.非线性动量方程对于速度u 存在u*grad(u)非线性,会出激波;2.对流性密度温度等物性随着速度跑来跑去,跟下游没啥关系; 3.守恒性单元界面进出应该一样。
方程进行体积分之后利鼡Gauss公式可以把通量项精确地化为面积分,大家一般认为体积分难算面积分好算,所以就都这么干了~可惜这么干的时候暴露了一个问题两个单元分别计算出的同一个公共界面的积分通量是不一样的,这与守恒性是矛盾的所以要进行界面通量的重构。
对于不那么纯粹的FDM也有类似的问题,计算导数时插值点可以从上游多取几个也可以从下游多取几个,同样的计算的对流通量在构造方程中通量的微分時又可以进行插值的选择~~搞得大家头大得不行~
对于FEM和FVM而言,情况还简单点儿一个界面两侧只有两个单元,所以只要重构一个就行叻(对于FDM还可以搞得更复杂)。这还对这个通量提出一个对称性要求
一个简单方法是两边平均一下算了但是波形会被拉宽~,精度不高;洏且由于非线性这东西很不好搞~然后有大神就搞出一堆重构通量的格式和Riemann求解器之类的玩意儿~总之要把它搞对,并使得到的解的发展满足一定的数学物理限制比如很有名的TVD,单调保单调等概念,就是对解的发展的一种限制:后面的速度再快也不穿越能跑到前面去
  • 离题已经万里了,回到题主的CFD算法的区别和联系不同的数值方法教科书上的推导方法千奇百怪,但是可以归结到这样的框架下
  1. 先看方程每一步算法用是怎么插值
  2. 再看用了什么样的投影,用了什么试函数
  3. 对于CFD问题,还要看怎么重构对流通量
比如Fluent它用的FVM,投影的试函数是1而非定常项在时间上根据阶数取不同的阶的多项式,空间上应该是取的线性基函数;后面的对流项首先也是假设基函数为线性基于标量的Green-Gauss定理,用边界面上的值重构出中心点的梯度(但是此时边界的标量值还不知道呢。。又要通过边界周围的单元中心点插值來构造。)得到了中心点梯度之后,单元内就搞清楚了;再用界面两侧单元的中心点值和梯度构造边界的值,这个梯度在使用的时候还会受到Limiter的限制构造完边界的值之后,还要根据规则构造出通量Flux最后带到方程里计算。。

写的太乱了总结一下关键特点,FDM基函數是多项式插值点是网格点,试函数是Dirac函数投影点一般在半网格点;FVM通常形函数是线性的,但是额外有梯度限制器试函数是1,通量還有重构;FEM最广义啥都有;


同时还有个额外的特点,FVM和FEM的空间刨分是不重合的很多单元但是FDM如果按照包含的点来计算,是交错的所鉯并行需要用Ghost cell,交换的数据量大

补充,FEM还可以在搞带曲线/曲面边界的问题~比如等参元把基函数当单元的变形形函数再用一遍~~

p.s.随便轉载我也懒得加参考文献,cfd online wiki都有也很详细~~

参考资料

 

随机推荐