[petsc-users] Does ILU(15) still make sense or should just use LU?

Barry Smith bsmith at petsc.dev
Thu Mar 28 11:13:20 CDT 2024


   This is a bad situation, the solver is not really converging. This can happen with ILU() sometimes, it so badly scales things that the preconditioned residual decreases a lot but the true residual is not really getting smaller. Since your matrices are small best to stick to LU.

    You can use -ksp_norm_type unpreconditioned to force the convergence test to use the true residual for a convergence test and the solver will discover that it is not converging.

   Barry


> On Mar 28, 2024, at 11:43 AM, Zou, Ling via petsc-users <petsc-users at mcs.anl.gov> wrote:
> 
> Hong, thanks! That makes perfect sense.
> A follow up question about ILU.
>  
> The following is the performance of ILU(5). Note that each KPS solving reports converged but as the output shows, the preconditioned residual does while true residual does not. Is there any way this performance could be improved?
> Background: the preconditioning matrix is finite difference generated, and should be exact.
>  
> -Ling
>  
> Time Step 21, time = -491.75, dt = 1
>     NL Step =  0, fnorm =  6.98749E+01
>     0 KSP preconditioned resid norm 1.684131526824e+04 true resid norm 6.987489798042e+01 ||r(i)||/||b|| 1.000000000000e+00
>     1 KSP preconditioned resid norm 5.970568556551e+02 true resid norm 6.459553545222e+01 ||r(i)||/||b|| 9.244455064582e-01
>     2 KSP preconditioned resid norm 3.349113985192e+02 true resid norm 7.250836872274e+01 ||r(i)||/||b|| 1.037688366186e+00
>     3 KSP preconditioned resid norm 3.290585904777e+01 true resid norm 1.186282435163e+02 ||r(i)||/||b|| 1.697723316169e+00
>     4 KSP preconditioned resid norm 8.530606201233e+00 true resid norm 4.088729421459e+01 ||r(i)||/||b|| 5.851499665310e-01
>   Linear solve converged due to CONVERGED_RTOL iterations 4
>     NL Step =  1, fnorm =  4.08788E+01
>     0 KSP preconditioned resid norm 1.851047973094e+03 true resid norm 4.087882723223e+01 ||r(i)||/||b|| 1.000000000000e+00
>     1 KSP preconditioned resid norm 3.696809614513e+01 true resid norm 2.720016413105e+01 ||r(i)||/||b|| 6.653851387793e-01
>     2 KSP preconditioned resid norm 5.751891392534e+00 true resid norm 3.326338240872e+01 ||r(i)||/||b|| 8.137068663873e-01
>     3 KSP preconditioned resid norm 8.540729397958e-01 true resid norm 8.672410748720e+00 ||r(i)||/||b|| 2.121492062249e-01
>   Linear solve converged due to CONVERGED_RTOL iterations 3
>     NL Step =  2, fnorm =  8.67124E+00
>     0 KSP preconditioned resid norm 5.511333966852e+00 true resid norm 8.671237519593e+00 ||r(i)||/||b|| 1.000000000000e+00
>     1 KSP preconditioned resid norm 1.174962622023e+00 true resid norm 8.731034658309e+00 ||r(i)||/||b|| 1.006896032842e+00
>     2 KSP preconditioned resid norm 1.104604471016e+00 true resid norm 1.018397505468e+01 ||r(i)||/||b|| 1.174454630227e+00
>     3 KSP preconditioned resid norm 4.257063674222e-01 true resid norm 4.023093124996e+00 ||r(i)||/||b|| 4.639583584126e-01
>     4 KSP preconditioned resid norm 1.023038868263e-01 true resid norm 2.365298462869e+00 ||r(i)||/||b|| 2.727751901068e-01
>     5 KSP preconditioned resid norm 4.073772638935e-02 true resid norm 2.302623112025e+00 ||r(i)||/||b|| 2.655472309255e-01
>     6 KSP preconditioned resid norm 1.510323179379e-02 true resid norm 2.300216593521e+00 ||r(i)||/||b|| 2.652697020839e-01
>     7 KSP preconditioned resid norm 1.337324816903e-02 true resid norm 2.300057733345e+00 ||r(i)||/||b|| 2.652513817259e-01
>     8 KSP preconditioned resid norm 1.247384902656e-02 true resid norm 2.300456226062e+00 ||r(i)||/||b|| 2.652973374174e-01
>     9 KSP preconditioned resid norm 1.247038855375e-02 true resid norm 2.300532560993e+00 ||r(i)||/||b|| 2.653061406512e-01
>    10 KSP preconditioned resid norm 1.244611343317e-02 true resid norm 2.299441241514e+00 ||r(i)||/||b|| 2.651802855496e-01
>    11 KSP preconditioned resid norm 1.227243209527e-02 true resid norm 2.273668115236e+00 ||r(i)||/||b|| 2.622080308720e-01
>    12 KSP preconditioned resid norm 1.172621459354e-02 true resid norm 2.113927895437e+00 ||r(i)||/||b|| 2.437861828442e-01
>    13 KSP preconditioned resid norm 2.880752338189e-03 true resid norm 1.076190247720e-01 ||r(i)||/||b|| 1.241103412620e-02
>   Linear solve converged due to CONVERGED_RTOL iterations 13
>     NL Step =  3, fnorm =  1.59729E-01
>     0 KSP preconditioned resid norm 1.676948440854e+03 true resid norm 1.597288981238e-01 ||r(i)||/||b|| 1.000000000000e+00
>     1 KSP preconditioned resid norm 2.266131510513e+00 true resid norm 1.819663943811e+00 ||r(i)||/||b|| 1.139220244542e+01
>     2 KSP preconditioned resid norm 2.239911493901e+00 true resid norm 1.923976907755e+00 ||r(i)||/||b|| 1.204526501062e+01
>     3 KSP preconditioned resid norm 1.446859034276e-01 true resid norm 8.692945031946e-01 ||r(i)||/||b|| 5.442312026225e+00
>   Linear solve converged due to CONVERGED_RTOL iterations 3
>     NL Step =  4, fnorm =  1.59564E-01
>     0 KSP preconditioned resid norm 1.509663716414e+03 true resid norm 1.595641817504e-01 ||r(i)||/||b|| 1.000000000000e+00
>     1 KSP preconditioned resid norm 1.995956587709e+00 true resid norm 1.712323298361e+00 ||r(i)||/||b|| 1.073125108390e+01
>     2 KSP preconditioned resid norm 1.994336275847e+00 true resid norm 1.741263472491e+00 ||r(i)||/||b|| 1.091262119975e+01
>     3 KSP preconditioned resid norm 1.268035008497e-01 true resid norm 8.197057317360e-01 ||r(i)||/||b|| 5.137153731769e+00
>   Linear solve converged due to CONVERGED_RTOL iterations 3
> Nonlinear solve did not converge due to DIVERGED_LINE_SEARCH iterations 4
>  Solve Did NOT Converge!
>  
>  
>  
> From: Zhang, Hong <hzhang at mcs.anl.gov <mailto:hzhang at mcs.anl.gov>>
> Date: Wednesday, March 27, 2024 at 4:59 PM
> To: petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov> <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>>, Zou, Ling <lzou at anl.gov <mailto:lzou at anl.gov>>
> Subject: Re: Does ILU(15) still make sense or should just use LU?
> 
> Ling,
> ILU(level) is used for saving storage space with more computations. Normally, we use level=1 or 2. It does not make sense to use level 15. If you have sufficient space, LU would be the best.
> Hong
>  
> From: petsc-users <petsc-users-bounces at mcs.anl.gov <mailto:petsc-users-bounces at mcs.anl.gov>> on behalf of Zou, Ling via petsc-users <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>>
> Sent: Wednesday, March 27, 2024 4:24 PM
> To: petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov> <petsc-users at mcs.anl.gov <mailto:petsc-users at mcs.anl.gov>>
> Subject: [petsc-users] Does ILU(15) still make sense or should just use LU?
>  
> Hi, I’d like to avoid using LU, but in some cases to use ILU and still converge, I have to go to ILU(15), i.e., `-pc_factor_levels 15`. Does it still make sense, or should I give it up and switch to LU?
> 
>  
> 
> For this particular case, ~2k DoF, and both ILU(15) and LU perform similarly in terms of wall time.
> 
>  
> 
> -Ling
> 

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20240328/db9c801f/attachment-0001.html>


More information about the petsc-users mailing list