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

Reply via email to