I am working on the schur complement for eigenvalue problems, following step - 55. My stiffness block matrix is like this:

*| AB.T |
*
*| BC    |*
*
*
and my mass block matrix is structured:

*| M 0 |
*
*| 00 |*
*
*
To obtain A_condensed, inversion of C is required. I have constructed the linear operators for C_inv and A_condensed using the inverse_operator and schur_complement functions based on the documentation here (https://dealii.org/developer/doxygen/deal.II/ group__LAOperators.html#ga76acca911f21089cd3bb385d20ccc995). However, SLEPcWrappers eigensolvers, such as SLEPcWrappers::SolverKrylovSchur and SLEPcWrappers::::SolverGeneralizedDavidson, only accept PETScWrappers::MatrixBase rather than linear operators as said in their documentations. Is there an easy way to form a PETScWrappers::MPI::SparseMatrix from the linear operator?  I am trying not to calculate the schur_complement explicitly, however, it seems i may have to. I would really appreciate it for any suggestions.

Yuchen:
you want to look at PETScWrappers::MatrixFree, which is a class that from the perspective of PETSc looks like a matrix, but implements its own matrix-vector product. You'll have to derive your own class from PETScWrappers::MatrixFree where you implement the vmult() function by calling the vmult() function of the LinearOperator object you have.

Best
 W.

--
The deal.II project is located at http://www.dealii.org/
For mailing list/forum options, see 
https://groups.google.com/d/forum/dealii?hl=en
--- You received this message because you are subscribed to the Google Groups "deal.II User Group" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to [email protected].
To view this discussion visit 
https://groups.google.com/d/msgid/dealii/78b73f04-d6bb-494d-aa32-06af8d0b6275%40colostate.edu.

Reply via email to