声振论坛

 找回密码
 我要加入

QQ登录

只需一步,快速开始

查看: 1934|回复: 0

[其他相关] CFD理论 | 聊一聊有限体积法!

[复制链接]
发表于 2022-6-21 09:40 | 显示全部楼层 |阅读模式

马上注册,结交更多好友,享用更多功能,让你轻松玩转社区。

您需要 登录 才可以下载或查看,没有账号?我要加入

x
一、求解对象
首先,提一下我们的主角Navier-Stokes方程:
1.png
为了能够通过SIMPLE算法求解Navier-Stokes方程,我们需要将该方程改写为下列矩阵形式的方程:
2.png
其中,M 为了系数矩阵,U 是每个网格未知的速度矢量,B 为右侧项。

一旦我们将Navier-Stokes方程写成线性化矩阵形式,我们就能够通过各种线性方程求解器来求解迭代过程中的速度场。

因此,本文主讲解重点是将Navier-Stokes方程转换为矩阵形式,然后通过有限体积法求解。

二、有限体积法
为了方便演示,我们以稳定、不可压缩的Navier-Stokes方程为例:
3.png
采用三维多面体网格进行离散化。

在二阶有限体积法中,流动变量 (p、T、U) 沿着网格线性变化,这些流动变量,包括压力、温度、速度等,会被存储网格中心(P)。
4.png
我们同样需要考虑相邻网格,通常每个网格都有M 个相邻网格,流动变量存储在这些网格中心 (N)。
5.png
这就是有限体积最原始的样子。

三、有限体积法工作原理
首先,我们需要沿着网格P 对Navier-Stokes方程进行积分:
6.png
通过积分的加法运算,意味着我们可以把上式括号里不同项分开,再对他们逐个积分:
7.png
在方程的左边,我们有对流项。方程右边有压力梯度、扩散项,还有一些源项,这里的源项是重力项。

1. 源项
我们先来看一下源项,由于重力加速度g 是恒定,因此可以提到积分号外部,得到:
8.png
Vp 为网格P 的体积。回顾一下,前面提到的矩阵形式:
9.png
因此源项中,重力g 乘以网格体积Vp 完全不依赖速度,可以添加到方程右边(向量B),而任何与速度成正比的东西都会被加到左边的系数矩阵中,所以常数源项,比如重力,很容易处理。

如果源项线性依赖速度要怎么处理?

假设源项SU 被添加到Navier-Stokes方程(S 表示标量):
10.png
同样需要将该源项在网格内进行积分:
11.png
(首先,S 是标量,可以放到积分外Sp;由于这是二阶的有限体积分法,速度在网格内的变化也是线性的,因此可以通过w 网格中心的速度Up 以及其他位置到网格中心P 点的距离获得速度值,从而对速度的体积积分进行展开;最后在将括号里面的加法进行展开,第二项的积分恒等于0,这是网格中心的定义。)

这就是线性源项:
12.png
重新回到矩阵形式,如果我们把源项挪到左边-SpVp 可以添加到矩阵M 中,或者SpUpVp 添加到矩阵B 中。

因此,对于源项我们有两种不同的处理方法:将它作为隐式项添加到左边,或者让将它作为显式项加到右边。

这样处理会有什么区别呢?

如果是隐式处理,将矩阵M 相加,则会得到下列矩阵:
13.png
这是一个对角矩阵,因此我们现在关注的是网格的中心,矩阵内非对角项则是与相邻的网格相关。

如果是显式处理,则会变为:
14.png
在CFD求解中,求解器通常会动态选择使用显式处理或隐式处理,如果S项是负的,而我们想要对角线项的贡献是正的,则应该选择隐式处理,可以增强对角线优势,使矩阵更加稳定。

如果S 项是负的,这就减少了对角线的优势,所以应该选择显式处理。

因此,源项的处理取决于我们是否要改善求解的对角线优势。

如果是非线性源项呢?

假如我们面对的是下列源项:
15.png
我们通常会尝试线性化源项:
16.png
对源项的积分,由于上一次迭代的速度是已知的,因此可以得到:
17.png
这是一种混合的隐式+显式处理方法。同理,我们可以采用同样的方式处理速度的立方项。

2. 对流项与扩散项
18.png
对流项与扩散项具有散度计算 (▽·),因此他们更难处理。

由于篇幅有限,这里主要讲解对流项。

我们一般是用散度定理处理对流与扩散项。

散度定理指的是对任意向量的散度积分等价于向量的曲面积分:
19.png
因此,我们可以通过散度定理修改对流项及扩散项,算出积分:
20.png
速度,单位法向量和表面的点积就是流出表面的体积流量:
21.png
括号外面的速度 (U) 就是我们需要求解的量。

接下来我们需要分解曲面积分:
22.png
速度沿着面的变化是线性的,因此我们可以取面中心的速度Ufi 作为速度面积分的近似【1】。
23.png
这样一来我们就消除了积分,只需要做求和。

但是这里Ufi 其实是未知的,我们只知道网格中心的变量值。因此我们需要进行插值。
24.png
在CFD中提供多种插值方式来求解面速度Ufi,包括:迎风、二阶/线性迎风、中心差分、QUICK。

小结一下,对流项我们可以写为:
25.png
因此,我们可以将对流项加入矩阵形式当中:
26.png
如下所示,对流项会带来对角线项和非对角项,这是相邻网格连通性的体现:\mathcal{M}=\left(M11  M12  M13  ...  0  M21  M22  0  ...  0 0 M23  M33  ...  0  ┆ ┆ ┆ ┆ ┆ 0 0 0  ...  Mmm\right)

四、小结
Navier-Stokes方程中的每一项都能够一一积分:
27.png
每一项对矩阵的贡献不同。我们需要做的就是将这些贡献加起来组成完整的矩阵形式MU=B 这些贡献会矩阵带来对角线项和非对角线项,如:
28.png

参考:
[1] Jasak H . Error Analysis and Estimation for the Finite Volume Method With Applications to Fluid Flows. 1996.Fluid Mechanics101

来源:BB学长微信公众号(ID:fj_chenzhibin),作者:CFD控。

回复
分享到:

使用道具 举报

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

QQ|小黑屋|Archiver|手机版|联系我们|声振论坛

GMT+8, 2024-12-22 23:58 , Processed in 0.078115 second(s), 21 queries , Gzip On.

Powered by Discuz! X3.4

Copyright © 2001-2021, Tencent Cloud.

快速回复 返回顶部 返回列表