# SLEPc-Complex eigenmodes

**URL:** <https://community.freefem.org/t/slepc-complex-eigenmodes/913>\
**Category:** General Discussion\
**Created:** [April 13, 2021, 7:15pm UTC](https://community.freefem.org/t/slepc-complex-eigenmodes/913 "2021-04-13T19:15:34Z")\
**Posts on this page:** 2\
**Page:** 2

<div class="post-metadata">

**Author:** ![Robert](https://avatars.discourse-cdn.com/v4/letter/r/e95f7d/32.png) [@Robert](https://community.freefem.org/u/Robert)\
**Post date:** [May 5, 2021, 1:34pm UTC](https://community.freefem.org/t/slepc-complex-eigenmodes/913/21 "2021-05-05T13:34:14Z")

</div>

I just copy-pasted your script into my code. I changed only the name of the finite element space and I wrote “us” instead of “v” (as I already have “v” defined as radial velocity) and M which is the equivalent of “DistA” matrix.

> fespace XXXXFES(Th,[P2, P2, P2, P1]);  
> fespace XFES (Th, P2);
> 
> XXXXFES\< complex \>[int] _[EigenVecu,EigenVecv,EigenVecw,EigenVecp]_(nev); //array to store eigenvector  
> XXXXFES\< complex \>[int] _[AdjEigenVecu,AdjEigenVecv,AdjEigenVecw,AdjEigenVecp]_(nev); //array to store adjoint eigenvector  
> int i, k, Adjk;  
> k = EPSSolve(M, J, values=EigenVal, vectors=EigenVecu, sparams = …); //Solve eigenvalue problem /direct  
> Adjk = EPSSolve(AdjM, AdjJ, values=AdjEigenVal, vectors=AdjEigenVecu, sparams = …); //Solve eigenvalue problem /adjoint  
> real[int] D;  
> for (i=0; i\<k; i++)  
> {
> 
> complex wrong = int2d(Th)(EigenVecu[i]\*AdjEigenVecu[i]+EigenVecv[i]\*AdjEigenVecv[i]);  
> cout \<\< mpirank \<\< " " \<\< wrong \<\< endl;  
> XFES\< complex \> scaledVecu = EigenVecu[i];  
> for[i, us : M.D] scaledVecu[i] _= us;  
> XFES\< complex \> scaledVecv = EigenVecv[i][];  
> for[i, us : M.D] scaledVecv[][i] = us;  
> wrong = int2d(Th)(scaledVecuAdjEigenVecu[i]+scaledVecv_AdjEigenVecv[i]);  
> complex reduce;  
> mpiAllReduce(wrong, reduce, mpiCommWorld, mpiSUM);  
> if(mpirank == 0)  
> cout \<\< reduce \<\< endl;
> 
> }

As soon as it reach \*for[i, us : M.D] scaledVecu[i] _= us;_ I get the error from above. I guess the way I define the array to store eigenvector causes the problem with “array type”.

---

<div class="post-metadata">

**Author:** ![prj](https://avatars.discourse-cdn.com/v4/letter/p/ecae2f/32.png) [@prj](https://community.freefem.org/u/prj)\
**Post date:** [May 5, 2021, 1:41pm UTC](https://community.freefem.org/t/slepc-complex-eigenmodes/913/22 "2021-05-05T13:41:48Z")

</div>

Not a problem of type at all, you are solving an eigenvalue problem on the space `XXXXFES`, so your eigenvectors live in `XXXXFES`, yet you do `XFES< complex > scaledVecu = EigenVecu[i]`, which doesn’t make any sense…

[Previous page](https://community.freefem.org/t/slepc-complex-eigenmodes/913.md?page=1)
