>> 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
