Yes, assuming that the eigensolver is calling KSPSolve(), you can set a monitor with KSPMonitorSet(). This will be called more often than the callback for EPSSetStoppingTestFunction().
Jose > El 4 mar 2022, a las 20:16, Matthew Knepley <[email protected]> escribió: > > > On Fri, Mar 4, 2022 at 2:07 PM Varun Hiremath <[email protected]> wrote: > Hi All, > > We use SLEPc to compute eigenvalues of big problems which typically takes a > long time. We want to add a progress bar to inform the user of the estimated > time remaining to finish the computation. In addition, we also want to add an > option for the user to abort the computation midway if needed. > > To some extent, I am able to do these by attaching a custom function to > EPSSetStoppingTestFunction and using nconv/nev as an indication of progress, > and throwing an exception when the user decides to abort the computation. > However, since this function gets called only once every iteration, for very > big problems it takes a long time for the program to respond. I was wondering > if there is any other function to which I can attach, which gets called more > frequently and can provide more fine-grained information on the progress. > > I believe (Jose can correct me) that the bulk of the time in an iterate would > be in the linear solve. You can insert something into a KSPMonitor. If you > know the convergence tolerance and assume a linear convergence rate I guess > you could estimate the "amount done". > > Thanks, > > Matt > > Thanks, > Varun > > > -- > 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/
