关于基本求解器中laplacianFoam热传导明明有时间导数为什么还是用稳态的simple算法?
-
关于基本求解器中laplacianFoam热传导明明有时间导数为什么还是用稳态的simple算法?不是piso算法吗?看结果输出文件也少一些东西,难道热传导是瞬间完成的当做稳态来处理吗?怎么理解呢谢谢~~
-
这个求解器没用过,但是用其他的稳态,你看主程序里面,都是以
timeloop
来计算的,while (simple.loop()) { Info<< "Time = " << runTime.timeName() << nl << endl; parcels.evolve();
而瞬态的还有有这一步
while (runTime.run())
稳态是不存在这一步的
-
因为这里只涉及单一变量的求解,没有相关变量的耦合问题(例如速度-压力),所以用
simple
算法是没有问题的,只是单纯地按时间步推进,当时间大到一定程度(具体多大取决于DT
的数值)的时候,温度场不再变化,也就是达到稳态。 -
@队长别开枪 能具体说一下吗?是不是非常快的瞬态比如热传导可以用simple?谢谢
-
@金石为开 SIMPLE算法本身是为不可压流动中速度-压力的耦合问题设计出来的,这里温度场的求解没有这类耦合问题,用simple只是为了达到按时间推进和设置非正交修正的目的,在源代码里你把
while (simple.loop())
改成while (runTime.loop())
或者while (runTime.run())
效果都是一样的。如果不需要非正交修正,则只需把while (simple.correctNonOrthogonal()) { solve ( fvm::ddt(T) - fvm::laplacian(DT, T) ); }
改成
solve ( fvm::ddt(T) - fvm::laplacian(DT, T) );
此时我们就没有引入simple的必要了,所以这里使用simple只是为了方便设置非正交修正次数罢了。
这里有一个算例,温度场开始随时间剧烈变化,最后趋于稳定
OpenFOAM求解器开发 -
@队长别开枪
最后的链接写的不错。但是我建议在这个文档以及其他文档中对某些取自《OpenFOAM用户指南》的地方注明出处。 -
@李东岳 好的,我差不多一个月前刚接触OpenFOAM,原先都是基于Fortran自己写的求解器,直到后来老板说OpenFOAM好,本身那个文档就是笔记性质的,主要用于内部讨论,不过我会尽快标注所有出处的,谢谢您的建议。
-
@队长别开枪 simple.loop()函数也有时间控制的作用?一直以为只有是收敛控制。如果这样,求解瞬态simple和求解稳态simple他们有什么区别呢?还有piso我懂,simple截止条件在哪里,哪个代码表示这个?非常感谢,我对理论部分还理解不太透彻。~~
-
simple.loop()函数也有时间控制的作用?一直以为只有是收敛控制。
没有,此函数可以控制时间。但是不能控制收敛。SIMPLE截止条件在
Foam::simpleControl::criteriaSatisfied()
函数。参见simpleControl.C
。瞬态simple和求解稳态simple他们有什么区别呢?
瞬态SIMPLE添加时间项步进大家都知道的。这就是瞬态SIMPLE和稳态SIMPLE的区别。不过或许你关心的是瞬态SIMPLE和瞬态PISO的区别。需要注意的是PISO为Issa在1986年提出的本身就针对瞬态问题的非迭代算法。PISO在时间步进中不需要迭代。这是最主要的区别。更多介绍参见Issa 1986年的论文。PISO在SIMPLE之后研发,Issa以及对他们的区别进行了充分的解释。
Enjoy
-
不过,关于
laplacianFoam
这个simpleloop
应该是个无关紧要的bug。 -
@李东岳 我是看你的《浅谈Piso,Simple算法》理解这些算法的,里面只有稳态SIMPLE,我理解的PISO算法是不是指第一个PISO算法把右边箭头指向第三个方框前面实现Ueqn.A与.H持续更新对不对,我这样理解对不?非常感谢~
论坛登录问题反馈可联系 li.dy@dyfluid.com