[petsc-users] SNES always ends at iteration 0
Matthew Knepley
knepley at gmail.com
Sun Dec 12 20:31:31 CST 2021
On Sun, Dec 12, 2021 at 7:48 PM celestechevali at gmail.com <
celestechevali at gmail.com> 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...
>
1) If you call *SNESSetFromOptions(), you can set the tolerances using*
-snes_rtol 1e-8
or similar.
2) These are not the default values, so you are definitely changing them.
I suspect you are calling SNESetTolerances(). Do not call it unless you
want to set them.
3) Give -snes_converged_reason, so we can see why the iteration stopped.
Thanks,
Matt
>
> *atol = 0.000000, rtol = 0.000000, stol = 0.000000, maxit = 50, maxf =
> 10000 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 <mfadams at lbl.gov> 于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 celestechevali at gmail.com <
>> celestechevali at gmail.com> 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.
>>>
>>>
>>>
>>>
>>>
>>>
>>>
--
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
https://www.cse.buffalo.edu/~knepley/ <http://www.cse.buffalo.edu/~knepley/>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20211212/7de24635/attachment.html>
More information about the petsc-users
mailing list