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