Working example in https://gitlab.com/petsc/petsc/-/merge_requests/6430
> On May 7, 2023, at 11:47 AM, Barry Smith <[email protected]> wrote: > > > Note, you must call the default test on iteration 0. This is how it > determines the initial residual for relative residual tests etc. > > I recommend not having the if () test at all. Instead, always call the > default convergence test first and then change the flag value it provides if > needed before doing any custom checking. > >> On May 7, 2023, at 11:38 AM, Barry Smith <[email protected]> wrote: >> >> >> The code will not work as written because KSPConvergedDefault() requires >> a context created with KSPConvergedDefaultCreate(). >> >> Here is a starting point for what you need, in main >> >> integer*8 defaultctx >> extern MyKSPConverged, KSPConvergedDefaultDestroy >> >> KSPDefaultConvergedCreate(defaultctx,ierr) >> KSPSetConvergenceTest >> <https://petsc.org/main/manualpages/KSP/KSPSetConvergenceTest/>(ksp,MyKSPConverged,defaultctx,KSPConvergedDefaultDestroy, >> ierr) >> >> >> subroutine MyKSPConverged(ksp,n,rnorm,flag,defaultctx,ierr) >> >> KSP ksp >> PetscErrorCode ierr >> PetscInt n >> integer*8 defaultctx >> KSPConvergedReason flag >> PetscReal rnorm >> >> if (n>1) then >> call KSPConvergedDefault(ksp, n, rnorm, flag,defaultctx, ierr) >> else >> flag = 0 >> endif >> ierr = 0 >> >> end subroutine MyKSPConverged >> >> >> >>> On May 7, 2023, at 10:09 AM, Matthew Knepley <[email protected]> wrote: >>> >>> On Sun, May 7, 2023 at 10:02 AM Edoardo alinovi <[email protected] >>> <mailto:[email protected]>> wrote: >>>> Thanks, >>>> >>>> Is this a reasonable thing to do if I want to replicate what KSP is doing >>>> by default? >>> >>> Yes. The other option is to pass along 'dummy' >>> >>> Thanks, >>> >>> Matt >>> >>> -- >>> 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/> >> >
