聊一聊有限体积法

article/2025/10/23 15:41:03

导读:有限体积法的工作原理。

一、求解对象

首先提一下我们的主角Navier-Stokes方程:

为了能够通过SIMPLE算法求解Navier-Stokes方程,我们需要将该方程改写为下列矩阵形式的方程:

其中为了系数矩阵,是每个网格未知的速度矢量,为右侧项。

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

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

二、有限体积法

为了方便演示,我们以稳定、不可压缩的Navier-Stokes方程为例:

采用三维多面体网格进行离散化。

在二阶有限体积法中,流动变量(、、)沿着网格线性变化,这些流动变量,包括压力、温度、速度等会被存储网格中心()。

我们同样需要考虑相邻网格,通常每个网格都有个相邻网格,流动变量存储在这些网格中心()。

这就是有限体积最原始的样子。

三、有限体积法工作原理

首先,我们需要沿着网格对Navier-Stokes方程进行积分:

通过积分的加法运算,意味着我们可以把上式括号里不同项分开,再对他们逐个积分:

在方程的左边,我们有对流项。方程右边有压力梯度、扩散项,还有一些源项,这里的源项是重力项。

3.1 源项

我们先来看一下源项,由于重力加速度是恒定,因此可以提到积分号外部,得到:

为网格的体积。回顾一下,前面提到的矩阵形式:

因此源项中,重力乘以网格体积完全不依赖速度,可以添加到方程右边(向量),而任何与速度成正比的东西都会被加到左边的系数矩阵中,所以常数源项,比如重力,很容易处理。

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

假设源项被添加到Navier-Stokes方程(表示标量):

同样需要将该源项在网格内进行积分:

(首先是标量,可以放到积分外;由于这是二阶的有限体积分法,速度在网格内的变化也是线性的,因此可以通过w网格中心的速度以及其他位置到网格中心点的距离获得速度值,从而对速度的体积积分进行展开;最后在将括号里面的加法进行展开,第二项的积分恒等于0,这是网格中心的定义)

这就是线性源项:

重新回到矩阵形式,如果我们把源项挪到左边可以添加到矩阵中,或者添加到矩阵中。

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

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

如果是隐式处理,将矩阵 相加,则会得到下列矩阵:

这是一个对角矩阵,因此我们现在关注的是网格的中心,矩阵内非对角项则是与相邻的网格相关。

如果是显式处理,则会变为:

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

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

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

如果是非线性源项呢?

假如我们面对的是下列源项:

我们通常会尝试线性化源项:

对源项的积分,由于上一次迭代的速度是已知的,因此可以得到:

这是一种混合的隐式+显式处理方法。同理,我们可以采用同样的方式处理速度的立方项。

3.2 对流项与扩散项

对流项与扩散项具有散度计算(),因此他们更难处理。

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

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

散度定理指的是对任意向量的散度积分等价于向量的曲面积分:

因此我们可以通过散度定理修改对流项及扩散项,算出积分:

速度,单位法向量和表面的点积就是流出表面的体积流量:

括号外面的速度()就是我们需要求解的量。

接下来我们需要分解曲面积分:

速度沿着面的变化是线性的,因此我们可以取面中心的速度作为速度面积分的近似【1】。

这样一来我们就消除了积分,只需要做求和。

但是这里其实是未知的,我们只知道网格中心的变量值。因此我们需要进行插值。

在CFD中提供多种插值方式来求解面速度,包括:迎风、二阶/线性迎风、中心差分、QUICK。

小结一下,对流项我们可以写为:

因此我们可以将对流项加入矩阵形式当中:

如下所示,对流项会带来对角线项和非对角项,这是相邻网格连通性的体现:\mathcal{M}=\left(

\right)。

4 小结

(1)Navier-Stokes方程中的每一项都能够一一积分:

有限体积法基础文档每一项对矩阵的贡献不同。我们需要做的就是将这些贡献加起来组成完整的矩阵形式(2)这些贡献会矩阵带来对角线项和非对角线项


http://chatgpt.dhexx.cn/article/96pOkBn7.shtml

相关文章

IDEA中新导入的项目找不到maven project解决办法

刚导入的项目,导入进来之后,找不到maven project,idea打开view ->tool windows下也没有maven模块。查看了setting下plugins中maven插件也在。最后发现项目在导入过程中,因为选择的原因,没有指定位maven工程&#xf…

win10删除文件提示'找不到该项目'

win10系统下删除文件时出现了"找不到该项目"问题 遇到一个问题: win10系统下删除文件时出现了"找不到该项目"问题 百度搜索后得到 DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 这两行dos命令 创建(.txt)文件后写入这两行命令,保存,修改(.txt)至(.bat) 最后…

IDEA项目下不显示target目录或者target目录不完整没有新添加的资源

1.首先解决不显示target目录的问题 需要知道:如果不是maven工程,是没有target目录的,其次编译后才会生成target目录. 普通项目会生成out目录 a>如果设置过隐藏target目录 只需要找到settings-->Editor-->File Type-->Ignore Files and Folder删除该项 b>如果…

项目启动报错,找不到文件

java.io.FileNotFoundExceptionE:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1\localrepository\xalan\xalan\2.7.0\xercesImpl.jar (系统找不到指定的文件。) java.io.FileNotFoundExceptionE:\software\apache-maven-3.6.1-bin\apache-maven-3.6.1\localrepository\…

idea项目类存在却找不到

这种情况,我真是奇了怪了,服了。我试了一下,试出了解决方案:将这个类移到同级另一个包,看见不报错了,再移回去。属于给idea虚晃一枪,再运行…emmmmm也还是报错的。于是不断的删iml文件&#xff…

