pEqn.H中phiHbyA计算修正项的问题



  • 在pEqn.H中,计算phiHbyA时会有一个修正项,是利用上一时间步通量和速度向面上的插值之差来修正本时间步的值,这一项会增加额外的耗散,好处是计算鲁棒性好

    surfaceScalarField phiHbyA
    (
        "phiHbyA",
        fvc::flux(HbyA)
      + fvc::interpolate(rho*rAU)*fvc::ddtCorr(U, phi)
    );
    

    0_1500636830062_1.jpeg
    0_1500636851292_2.jpeg

    以上是代码和修正通量的表达式,但是有个问题是,当计算压力时,phiHbyA作为泊松方程的源项,修正项phi_2是会对压力的计算结果产生影响,比如之前所发的一个帖子传送门

    经过我的测试,如果去掉这项,会得出比较合理的压力分布,但是随着计算进行,会发生发散现象,所以不知道这项真正的意义是什么,为什么要用上一个时间步的物理量修正本时间,对压力求解的影响如何避免?



  • 虽然方程和代码是一致的,fvc::ddtCorr(U, phi)并不是求解NS方程必须的项,而是一个稳定项,类似/max(x, 1e-6)。我对fvc::ddtCorr(U, phi)的数值影响比较感兴趣,但是并没有时间去做研究。如果你也感兴趣,相对于研究多相fvc::ddtCorr(U, phi)数值的影响,我建议你从icoFoam中的fvc::ddtCorr(U, phi)入手,研究他的数值作用。

    私信我也受到了,很抱歉目前暂不能作出更多建设性评论。如果你有进一步的理解我也乐于学习。



  • @李东岳 好的,多谢前辈回复,我会研究一下关于计算稳定性的问题,如果有需要我会跟您交流~



  • @yhdthu
    这玩意儿涉及到面流量场和体速度场的相容性的问题,即插值后的U和phi是否一致。由于在很多分离算法(SIMPLE, PISO等)中,再考虑在同位网格条件下,phi和U由于更新有先后顺序之分,可能会导致U和phi不一致,所以需要修正。

    $$
    \delta \phi=\phi^{o}-U^o\cdot S_f\
    K_c = 1-\min{(1,\frac{|\delta\phi|}{|\phi^o|+\epsilon})}\
    \phi_{c}=\delta \phi\cdot K_c\cdot \frac 1 A\cdot \frac 1 {\Delta t}
    $$

    参考资料:https://zh.scribd.com/doc/48195039/ddtPhiCorr

    ddtCorr和ddtPhiCorr之类的都是相互调用的。而且of41和of2x相差也特别大。深坑绕行。



  • @程迪 你好,谢谢你的回复,我有以下疑问:

    1.为什么这个修正放在了phiHbyA里面呢?看起来,这个phiHbyA由两部分组成,预测速度矩阵rAU*U.H()计算的flux(HbyA),和上一时间步通量/速度修正项目。难道必须要和上一时间步产生关联么?

    2.理论上说,是不是在每一个时间步收敛后,时间滞后效应基本消除,所得速度基本可以同时满足动量方程和压力方程,这个修正项应该为0?

    3.我做了算例测试,发现这个修正项对网格大小很敏感,即如果网格比较密,这项会比较小;也做了同样网格下不同时间步的测试,发现如果时间步越小flux(HbyA)越小,此时修正项对求解压力泊松方程的影响就很大了,这项一直都不是0,请问这正常么?

    4.我计算多相流问题,压力场一直不稳定,详情在最上方的传送门中,现在怀疑是由这项引起的,这个修正项的影响相当于在泊松方程里加入了一个源项,导致压力计算爆掉了,但是计算单相流又没事,请问问题是不是出在这呢?

    谢谢


登录后回复
 

与 CFD 中国 的连接断开,我们正在尝试重连,请耐心等待