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 <bsm...@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 <knep...@gmail.com> wrote: > > On Tue, Jul 28, 2020 at 8:09 PM Alexander Lindsay < > alexlindsay...@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 <bsm...@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...@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 <bsm...@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 < >>>> alexlindsay...@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/> > > >