Closed SreevatsaAnantharamu closed 4 years ago
@trilinos/teko
@SreevatsaAnantharamu You could have a look at MiniEM, and the block preconditioner it uses: https://github.com/trilinos/Trilinos/blob/master/packages/panzer/mini-em/src/solvers/MiniEM_FullMaxwellPreconditionerFactory.cpp
@cgcgcg Thanks for the referring me to the code https://github.com/trilinos/Trilinos/blob/master/packages/panzer/mini-em/src/solvers/MiniEM_FullMaxwellPreconditionerFactory.cpp
I will look into the MiniEM_FullMaxwellPreconditionerFactory.cpp and try to make my custom block preconditioner.
I was able to successfully create my custom block preconditioner. Thanks to @eric-c-cyr for clarifying many of my doubts and @cgcgcg for pointing me to the Maxwell preconditioner factory.
I am closing this issue.
Question
@trilinos/\<Teko>
I am wondering about how to use Teko to construct the following custom block-diagonal preconditioner for the following saddle point problem that arises from stable mixed FEM discretization for incompressible elasticity, [K G] [u] = [bu] [GT 0] [p] = [bp] Here, K is a symmetric positive definite stiffness matrix, G is the gradient matrix, and GT is the transpose of G.
The block-diagonal preconditioner that I would like to create for the MINRES iterations of the above saddle point problem is
P^{-1} = [(K_{AMG})^{-1} 0 ] [ 0 M^{-1}]
where (K_{AMG})^{-1} is the action of the AMG preconditioner on a vector, M^{-1} is a sparse matrix whose entries I explicitly know. This preconditioner is from a paper by Elman et al. (2007).
I have K, G, GT, M^{-1} stored as TPETRACRSMATRICES. I have the action of (K_{AMG})^{-1} as a MUELU preconditioner and have setup MINRES as a BELOS solver.
I know that the Teko package within Trilinos provides block-preconditioning capabilities, but I am unsure how to use it to construct the above block-diagonal preconditioner. Can you please help me out with this? Is there any example code that I can look into that would help me? I tried looking into tests and example directories within Teko package, but could not find.
Thanks, Sreevatsa