With petsc-dev http://www.mcs.anl.gov/petsc/petsc-as/developers/index.html there are very easy ways to solve the Schur complement systems using PCFIELDSPLIT see http://www.mcs.anl.gov/petsc/petsc-as/snapshots/petsc-dev/docs/manualpages/PC/PCFIELDSPLIT.html
Barry On May 31, 2011, at 2:41 PM, Hong Zhang wrote: > This is virtually SCHUR complement. You may take a look at > petsc-dev/src/ksp/ksp/examples/tests/ex11.c and > petsc-dev/src/ksp/ksp/examples/tests/makefile: runex11 > > Hong > > On Tue, May 31, 2011 at 8:29 AM, RenZhengYong <renzhengyong at gmail.com> > wrote: >> I have a linear system of equation like >> [A B] [E]= [C] >> [F G] [S]= [D], >> where size of matrix A is NxN, B is NxNs, F is Ns_N, G is Ns_Ns; size of >> vector E is N, S is Ns, C is N and D is N. >> Instead of solving them together, I prefer to solve it by: >> (1) AX=B, AY=C; >> (2) QS=P, Q= G-FX, P=D-FY, >> due to the dense property of G. >> >> In step (1), I need to extract a new "vec" Bi from "mat" B, according to the >> way of PETSc telling me. My question is that could I do it as follows, >> for a given sparse matrix B, first get transpose of B by "MatTranspose(B, >> MatReuse, B_t); then, form a new "vec" Bi by "MatGetRow(...)"? >> If answer is yes, is it expensive? >> >> >> >> >> -- >> Zhengyong Ren >> AUG Group, Institute of Geophysics >> Department of Geosciences, ETH Zurich >> NO H 47 Sonneggstrasse 5 >> CH-8092, Z?rich, Switzerland >> Tel: +41 44 633 37561 >> e-mail: zhengyong.ren at aug.ig.erdw.ethz.ch >> Gmail: renzhengyong at gmail.com >>
