有关p_rgh收敛的问题



  • @东岳 我调过那种适应步长的方法,时间步长也挺小的。这里我说句题外的,师兄曾经用CFX计算过RTD的问题,据我问师兄,他的库朗数达到了100左右,我感觉简直不可思议,最后出的结果也挺好的(结果对错我不知道),看着挺正常的,库朗数太大也不行了吧,我感觉:mihu:


  • 网格教授 OpenFOAM教授 管理员

    CFX和Fluent那面库郎数限制不是很明显。

    但是CFD理论上都有库郎数限制,不清楚商软那面怎么处理的,代码不开源,无从可知。


  • OpenFOAM副教授

    @dingcy 对于瞬态问题,没有所谓的收敛,因为你每一步的结果都是不同的。你的pimple发散,确实是因为计算步长大了,用大步长计算,我的经验是增加nCorrectors,也就是增加了压力-速度耦合迭代的次数,以修正速度滞后的问题。



  • @dzw05 瞬态问题有时候会趋于稳态,比如我所研究的问题,中间包内加入示踪剂后,一直注入的是水,最后中间包内全部充满了水,这不就趋于一个稳态吗?增加nCorrectors我确实试过,比如nCorrectors调到4,它会有4个压力残差值,前几个压力残差值还是比较大,越靠后的压力残差值越小,我可以直接以最后一个压力残差值作为评判标准吗?


  • OpenFOAM副教授

    @dingcy 那你这个问题就是稳态问题了,只不过你用的是瞬态求解器;如果不关心中间结果, 你完全可以用稳态求解器,这样计算还更快一些。
    至于压力残差值,只有最后一个有意义,因为前几个都是压力-速度迭代的中间结果。



  • @dzw05 中间过程对我来说很重要,我研究的对象就是中间过程。至于最后一个压力残差值的问题,我不太确定呀,我曾经也像你那样想过,能有一个解释或者说明吗?比如为什么下一个时间步第一个压力残差不是接着上一个时间步最后一个压力残差而是接着上一个时间步第一个压力残差值呢?还有商业软件为什么最后都是一个压力残差值呢?


  • OpenFOAM副教授

    @dingcy 抱歉我之前的解释可能有误。
    (1)残差的定义是: r=Ax-b, 即当前步的解代入当前步的线性方程组时,产生的偏差。所以如果要判断是否收敛,应该看的是p_rgh0,即第一次迭代时的残差。
    (2)比如为什么下一个时间步第一个压力残差不是接着上一个时间步最后一个压力残差而是接着上一个时间步第一个压力残差值呢。至于这个问题,因为下一个时间步的线性方程组系数(A,b)已经更新了,所以残差不会跟上一步的最后残差。
    (3)这里说的时间步是外循环,你设定里的nCorrectors,其实是在一个时间步中的内迭代。
    (4)用foamLog会把每一个内迭代的残差都生成单独的文件(p_rgh0即对应第一个内迭代,p_rgh1对应第二个内迭代),所以你画图的时候,其实是对每个内迭代的残差画曲线。

    最后,需要强调的是,残差并不是收敛的判断标准。收敛是指两个相邻时间步的结果不再变化,而残差只是在当前时间步内的线性方程组的残值。


  • OpenFOAM副教授

    @dingcy 商业软件中的压力残值,应该是指p_rgh0。


  • OpenFOAM副教授

    @dzw05 应该改为:残差并不是收敛的唯一标准。



  • @dzw05 谢谢您的解答,讲解的很明白,我还要看一看,如果有新想法,会回复您的。