You can use VecDuplicateVecs() to create an array of Vec. Yes, you can use VecLoad() to read the data from a binary file.
Jose > El 2 sept 2024, a las 8:56, dazza simplythebest <sayos...@hotmail.com> > escribió: > > Dear All, > I am seeking to perform a large number of eigenvalue calculations > (related to a fluid dynamics > problem) using the slepc framework. I have written the program that calls > slepc and validated its solutions against > known results for special cases - the Jacobi-Davidson iteration seemed to > perform best on this problem. > Since in the 'production-level' calculation I will step through a parameter > space which should > mean only small changes to the eigenproblem between each calculation, it > seems to make sense > to use the previous solution as the initial guess for the next calculation. > > The sequence to execute this strategy would seem to be: > To write out the current soln subspace: > > call EPSGetInvariantSubspace > [ call VecView -> binary file (if a file storage is required for possible > restart)] > > To then read in this data to use it as the initial subspace for the next run: > > call EPSSetInitialSpace > > My question is that EPSGetInvariantSubspace needs an 'array of nconv > vectors', how does one create > such an array ? My understanding is that the Vec structure is just a > one-dimensional array (with contents > possibly scattered in non-contiguous memory locations !?) , so do we just > need to create a long Vec > that stores multiple vectors ? How can we do this (the examples I have seen > thus far use a MatCreateVecs to specify the size > of the Vec)? > > If loading such a subspace from a binary file (created maybe by VecView), > presumably VecLoad is the > best way to load such an array of vectors from the binary file ? > > Best wishes and many thanks, > Dan.