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 > <mailto: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 > <mailto: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 >> <mailto: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 >> <mailto: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 >> > <mailto: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/>