On Feb 8, 2011, at 7:28 AM, Umut Tabak wrote:

> Dear all,
> 
> I would like to create an operator matrix like
> 
> (I - 0.5 C^{-1}(C+kD))
> 
> for linear iterative solvers, where k is a given scalar and C and D are 
> matrices from a FE  discretization.
> 
> Moreover, the second part of the operator matrix can be constructed 
> efficiently by using a matrix-vector product and a forward-backward 
> substitution since I have the factorization of C which is a symmetric matrix.
> 
> I guess I should use matrix free operations and create the two matrices as 
> shell matrices such as M1 (for I) and M2 (for the rest of above) and sum 
> them, is this the most efficient way to do this?
> 

   I would make a single MATSHELL, inside it I would store the k, the matrix C 
and the matrix D, in addition I would store in it a KSP object where I have 
called KSPSetOperators() with the C matrix. Then the PCApply for the shell 
matrix could be .5*( I - k* kspsolve(C)*D)  if I have my math correct. No 
reason that I can see for having more than one shell matrix.

   Barry

> Best wishes,
> Umut
> 
> -- 
> - Hope is a good thing, maybe the best of things
>   and no good thing ever dies...
> The Shawshank Redemption, replique of Tim Robbins
> 

Reply via email to