This is a good point. SLEPc does return both real and imaginary parts, e.g. see here: http://www.grycap.upv.es/slepc/documentation/current/docs/manualpages/EPS/EPSGetEigenpair.html
Note that it says "If PETSc is configured with complex scalars the eigenvalue is stored directly in eigr (eigi is set to zero) and the eigenvector in Vr (Vi is set to zero)." So, it looks like in real mode we ignore the imaginary part in SlepcEigenSolver<T>::get_eigenpair since we pass in PETSC_NULL for Vi. But in complex mode the eigenvector should be correct, according to the quote above. So you could configure libMesh with complex numbers, and then it should work for you. But also, we should think about patching SlepcEigenSolver<T>::get_eigenpair so that it sets Vi correctly in real mode as well. Perhaps the simplest way to do that is to add a boolean to select whether we want Vr or Vi when we call get_eigenpair. David On 09/09/2014 05:59 PM, Harshad Sahasrabudhe wrote: > Hi, > > I'm using LibMesh compiled with SLEPc and PETSc in real mode. I'm using > EigenSystem class to solve an eigen problem with real matrix coefficients. > The eigen vectors of such a system can be complex. > > How do I get the complex eigenvectors? As far as I have looked into LibMesh > source code, I have only found the solution to be in this form: > > AutoPtr< NumericVector< Number > > solution > > where the Number is a Real. Does this mean the solution is a real vector? > Then how do we store the imaginary part? > > Thanks, > Harshad > ------------------------------------------------------------------------------ > Want excitement? > Manually upgrade your production database. > When you want reliability, choose Perforce. > Perforce version control. Predictably reliable. > http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk > _______________________________________________ > Libmesh-users mailing list > [email protected] > https://lists.sourceforge.net/lists/listinfo/libmesh-users ------------------------------------------------------------------------------ Want excitement? Manually upgrade your production database. When you want reliability, choose Perforce. Perforce version control. Predictably reliable. http://pubads.g.doubleclick.net/gampad/clk?id=157508191&iu=/4140/ostg.clktrk _______________________________________________ Libmesh-users mailing list [email protected] https://lists.sourceforge.net/lists/listinfo/libmesh-users
