有关OpenFOAM中瞬态计算时间步设置的问题



  • 在进行瞬态计算时,使用OpenFOAM可以设置计算的时间步,但是在使用CFX计算的时候,还可以设置每个时间步的loop,就是每个时间步内也要进行迭代,迭代设置时间步后进行下一时间步的计算。请问OpenFOAM里有这样的操作吗?或者两种软件的计算方式不一样还是怎么回事?


  • OpenFOAM副教授

    @dingcy OpenFOAM不能设置每个时间步内的迭代,但可以设置每个时间步的收敛标准,不知道这两个是不是对应的。



  • @dzw05 我自己又查了一些相关资料有一些想法,不知道对不对。
    我们在使用OpenFOAM进行稳态计算的时候使用的是SIMPLE算法,瞬态计算的时候使用的是PISO或者PIMPLE算法。在使用CFX进行瞬态模拟计算的时候可以在每个时间步进行迭代,这里CFX使用的什么算法我说不出来,我询问了我的师兄,在设置的时候没有选择算法名称,可能是它自己有自己的一套算法。对于OpenFOAM来说PISO算法是属于无迭代的瞬态计算算法,PISO算法的的精度取决于其时间步长,越小的步长,可得越高的计算精度。也就是说当步长较小时,不迭代也可以保证计算有足够的精度。(参考文献:http://www.docin.com/p-1006293659-f7.html 第53页)
    而PIMPLE算法在时间步内增加了速度压力耦合的循环,多次求解压力。这个PIMPLE算法可能就可以在每个时间步内进行迭代。
    查阅资料得到的一些想法,还希望大家批评指正。


  • OpenFOAM副教授

    @dingcy PIMPLE确实可以进行内迭代,它是SIMPLE和PISO的耦合,增加内迭代的目的是为了可以采用更大的时间步长。我自己写过的程序,用LU-SGS时间推进,采用内迭代的目的是为了提高时间方向上的精度。
    如你所说,不知道CFX采用了什么时间推进方法,所以也并不知道它内迭代的目的是什么。