>> I have a question to solving block systems in deal.II. My (linear)
>> equation system looks like Ax=b where A represents a block matrix (with 9
>> blocks) which looks like
>>
>> A = (A11 , A12, A13)
>>      (A21,  0  , A23)
>>      (A31,  0  , A33)
>>
>> My first idea was to reorder blocks of the system matrix in such a way
>> that I have to solve:
>>
>> A_new  = (A12 , A11, A13)
>>           (0   , A21, A23)
>>           (0   , A31, A33)
>>     

Thomas, your problem here is that the block A12 is the gradient operator
which has a nontrivial kernel, namely the constant pressure functions.

My suggestion would be to follow the standard block preconditioner
concept (MK, is that in one of the steps now?):

You do not reorder the matrix. A preconditioner for P1 A11 is easily
found, for instance a V-cycle. Then you need a preconditioner for the
pressure Schur complement P2 (see literature by Elman, Klawonn,
Silvester, Wathen and myself) and finally one P3 for the the Schur
complement of your fluid strcture interaction, which is probably
non-standard.

As your block-preconditioner, you either use
P1, A11, A13
0, P2, A23
0, 0, P3

or the lower triangle
P1, 0, 0
A21, P2, 0
A31, 0, P3
> An alternative would be to build up a PointerMatrix that just has pointers 
> for 
> the individual blocks within A.
>   

Such a matrix already exists as BlockMatrixArray and the block triangle
preconditioner that allows you to easily construct preconditioners is
BlocKTrianglePrecondition.


Best,
Guido
_______________________________________________
dealii mailing list http://poisson.dealii.org/mailman/listinfo/dealii

Reply via email to