首页 > 编程语言 >09、OpenFoam中的PISO,SIMPLE和PIMPLE算法

09、OpenFoam中的PISO,SIMPLE和PIMPLE算法

时间:2023-04-08 12:23:34浏览次数:33  
标签:方程 PISO 求解 SIMPLE 修正 09 算法 速度

隐式:PISO
半隐式:SIMPLE
组合式:PIMPLE(PISO + SIMPLE)

PISO算法

PISO算法是一种常用于求解不可压缩流体流动问题的数值方法,它在OpenFOAM中被广泛应用。PISO算法的全称为Pressure Implicit with Splitting of Operators,即利用算子分裂的方法进行隐式求解压力和速度。

PISO算法主要分为两步,分别是预处理和求解。

预处理部分主要涉及离散方程的重构和修正。首先,在离散不可压缩Navier-Stokes方程中,速度和压力是同时求解的,但在离散方程的构建中,需要将速度和压力进行隔离,通过构建动量方程和质量守恒方程将两者联系起来。然后,通过预处理部分的修正,消除因速度场估计误差引入的不稳定性,提高计算精度。

求解部分主要是将修正后的动量方程进行求解,包括压力的求解和速度场的更新。在PISO算法中,通过引入一个压力修正项来进行压力场的求解,并通过速度修正项对速度场进行修正。最后,通过这个修正项来计算下一个时间步长的速度场。

总之,PISO算法是OpenFOAM中用于求解不可压缩流体流动的重要算法之一,其优点是稳定性较好、计算精度较高,因此在工业应用中得到广泛的应用。

SIMPLE算法

SIMPLE (Semi-Implicit Method for Pressure-Linked Equations)是一种流体力学中求解流场的算法。它是一种迭代算法,用于解决Navier-Stokes方程组。其基本思想是先对速度场的对流项和扩散项分别处理,然后将它们耦合起来,通过求解一个修正的连续方程来获得压力场,再将其应用于速度场的修正。算法的核心在于通过求解一个修正的连续方程来间接求解压力场,从而实现了速度和压力的耦合。

在SIMPLE算法中,通过对Navier-Stokes方程组进行离散,将其转化为一个有限体积方程组。对于速度场的对流项和扩散项,采用隐式格式进行离散,从而避免了时间步长的限制。通过对连续方程进行修正,可以消除速度场和压力场之间的耦合,并使得速度场满足不可压缩条件。通过迭代求解,最终获得速度场和压力场的数值解。

PIMPLE算法

PIMPLE是OpenFOAM中的一种求解算法,是针对压力-速度耦合问题的一种多步骤算法。PIMPLE算法包含了两个外层循环和三个内层循环,每个时间步长需要按顺序执行以下几个步骤:

预处理阶段(outer loop 1):在这个阶段,首先要设置时间步长,并进行网格划分和初始化变量。然后,需要解决不可压缩流动的初值问题,即求解速度和压力的初始值。

内部循环1:在这个阶段,首先要求解速度场。根据不可压缩流体的连续性方程,需要对速度场进行修正以满足质量守恒。修正速度场的方法是通过求解动量守恒方程和质量守恒方程获得的压力梯度。然后,需要使用这个修正后的速度场,来重新计算质量守恒方程的残差,并将其与预先设定的收敛标准进行比较,以判断求解是否收敛。

内部循环2:在这个阶段,需要求解压力场。根据Poisson方程,可以计算出压力梯度。然后,将这个压力梯度应用于速度场,得到新的速度场,并重新计算质量守恒方程的残差。

内部循环3:在这个阶段,需要进一步修正速度场,以满足动量守恒。方法是将速度场和压力梯度合并起来,求解动量守恒方程。然后,使用这个修正后的速度场,重新计算质量守恒方程的残差,并将其与收敛标准进行比较。

预处理阶段(outer loop 2):在这个阶段,需要进行一些后处理操作,例如计算浓度、温度、湍流等。然后,再次使用修正后的速度场和压力场,重新计算质量守恒方程的残差。

