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/

Reply via email to