有限体积法matlab 您所在的位置:网站首页 有限体积法代码 有限体积法matlab

有限体积法matlab

2024-07-05 18:09| 来源: 网络整理| 查看: 265

做了剩下有限体积法(Ferziger, Ch.4[1])另外两个Example(测试数值扩散的那一算例,书里似乎并没有给出CDS矩阵奇异下的求解方法,我直接按MATLAB里AB求解,结果并不完全一致):

Scalar Transport in a Known Velocity Field Testing the Numerical Diffusion

果然FVM比FDM麻烦不少,一开始还是按面向过程写,中途感到不对劲于是写成类了。写到一半去搜了下Openfoam[2]发现自己写的类定义(思路)和它居然差不太多,挺巧。

*网页端文章还可以把背景图片搞成这种花里胡哨的可还行 问题 Example 2 Scalar Transport in a Known Velocity Field

考虑标量输运方程

equation?tex=%5Cint_S%5Crho%5Cphi%5Cbm%7Bv%7D%5Ccdot%5Cbm%7Bn%7D+%5C+dS%3D%5Cint_S%5CGamma%5Cbm%7B%5Cnabla%7D%5Cphi%5Ccdot%5Cbm%7Bn%7D%5C+dS

算一个给定速度场(驻点附近的无粘流动,

equation?tex=u_x%3Dx%2Cu_y%3D-y ,流线如图)、边界条件等参数下,标量场 equation?tex=%5Cphi 的分布情况。

边界条件具体为:

左侧(wall)和上侧(inlet)为第一类边界,左侧 equation?tex=%5Cphi 为从0到1线性分布(如图),上侧 equation?tex=%5Cphi%3D0 ; 右侧(outlet)和下侧(symmetric boundary)为第二类边界, equation?tex=%5Cphi_n%3D0

要求扩散项采用CDS,对流项分别采用CDS和UDS计算。

984f640a916dbb59b407d61cd8d488d8.png 几何与边界条件 Example 3 Testing the Numerical Diffusion

考虑具有阶梯剖面(间断)斜向均匀流中的对流问题(无扩散项)

4b67e042f84664c8d67bf3043de46941.png

面对这一问题,CDS构造出的系数矩阵A主对角元均为0,矩阵奇异难以求解。总之就是验证CDS会产生震荡以及UDS通过数值扩散避免了震荡的发生。(TVD格式消除震荡暂时没考虑)

基本思路

设计了三个类:

solver grid cell

solver类的目标在于针对设定的物理域、计算域、边界条件、各类参数及求解方法等,建立一个计算求解方案。它包含了grid类(网格),进一步的,grid类中每一个网格单元储存为cell对象。

我是按照自底向上,即cell->grid->solver的过程编写的,毕竟只是解一两道题,而非编写一套CFD程序,不需要太宏观的架构。

参数有两套存储形式,一是在solver类中同意存储所有网格单元上的各类信息,二是分别存储到对应的网格单元上。于是差分格式-积分近似这类计算在网格单元(cell类)中完成,而边界条件的处理及总体系数矩阵的组集则在solver类中计算。

此外,写边界条件设置时需要脑子清醒(比如CDS改成单边近似这种事)。

一些结果与讨论

先分别给出40*40网格下,扩散率

equation?tex=%5CGamma 分别取0.01和0.001时,CDS求解出的标量场等值线图(对照书上原图应该基本是一模一样的,一丝区别是书上还把边界值给画了进去,这里我就懒得整了)

24d7990417bf013ed932e2e74ed7562f.png 40*40 Gamma=0.01 CDS Isolines

8b4321ce465f0fa6fc45715c27d773e3.png 40*40 Gamma=0.001 CDS Isolines

顺便看看40*40网格下的系数(也是稀疏)矩阵A,长得也符合预期:

672fc9371691f2f63cf3c1fc709eb4e9.png 40*40 Gamma=0.01 CDS sparse matrix A

下面两张分别是320*320精细网格下的CDS和更直观的3d图示:

3a328fd228d5425394850a10b46d5df3.png

7cda006510e0f98c53a998b9cfbb0d40.png

在粗糙网格(10*10)下,CDS出现了震荡解,而UDS的不震荡特性也得到了验证:

3688e61e0b4c0dc5677774ab39d6e010.png 10*10 Gamma=0.001 CDS oscillation (看颜色深浅深浅深浅)

fc9bbddb3e5926ec0faebdc10e7037d5.png 10*10 Gamma=0.001 UDS no oscillation

然后是Example 2 左侧边界总通量(随网格量变化)的计算结果,与书里一致(书上通量值莫名其妙乘了个100&



【本文地址】

公司简介

联系我们

今日新闻

    推荐新闻

    专题文章
      CopyRight 2018-2019 实验室设备网 版权所有