pimpleFoam求解器 vs simpleFoam求解器 vs pisoFoam求解器 vs icoFoam
翻译自:CFD-online
帖子地址:http://www.cfd-online.com/Forums/openfoam-solving/68072-pimplefoam-vs-simplefoam-vs-pisofoam-vs-icofoam.html
phisieh2005:
大家好,
谁能给我解释一下pimpleFoam,simpleFoam,pisoFoam和icoFoam求解器之间的区别吗?
以及在什么情况下选择对应的求解器?
感谢!
ata:
你好
icoFoam是计算不可压缩牛顿流体层流流动的瞬态求解器
pimpleFoam是采用PIMPLE算法(混合PISO-SIMPLE算法)计算大时间步长瞬态不可压缩流。
pisoFoam是计算可压缩流动的瞬态求解器
湍流模型是通用的,例如:层流,雷诺平均或者大涡模拟
simpleFoam是用来求解稳态可压缩湍流流动的
祝好
Ata
David:
simpleFoam是针对不可压湍流
ata:
你好,David
非常感谢,你是正确的
祝好
Ata
Kjetil:
大涡模拟可以采用simpleFoam求解器吗?
florian_krause:
你好,
simpleFoam是一个稳态求解器,正如ata已经提到的...
因此,你不能使用simpleFoam求解器进行大涡模拟,而应该用pisoFoam求解器代替
祝好
Florian
Nileshjrane:
大家好
我在使用icoFoam和simpleFoam求解器计算一个相同算例的时候得到了不同的结果。icoFoam的计算结果似乎更好。可能的原因是什么?难道不应该两个求解器给出相近的结果吗?我使用的是OpenFOAM170默认求解器,我仅改变了离散格式参数字典文件fvSchemes里面速度的离散格式为迎风格式(至少这个格式是应用在simpleFoam求解器里面的)
Djub:
大家好!
我也有相同疑问:pisoFoam求解器比起pimpleFoam求解器如何?
我尝试模拟风与建筑物之间的相互作用:我的模拟是非定常,不可压,大雷诺数并且有复杂几何。我应该用pisoFoam求解器还是pimpleFoam求解器?为什么呢?Nilesh,在你的算例当中,icoFoam求解器应用于非定常层流,然而simpleFoam求解器对针对湍流的.方程是不一样的!
我想人们比起pisoFoam求解器更愿意选择pimpleFoam求解器(http://www.symscape.com/node/948)。但是相比于他们运行雷诺平均,我更喜欢使用大涡模拟。能给一些建议或者说明吗?
Owayz:
使用大涡模拟或者雷诺平均都不是问题。喜欢使用pimpleFoam求解器的人认为pimple算法更加鲁棒和有效。他们还认为pimple算法可以采用大步长(比较piso算法,piso算法当库朗数大于1时会导致发散)。如果对大步长感兴趣的话(在某些sudo瞬态算例当中),pimple算法当然是很有吸引力的算法。你说你想做大涡模拟。在大涡模拟时,你需要考虑时间尺度并且你必须保证你的时间步长比你实际模拟的大涡时间尺度小。
我观察到人们通常保证库朗数小于0.5-0.4。Pimple算法通过提供
nOuterIterations参数给你更多的可控性。如果你的nOuterIterations等于1,那么你是用pimple算法就相当于使用piso算法。当然增加额外的计算机开销用于更多的外迭代可以提升你的结果,但是很多时候是否需要进一步提升你的结果是一个很重要的决定。
祝好
Awais
Djub:
你好,Awais。非常感谢你的建议。但是我没有掌握任何事情。
"在某些sudo瞬态算例时"。"sudo"是什么意思?
我的目标是模拟非常大雷诺数的问题:大概在1e-5或者1e-6。因此,一直保证低库朗数会超过我的计算机能力范围。今天,我在库朗数接近1的情况下运行。以库朗数为5和nOuterIterations为1运行Tjunction案例。因此这个案例实际上是使用的piso算法?
我觉得使用库朗数为5(比如这个案例)和nOuterIterations为1(不仅使用了piso算法而且使用了真的pimple算法)。你是否认为是这样?
其他方面:我对"final"求解器的概念不是很熟悉。目前(原贴为For the momment,疑为:for
the moment),我使用的还是"通常的"那一个:
Quote:
p {solver
PCG; preconditioner DIC; tolerance 1e-06; relTol 0.1;
}
pFinal {
solver PCG; preconditioner DIC; tolerance 1e-06; relTol 0;
}
"(U|k)" {
solver PBiCG; preconditioner DILU; tolerance 1e-05; relTol 0;
}
"(U|k)Final" { solver
PBiCG; preconditioner DILU; tolerance 1e-05; relTol 0;
}
这样可以吗?或者这样是没有意义的?或者这样只是浪费CPU?
Owayz:
你好 Julien
对于Sudo
Transient(伪瞬态),我的意思是物理现象是稳态的,你是用像pimpleFoam这样的瞬态求解器去求解。想要看具体操作,你也可以看一下rhoPimpleFoam/ras目录下的angleDuct案例。这个案例的库朗数为10.
但是如果你使用大涡模拟,你需要时间平均的解。在该流动结构中的脉冲时间尺度也是很重要的。
如果你要做雷诺平均模拟的话,你就需要按照你刚才说的那样去设置(比如库朗数为5,nouterIteration为1)。,但是在瞬态模拟中你可能对流场的平均值感兴趣,因此思考一下,在那个时间步长下能否捕捉到整个流场的波动。
我的理解是当你的流场是非常短暂比如绕流产生涡街,你应该保持库朗数小于1(特别的)。如果时间步长过大,我们可能会错失许多波动模式并且反映在我们的平均值上(或者花更多的时间去得到一个时间平均解)。
关于pFinal和Ufinal,我认为这些是对于最后在pimple算法循环方程当中的迭代严格的标准以便得到最好的数值敏感性。
祝好
Awais
Akidess:
Quote:
Originally Posted by
Djub View Post
"as in
some sudo transient cases" . What means "sudo" ?
小的旁注—他可能是想写'伪的'。
Owayz:
感谢指出这点
祝好
Awais
Djub:
大家好
我运行了一些Pimple的算例。它让我震惊!
对比一个运行的PISO算例,在fvsolution当中仅有的变化是关于nOuterIterations。在我的算例中,我令nOuterItreations等于2。你也可以选择final求解器,我假想为最后迭代。
但是PIMPLE允许允许在controlDict中使用adjustTimeStep yes。在这个算例中你可以直接控制CFL(入口最大库朗数)。我现在正以最大库朗数为10运行着!并且它是稳定的和真实的。当然也非常快!
在这个算例当中,你的时间步长不再是常数因此你可能更愿意用writeControl
adjustableRunTime(而不是timestep)。在这个算例中writeInterval是短时间。
Djub
Sdharmar:
如果你增加库朗数到大于1不会是问题吗?
Br,
Suranga.
Djub:
Pimple算法是一种隐式数值方法(参考https://en.wikipedia.org/wiki/Explicit_and_implicit_methods),你可以使用大于1的库朗数。对于显式方法,库朗数需要小于1(https://en.wikipedia.org/wiki/Courant–Friedrichs–Lewy_condition)。
顺便说一下,如owayz说的,我非常关心我正在进行的大涡模拟的时间尺度。
在我的算例中,当库朗数为10的时候,没有问题。不过,库朗数到了100,就崩溃掉了,同时,库朗数为50或者30时,计算结果不能令人满意。因此(在我的方柱绕流算例中,对涡脱落的估算)库朗数的限制范围为10到30。
大家好
最后可能最愚蠢的问题来了。
我已经不止一次阅读了讨论,但是我仍然没有明白这些不同求解器的用法。
谁能根据实际情况给我解释一下这些求解器的优点/缺点?
加入这里有一个管流(L > 5000mm, W =250mm, H =
20mm,工质是水,原点位于管道中间)...
- 在入口为小雷诺数(100-200),没有障碍物(比如棒或者方块)在管道的中间。
- 在入口为小雷诺数(100-200),有障碍物(比如具有侧边20mm的方块)在管道的中间。
- 在入口为大雷诺数(>3000),没有障碍物在管道的中间。
- 在入口为大雷诺数(>3000),有障碍物(比如具有侧边20mm的方块)在管道的中间。
对于这些算例你们会采用哪种求解器?为什么?
如果为了向我展示一个特定求解器的有点,你也可以改变其中一个算例的物理设置。
先感谢了!
Aylalisa
如果你的障碍物没有任何运动,那么对于你对求解器的选择不会有任何影响。我认为你可以使用pimpleFoam求解器解决所有的算例。你也可以通过使用simpleFoam求解器设置大时间步长(从而节约一些计算时间)解决高雷诺数的算例。
Aylalisa:
什么样的流动使你分别选择pisoFoam求解器和icoFoam求解器?
Djub:
icoFoam求解器是针对层流的,而pisoFoam可以处理湍流。
pimpleFoam求解器 vs simpleFoam求解器 vs pisoFoam求解器 vs icoFoam的更多相关文章
- 感知器、逻辑回归和SVM的求解
这篇文章将介绍感知器.逻辑回归的求解和SVM的部分求解,包含部分的证明.本文章涉及的一些基础知识,已经在<梯度下降.牛顿法和拉格朗日对偶性>中指出,而这里要解决的问题,来自<从感知器 ...
- Android设备管理器漏洞2--禁止用户取消激活设备管理器
2013年6月,俄罗斯安全厂商卡巴斯基发现了史上最强手机木马-Obad.A.该木马利用了一个未知的Android设备管理器漏洞(ANDROID-9067882),已激活设备管理器权限的手机木马利用该漏 ...
- 理解Python中的装饰器//这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档
转自:http://www.cnblogs.com/rollenholt/archive/2012/05/02/2479833.html 这篇文章将python的装饰器来龙去脉说的很清楚,故转过来存档 ...
- 解决Windows资源管理器右键菜单打开EditPlus容易导致资源管理器无响应问题
这个问题确实很烦人,经常导致 资源管理器无响应,关闭后整个资源管理器彻底崩溃,原因未知.本着折腾和强迫症精神,这个问题一定要解决.方法如下: 1.不要用EditPlus自带的添加到系统右键菜单选项. ...
- Flume自定义拦截器(Interceptors)或自带拦截器时的一些经验技巧总结(图文详解)
不多说,直接上干货! 一.自定义拦截器类型必须是:类全名$内部类名,其实就是内部类名称 如:zhouls.bigdata.MySearchAndReplaceInterceptor$Builder 二 ...
- Python编程系列---Python中装饰器的几种形式及万能装饰器
根据函数是否传参 是否有返回值 ,可以分析出装饰器的四种形式: 形式一:无参无返回值 def outer(func): def wrapper(): print("装饰器功能1" ...
- python 装饰器(六):装饰器实例(三)内置装饰器
内置的装饰器和普通的装饰器原理是一样的,只不过返回的不是函数,而是类对象,所以更难理解一些. @property 在了解这个装饰器前,你需要知道在不使用装饰器怎么写一个属性. def getx(sel ...
- WEB页面采集器编写经验之一:静态页面采集器
严格意义来说,采集器和爬虫不是一回事:采集器是对特定结构的数据来源进行解析.结构化,将所需的数据从中提取出来:而爬虫的主要目标更多的是页面里的链接和页面的TITLE. 采集器也写过不少了,随便写一点经 ...
- Swift版音乐播放器(简化版),swift音乐播放器
这几天闲着也是闲着,学习一下Swift的,于是到开源社区Download了个OC版的音乐播放器,练练手,在这里发扬开源精神, 希望对大家有帮助! 这个DEMO里,使用到了 AudioPlayer(对音 ...
随机推荐
- 如何设置MySql Server远程访问(Debian Linux)
1. 登录Mysql Server: $mysql -u root -p 2. 检查网络,Server是否允许远程连接: mysql> show variables like '%skip_ne ...
- stm32 CAN通信 TJA1040
CAN协议特点 1.多主控制 所有单元都可以发送消息,根据标识符(Identifier简称ID)决定优先级.仲裁获胜(被判定为优先级最高)的单元可继续发送消息,仲裁失利的单元则立刻停止发送而进行接收工 ...
- linux命令管道符
linux多命令 ; 多个命令互相不影响 a && b a命令执行成功才执行b命令 a || b a成功不执行b a失败执行b ifconfig && echo & ...
- shell 变量的高级用法
变量删除和替换 案例:从头开始匹配,将符合最短的数据删除 (#) variable_1="I love you, Do you love me" echo $variable_1 ...
- 【MySql】牛客SQL刷题(上)
牛客SQL题目 题目链接:https://www.nowcoder.com/ta/sql 查找最晚入职员工的所有信息 select * from employees where hire_date = ...
- javascript_04-类型转换
类型转换 掌握三种类型的转换 转换成字符串类型 转换成数值类型 转换成布尔类型 转换成字符串 1.几乎每一个值都有 toString() 方法,除了 null 和 undefined. var age ...
- 五、MySQL系列之高级知识(五)
本篇 主要介绍MySQL的高级知识---视图.事件.索引等相关知识: 一.视图 在学习视图时我们需要什么是视图,视图有哪些好处以及视图的相关操作: 1.1 什么是视图? 关于视图通俗来讲就是一条se ...
- 版本控制系统(VCS)简介
简介 版本控制系统(VCS)是一种记录一个或若干文件内容变化,以便将来查阅特定版本修订情况的系统.使用版本控制系统通常还意味着,就算你乱来一气把整个项目中的文件改的改删的删,你也照样可以轻松恢复到原先 ...
- rabbitmq数据备份与还原
一.场景 现在有服务器A和服务器B ,由于业务需要,要求把服务器A上mq的数据迁移到服务器B上,rabbitmq的数据包括元数据(RabbitMQ用户.vhost.队列.交换和绑定)和消息数据,而消息 ...
- 运输层3——传输控制协议TCP概述
目录 1. TCP最主要的特点 2. TCP的连接 3. socket在不同场景中的含义 写在前面:本文章是针对<计算机网络第七版>的学习笔记 运输层1--运输层协议概述 运输层2--用户 ...