更新时间步长:如果求解结果已经收敛,就可以更新时间步长,并转到下一个时间步长。如果结果没有收敛,则需要回到内部循环1,重新进行求解。

PIMPLE算法通过多次迭代求解,可以更加精确地获得不可压缩流动的解,尤其适用于复杂的几何形状和湍流流动。

标签:方程,PISO,求解,SIMPLE,修正,09,算法,速度
From: https://www.cnblogs.com/dbai/p/17298306.html

相关文章

  • Simple Finance的表变化讲解
                  ......
  • EasyARM i.MX283A 完整系统制作指南(Linux 4.13.2+U-Boot 2017.09+BusyBox 1.27.2+Qt5
    原文:https://www.taterli.com/3213/标题老长呢.反正什么都是新的,所有都是开源的,除了下载工具以外,所有源码都有(据说下载工具也有,我懒得找了.),编译器源码自己也能做,但是没必要了.代码下载地址:https://github.com/nickfox-taterli/imx283a-new/releases/tag/v0.1首先有一个U......
  • leetcode-1109-差分
    classSolution{publicint[]corpFlightBookings(int[][]bookings,intn){int[]diff=newint[n];for(int[]booking:bookings){intfirst=booking[0],last=booking[1],seats=booking[2];diff[first-1]......
  • 009.关机 重启 注销
    关机重启注销shutdown-hnow立即进行关机shutdown-h11分钟后进行关机shutdown-rnow立即重新启动计算机halt关机reboot现在重新启动计算机sync把内存数据同步到磁盘su-root切换到系统管......
  • win101909播放设备无法正常工作解决方法
    我们在使用win10操作系统的时候,如果在升级了1909版本之后,可能会有部分小伙伴遇到win101909播放设备无法正常工作这样的问题。那么对于这种情况小编觉得可能是因为我们的系统在更新版本的时候丢失了一些系统文件导致的,可以尝试回退系统即可。详细步骤就来看下小编是怎么做的吧~win......
  • day 38代码随想录 509. 斐波那契数 | 使用最小花费爬楼梯
    斐波那契数,通常用 F(n)表示,形成的序列称为斐波那契数列。该数列由 0和1开始,后面的每一项数字都是前面两项数字的和。也就是:F(0)=0,F(1) =1F(n)=F(n-1)+F(n-2),其中n>1给你n,请计算F(n)。示例1:输入:2输出:1解释:F(2)=F(1)+F(0)=1+0=1因为......
  • UVA - 10905 Children's Game 字符串的排序
    题目大意:给出N个数字串,要求拼出有数字最大的串解题思路:用string就很好解决#include<cstdio>#include<cstring>#include<algorithm>#include<iostream>usingnamespacestd;constintmaxn=60;stringstr[maxn];intcmp(stringa,stringb){ returna+b>b+a;}......
  • 2023年4月7日09:22:27
    注:补昨天的总结。昨天起的比较晚,可能是前天出去玩还没缓过劲来,10多起床,然后去买了中饭,下午开始写思想汇报,下午四点写完第一篇,晚上写完一篇。1、昨天早餐没吃2、和阿璃浪费时间3、思想汇报没有写完昨天的算法和Spring都没有看。总结:生物周期被打断,浪费了一些时间。离目标还有......
  • 为ViewPager设置SimpleViewPagerIndicator
    说到ViewPagerIndicator,网上有很多专门的开源库;我这里重提一下,只是想试试它的实现方法;记录下来,可以以后快速的修改迭代~~~很简单的一个类:importandroid.content.Context;importandroid.graphics.Canvas;importandroid.graphics.Color;importan......
  • 基于上一篇实现的SimpleListPopupWindow<T>
    这次是个简单的PopupWindow,快速迭代用。importjava.util.List;importandroid.content.Context;importandroid.view.View;importandroid.widget.AdapterView;importandroid.widget.LinearLayout.LayoutParams;importandroid.widget.ListView;im......