[petsc-users] Only print converged reason when not converged

Alexander Lindsay alexlindsay239 at gmail.com
Thu Jul 30 11:14:58 CDT 2020


I like that a lot. I'll try to spin-up a PR (MR on gitlab?) today.

On Tue, Jul 28, 2020 at 6:42 PM Barry Smith <bsmith at petsc.dev> wrote:

>
>   Yes, this is a good idea. Simple extension of current code.
>
>   The command line would then be
>
>     -snes_converged_reason ::failed
>
>    add in petscviewer.h
>
>   a new PetscViewerFormat PETSC_VIEWER_FAILED,
>
>    add in viewera.c PetscViewerFormats FAILED.
>
>    add in SNESReasonView
>
>     if (snes->reason > 0 && format != PETSC_VIEWER_FAILED) {
>
>
>     Document it in SNESReasonView manual page
>
>
> On Jul 28, 2020, at 7:50 PM, Matthew Knepley <knepley at gmail.com> wrote:
>
> On Tue, Jul 28, 2020 at 8:09 PM Alexander Lindsay <
> alexlindsay239 at gmail.com> wrote:
>
>> The only slight annoyance with doing this through a PostSolve hook as
>> opposed to a pluggable ReasonView system is that if a user passed
>> `-snes_converged_reason` on the command line, we would get redundant
>> printout from SNESSolve and our PostSolve. Although I suppose we could
>> solve this by intercepting their option, not passing it to PETSc, and then
>> just using that info to control the output from our PostSolve (e.g. if a
>> user passes -snes_converged_reason from the command line, then we should
>> always print the reason, instead of just printing when we don't converge).
>> So maybe the PostSolve will work fine.
>>
>
> Can't you just define another ASCII format that prints what you want for
> ReasonView?
>
>    Matt
>
>
>> On Tue, Jul 28, 2020 at 12:20 PM Barry Smith <bsmith at petsc.dev> wrote:
>>
>>>
>>>   KPSSetPostSolve(),  There is no SNESSetPostSolve()  but there
>>> could/should be.
>>>
>>>    Barry
>>>
>>>   Note inside the SNESSolve there are a bunch of pre and post hooks,
>>> don't get the confused with an outside SNESSetPostSolve()
>>>
>>> On Jul 28, 2020, at 1:12 PM, Fande Kong <fdkong.jd at gmail.com> wrote:
>>>
>>> One alternative is to support a plugable KSP/SNESReasonView system. We
>>> then could hook up KSP/SNESReasonView_MOOSE.
>>>
>>> We could call our views from SNES/KSP"done"Solve as well if such a
>>> system is not affordable.  What are the final functions we should call,
>>> where we guarantee SNES/KSP is already done?
>>>
>>> Thanks,
>>>
>>> Fande,
>>>
>>> On Tue, Jul 28, 2020 at 12:02 PM Barry Smith <bsmith at petsc.dev> wrote:
>>>
>>>>
>>>>   Alex,
>>>>
>>>>     The actual printing is done with SNESReasonView() and
>>>> KSPReasonView() I would suggest copying those files to Moose with a name
>>>> change and removing all the code you don't want. Then you can call your
>>>> versions immediately after SNESSolve() and KSPSolve().
>>>>
>>>>    Barry
>>>>
>>>>
>>>> > On Jul 28, 2020, at 10:43 AM, Alexander Lindsay <
>>>> alexlindsay239 at gmail.com> wrote:
>>>> >
>>>> > To help debug the many emails we get about solves that fail to
>>>> converge, in MOOSE we recently appended `-snes_converged_reason
>>>> -ksp_converged_reason` for every call to `SNESSolve`. Of course, now we
>>>> have users complaining about the new text printed to their screens that
>>>> they didn't have before. Some of them have made a reasonable request to
>>>> only print the convergence reason when the solve has actually failed to
>>>> converge. Is there some way we can only print the reason if we've diverged,
>>>> e.g. if reason < 0 ?
>>>> >
>>>> > Alex
>>>>
>>>>
>>>
>
> --
> 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/20200730/9fd1f2bf/attachment.html>


More information about the petsc-users mailing list