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@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 <hzh...@mcs.anl.gov <mailto:hzh...@mcs.anl.gov>> > Date: Wednesday, March 27, 2024 at 4:59 PM > To: petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov> > <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>>, Zou, Ling > <l...@anl.gov <mailto:l...@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-boun...@mcs.anl.gov > <mailto:petsc-users-boun...@mcs.anl.gov>> on behalf of Zou, Ling via > petsc-users <petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov>> > Sent: Wednesday, March 27, 2024 4:24 PM > To: petsc-users@mcs.anl.gov <mailto:petsc-users@mcs.anl.gov> > <petsc-users@mcs.anl.gov <mailto:petsc-users@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 >