关于基本求解器中laplacianFoam热传导明明有时间导数为什么还是用稳态的simple算法?



  • 关于基本求解器中laplacianFoam热传导明明有时间导数为什么还是用稳态的simple算法?不是piso算法吗?看结果输出文件也少一些东西,难道热传导是瞬间完成的当做稳态来处理吗?怎么理解呢谢谢~~



  • 这个求解器没用过,但是用其他的稳态,你看主程序里面,都是以timeloop来计算的,

    while (simple.loop())
        {
            Info<< "Time = " << runTime.timeName() << nl << endl;
    
            parcels.evolve();
    

    而瞬态的还有有这一步

    while (runTime.run())
    

    稳态是不存在这一步的


  • 自由表面模型副教授 OpenFOAM教授

    因为这里只涉及单一变量的求解,没有相关变量的耦合问题(例如速度-压力),所以用simple算法是没有问题的,只是单纯地按时间步推进,当时间大到一定程度(具体多大取决于DT的数值)的时候,温度场不再变化,也就是达到稳态。



  • @队长别开枪 能具体说一下吗?是不是非常快的瞬态比如热传导可以用simple?谢谢


  • 自由表面模型副教授 OpenFOAM教授

    @金石为开 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教授

    @李东岳 好的,我差不多一个月前刚接触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持续更新对不对,我这样理解对不?非常感谢~


Log in to reply
 

CFD中文网 2016 - 2020 | 京ICP备15017992号-2