关于基本求解器中laplacianFoam热传导明明有时间导数为什么还是用稳态的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求解器开发 -
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