Many thanks for your reply ! I used -snes_converged_reason and found that the ksp linear solver diverged during the 1st iteration... The KSP iterations reached 10000 and stopped automatically.
After checking the tolerance values with -snes_view, I found that the tolerances are in fact correctly set to default... However I previously used "printf" instead of standard PETSc "view" to output the tolerance values... And this led to incorrect printing of tolerances... Sorry about the confusion... Thank you so much for helping me debug the code. Mark Adams <[email protected]> 于2021年12月13日周一 03:53写道: > > > On Sun, Dec 12, 2021 at 7:47 PM [email protected] < > [email protected]> wrote: > >> Thank you so much for your reply ! >> >> In fact I didn't know how to set tolerances, so I proceeded without >> specifying the tolerances, hoping that this could lead to the >> implementation of default values... >> >> I just added *SNESSetFromOptions(snes); *However, it doesn't make any >> difference... But it's true that the "tol" values are somehow set to >> zero... >> >> *atol = 0.000000, rtol = 0.000000, stol = 0.000000, maxit = 50, maxf = >> 10000* >> > > I'm not sure where this output comes from. This does not look like PETSc > "view" output. The default values are small (eg, 1e-8). > maxit=50 and maxf=10000 look like the defaults. Maybe you are printing > floats incorrectly. > > Your output below is converging due to maxit=50. > rtol==0 would never converge because the relative residual can essentially > never be 0. > You can also use -ksp_monitor to view the linear solver iterations and > -ksp_converged_reason to have the solver print the reason that it > "converged". > -snes_converged_reason makes the SNES print why it decided to stop > iterating. > These parameters should give you more information about the case where you > see no output (unless the code is hung). > > Mark > > >> >> >> * 0 SNES Function norm 7.604910424038e+02* >> >> Is it possible that it has something to do with my makefile ? >> >> Since I didn't figure out the PETSc makefile format (which seems to be >> different from standard C makefile format), I named my source code as >> *ex1.c* to make use of the default settings for PETSc example programs... >> >> And in my makefile I wrote : >> >> >> >> >> *include ${PETSC_DIR}/lib/petsc/conf/variablesinclude >> ${PETSC_DIR}/lib/petsc/conf/testex1: ex1.o* >> >> Is it possible the "tol" values are set to 0 by the default setting used >> for example programs ? >> >> Thank you so much for your help. >> >> PS: I just tried the same code with less degrees of freedom and this time >> it worked... But for a large system it didn't... >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> >> *atol = 0.000000, rtol = 0.000000, stol = 0.000000, maxit = 50, maxf = >> 10000 0 SNES Function norm 1.164809703659e+00 1 SNES Function norm >> 1.311388740736e-01 2 SNES Function norm 7.232579319557e-02 3 SNES >> Function norm 4.984271911548e-02 4 SNES Function norm 3.224387373805e-02 >> 5 SNES Function norm 6.898280568053e-03 6 SNES Function norm >> 6.297558001575e-03 7 SNES Function norm 5.358028396052e-03 8 SNES >> Function norm 4.591005105466e-03 9 SNES Function norm 4.063981130201e-03 >> 10 SNES Function norm 3.715929394609e-03 11 SNES Function norm >> 3.428330101253e-03 12 SNES Function norm 3.177113603032e-03 13 SNES >> Function norm 2.958574186594e-03 14 SNES Function norm 2.769227811865e-03 >> 15 SNES Function norm 2.605947870584e-03 16 SNES Function norm >> 2.465934405221e-03 17 SNES Function norm 2.346761136962e-03 18 SNES >> Function norm 2.246362261451e-03 19 SNES Function norm 2.163102452591e-03 >> 20 SNES Function norm 2.095849101382e-03 21 SNES Function norm >> 2.043740325461e-03 22 SNES Function norm 2.005106316761e-03 23 SNES >> Function norm 1.975748994170e-03 24 SNES Function norm 1.949413335428e-03 >> 25 SNES Function norm 1.920795414593e-03 26 SNES Function norm >> 1.886883259141e-03 27 SNES Function norm 1.846374653045e-03 28 SNES >> Function norm 1.799050087038e-03 29 SNES Function norm 1.745284156916e-03 >> 30 SNES Function norm 1.685885151987e-03 31 SNES Function norm >> 1.621850994665e-03 32 SNES Function norm 1.554258940064e-03 33 SNES >> Function norm 1.484213253375e-03 34 SNES Function norm 1.412768267404e-03 >> 35 SNES Function norm 1.340893218332e-03 36 SNES Function norm >> 1.269412489589e-03 37 SNES Function norm 1.199029202116e-03 38 SNES >> Function norm 1.130300263372e-03 39 SNES Function norm 1.063694395854e-03 >> 40 SNES Function norm 9.995826338243e-04 41 SNES Function norm >> 9.383610129089e-04 42 SNES Function norm 8.807543352645e-04 43 SNES >> Function norm 8.288695938590e-04 44 SNES Function norm 7.898873173876e-04 >> 45 SNES Function norm 7.752509690373e-04 46 SNES Function norm >> 7.625724154377e-04 47 SNES Function norm 7.503152403370e-04 48 SNES >> Function norm 7.364744378378e-04 49 SNES Function norm 7.202926541551e-04 >> 50 SNES Function norm 7.015245603442e-04 * >> >> Mark Adams <[email protected]> 于2021年12月13日周一 01:11写道: >> >>> The three "tol" values should be finite. It sounds like you set them to >>> 0. >>> Don't do that and use the defaults to start. >>> The behavior with zero tolerances is not defined. >>> You can use -snes_monitor to print out the iterations. >>> >>> On Sun, Dec 12, 2021 at 6:22 PM [email protected] < >>> [email protected]> wrote: >>> >>>> Hello, >>>> >>>> I encountered a strange problem concerning the convergence of SNES. >>>> >>>> In my recent test runs I found that SNES always stops at iteration 0... >>>> >>>> At first I thought there may be an error with the tolerance setting, so >>>> I output the tolerances : >>>> >>>> >>>> >>>> *atol = 0.000000, rtol = 0.000000, stol = 0.000000, maxit = 50, maxf = >>>> 10000 Norm of error 760.491 Iterations 0* >>>> >>>> Which are exactly the default values that I always used. However, for >>>> the same tolerance settings, the SNES solver converges successfully if I >>>> decrease the number of degrees of freedom in my system... >>>> >>>> I wish to know if anyone has experienced the same type of problems or >>>> has an idea about what could possibly cause the problem... >>>> >>>> Thank you so much in advance. >>>> >>>> I appreciate any advice that you provide. >>>> >>>> >>>> >>>> >>>> >>>> >>>>
