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