On 1 Jun 2016, Giacomo Mulas <[email protected]> wrote: > > > On Wed, 1 Jun 2016, Jose E. Roman wrote: > >> This functionality is currently very basic, not intended for doing >> sophisticated computations. Currently there is no public API for >> accessing eigenvectors during EPSSolve. Adding this would require a >> non-trivial effort. > > Well, the currently converged eigenvectors (I need only the vectors, not the > eigenvalues) _must_ be somewhere, in some format in the eps structure. Of > course I would need to only read them without modifying anything. And > actually not even all of them, only some components. Could you tell me if > there is some part of the code I can read to understand where they are > stored, so I can try to read them even without high-level interfaces?
Try EPSComputeRitzVector() > > Alternatively, a sort of inelegant but effective way of doing this would be > to > 1) make a complete copy, a snapshot, of the EPS structure, store it via the > private ctx variable of MyStoppingTest every time a new eigenpair is found, > and have MyStoppingTest return EPS_CONVERGED_USER > 2) outside EPSSolve, do the actual convergence check, using all usual fancy > EPSGetConverged and EPSGetEigenvector calls, which are then available 3) if > more eigenpairs are needed, restore eps from the snapshot, so EPSSolve > does not have to start from scratch every time, and have it resume from > where it was. > To achieve this, I would need to know what I need to copy to "snapshot" an > eps structure, and how to resume a partial EPSSolve calculation from where > it was interrupted. SLEPc is not prepared for this kind of stuff. Sorry. > > Would either solution (read converged eigenvectors directly off memory from > the eps structure or snapshot/resume EPSSolve) be viable without much effort > on your part (except telling me where to look in the code and possibly > answering some additional question if there's something I can't figure out)?
