pimple算法非定常计算时残差持续增加最终发散如何解决?



  • 最近使用rhoPimpleFoam算一个翼型的气动特性,总是在算很长时间后突然发散,发现p和e的残差在不断增加最后导致发散
    0_1543632265578_Screenshot from 2018-12-01 10-38-49.png
    我计算时取的时间步长基本让最大库郎数稳定在80以下,pimple设置如下:

     73 PIMPLE
     74 {
     75     momentumPredictor yes;
     76     nOuterCorrectors 15;
     77     nCorrectors     4;
     78     nNonOrthogonalCorrectors 1;
     79     rhoMin          0.1;
     80     rhoMax          5.0;
     81     pMinFactor      0.5;
     82     pMaxFactor      2.0;
     83 
     84 }
    
    

    空间和时间离散格式如下

     18 ddtSchemes
     19 {
     20     default         backward;
     21 }
     22 
     23 gradSchemes
     24 {
     25     default         Gauss linear;
     26     limited         cellLimited Gauss linear 1;
     27     grad(U)         $limited;
     28     grad(k)         $limited;
     29     grad(kU)        $limited;
     30     grad(omega)     $limited;
     31     grad(omegaU)    $limited;
     32 }
    
     33
     34 divSchemes
     35 {
     36     default         none;
     37     div(phi,U)      Gauss linearUpwind limited;
     38 
     39     turbulence      Gauss linearUpwind limited;
     40     energy          Gauss linearUpwind limited;
     41 
     42     div(phi,k)      $turbulence;  
     43     div(phi,kU)     $turbulence;
     44     div(phi,omega)  $turbulence;
     45     div(phi,omegaU) $turbulence;
     46 
     47     div(phi,e)      $energy;
     48     div(phi,h)      $energy;
     49     div(phi,K)      $energy;
     50     div(phi,Ekp)    $energy;
     51 
     52     div(phiv,p)     Gauss upwind;
     53     div((phi|interpolate(rho)),p)   Gauss upwind;
     54 
     55     div(phi,ReThetat)  $turbulence;
     56     div(phi,gammaInt)  $turbulence;
     57 
     58     div(B)          Gauss linear;
     59     div(meshPhi,p)  Gauss linear;
     60 
     61     div((nuEff*dev2(T(grad(U))))) Gauss linear;
     62     div(((rho*nuEff)*dev2(T(grad(U))))) Gauss linear;
     63     div(nonlinearStress) Gauss linear;
     64 
    }
    

    网格是blockMesh做的,比较简单,因为要保证边界层密度所以纵横比比较大。请问导致发散的主要原因是什么?什么方法可以改善?我个人不希望再降低时间步长,因为目前已经很小了,采用pimple算法也是由于它能够在较大的库郎数下计算。谢谢各位!~


  • 网格教授 OpenFOAM教授 管理员

    很难判断出问题的所在…
    虽然我对你的case比较感兴趣,如果网格数量小可以上传一下我试试,不过我比较忙可能下周才能给你回复



  • @东岳 东岳老师,问题已解决。非定常计算一开始要求时间步长要比较小,先得到一个较稳定的流场,在别的求解器里可能会先用稳态求解器算一个初场。而我上面的算例一开始时间步长较大,到后面越来越不稳定最终发散。开始用变时间步长让对应的库郎数从1以下慢慢增加即可。