block matrices

Gideon Simpson grs2103 at columbia.edu
Sun Jan 6 09:27:58 CST 2008


Ok, I should have been more explicit.  I'm trying to implement the  
Elman et al. style preconditioner for Stokes using FEniCS and dolfin,  
in which the system:

K = [A B^T; B 0]
A the vector laplacian, B the divergence operator, B^T the gradient  
operator, is preconditioned with an approximate inverse of

P = [ A 0; 0 Q]
where A is still the vector laplacian, and Q is the pressure mass  
matrix.

Matrix A naturally appears in the construction of matrix K, but  
matrix Q will be constructed separately.  I can grab matrix A as a  
submatrix from K, but the question then becomes how to assemble them  
into a matrix P to hand off to:

KSPSetOperators(ksp, K, P, SAME_NONZERO_PATTERN);


On Jan 6, 2008, at 8:40 AM, Barry Smith wrote:

> Gideon,
>
>   It really depends on what you want to use this new matrix for? If  
> you wish to do
> matrix vector products with it then I would suggest making a shell  
> matrix that then
> calls the matrix vector product on each part.  In other words, if  
> possible you probably
> want to avoid explicitly constructing this entire new matrix,  
> unless you really need
> it.
>
>    Barry
>
>
> On Jan 5, 2008, at 7:54 PM, Gideon Simpson wrote:
>
>> Suppose I have two sparse matrices A and Q and now I want to  
>> construct a block diagonal matrix, K,
>>
>> K = 	[A,0]
>> 	[0,Q]
>>
>> What is the "right" way to do this is?
>>
>>
>> -Gideon Simpson
>>  Department of Applied Physics and Applied Mathematics
>>  Columbia University
>>
>>
>

-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20080106/85f548ce/attachment.htm>


More information about the petsc-users mailing list