Windows 删除”找不到该项目”文件夹

问题根源: 使用不可显示ASCII字符或采用UNICODE字符方法创建的文件或文件夹; 名称中含有..等特殊符号文件或文件夹名称不符合Windows命名规范或建立空格目录名创建的文件或文件夹; 使用下载工具创建的文件夹,在未下载完成前自行删除文件或…

idea找不到项目目录

有时候idea拉取项目时出现没有目录,src.main等等,下面就来带大家找到项目目录并显示出来 首先我们打开文件(在左上角——找到项目结构) 然后我们找到模块——点击左边那个加号,然后选择自己的项目目录。再选择一下jdk版本&#x…

【常见问题】vs 找不到导入的项目,请确认import声明

问题描述 当复制人家的vs项目文件到自己电脑上进行调试,重新生成解决方案失败,并报如下错误。 解决方法 1.分析报错内容,出现问题文件为vcxproj文件。 2.找到vcxproj文件,用记事本打开。 3.CTRLF搜索“Import”&#xff0c…

无法删除提示找不到该项目,该项目不在C:\users\?win10无法强力删除文件?

无法删除提示找不到该项目,该项目不在C:\users\?win10无法强力删除文件? 新建个TXT ,把下边的代码粘贴过去: DEL /F /A /Q \\?\%1 RD /S /Q \\?\%1 保存之后把名字改成:Delete.bat 然后把要删除的文件夹拖到这个文件上,即可删…

git拉取项目报错:找不到项目 Repository not found

这段时间换了新公司,不想每天背着电脑跑来跑去了,就用了公司配发的电脑,前两天想用Git拉取公司的项目的时候却碰见问题了,无论是Git命令行拉取还是使用idea拉取,都会报错找不到项目 但是在浏览器使用链接是可以访问到项…

问题:找不到该项目,该项目不在指定目录下.......请确认位置......

参考网址:http://bbs.kafan.cn/thread-1398433-1-1.html 1.把下面的代码复制粘贴到一新建的txt记事本文档中,并另存为del.bat文件(或者你喜欢的名字),注意扩展名为批处理文件bat; DEL /F /A /Q \\?\%1 RD …

windows删文件:找不到该项目,该项目不在xx中,请确认位置,然后重试 的解决方案

起因是手贱 打错了 搞得生成了一个 以.结尾的文件,删又删除不了,莫名其妙,然后 git push 也出问题; 删除就弹出类似下面的提示;删除上层文件夹也没用; 网上搜了一堆解决办法,说什么建立一个 ba…

找不到项目 该项不在计算机中,删除文件夹提示找不到该项目怎么删除?“找不到该项目”强删方法(图文)...

在使用电脑的过程中,尤其是办公,去创建一些文档,但是在删除的时候就删除不了了,系统提示“找不到该项目”,那么Win7删除文件夹找不到该项目怎么删除?下面云狐网分享一下删除文件或者文件夹提示“找不到该项目”强删方法,不会的来学习一下。uK5电脑_数码_手机应用问题解决…

出现“找不到该项目”的错误提示解决方法

在使用Windows7系统删除文件或者文件夹的时候,会出现“找不到该项目”的错误提示,可能再次“重试”也无济于事,今天就为大家简单概括一下出现该问题的原因及解决方法。 针对出现该问题的不同原因对应的解决办法: 第一&#xff1a…

Windows下删除文件夹提示找不到该项目,请确认该项目的位置,然后重试。

解决方法: 1,在桌面新建一个文件,里面输入以下内容: DEL /F /A /Q \\?\%1 RD /S /Q \\?\%12,保存文件,然后将后缀名txt改为bat 3,将不可删除的文件夹拖拽到这个文件上面,会发现…

电脑删除文件找不到该项目怎么解决

文件明明就在桌面,想删除但就是删不掉,强迫症表示真的很难受 这时你可以这样 1.桌面新建一个TXT文本文档,重命名为“删除”(你想命名为其他的也可以) 2.打开该文件,输入 DEL /F /A /Q \\?\%1 RD /S /…

win10系统下删除文件夹失败,提示“找不到该项目”

问题场景:win10系统下删除文件夹失败,提示“找不到该项目”。 删除一个解压失败的目录时,一直提示上述问题。磁盘自检无异常,文件系统正常 删除时要么提示“找不到该项目”,要么提示需要xx用户权限。 后者更改此文件…

【奇奇怪怪的bug】删除文件显示「找不到该项目」怎么办

从网盘下载的文件,复制、改文件名或删除时总是提示找不到该项目,刷新重启都没用!! 尝试了各种方法后,终于解决了! ①下载7-zip ②使用管理员权限打开 7-zip ③找到文件所在的位置 ④选择压缩该文件并删…

找不到该项目(无法删除文件)

win10桌面新建文件提示“找不到该项目,该项目不在C:\users\**中。请确认该项目的位置,然后重试”的原因是系统错误导致的,具体解决方法步骤如下: 1、首先新建一个txt文件(为了方便txt文件建在跟目标文件供一个目录下&…

搞定:找不到该项目,请确认该项目的位置的办法

出现此问题的原因: 一、文件或文件夹名称不符合Windows命名规范;比如名称中含有..等特殊符号; 二、使用下载工具创建的文件夹,在未下载完成前自行删除文件 三、系统备份文件GHOST创建的文件(我是系统备份的ghost产生的,装双系统时) 四、恶意文件生成的防删除目录 2 1.打开我的电…