[petsc-dev] Bordered systems and low-rank corrections

Jed Brown jedbrown at mcs.anl.gov
Fri Nov 4 10:04:43 CDT 2011


We have seen two requests recently for closely related concepts: bordered
systems containing dense rows and low-rank corrections. A bordered system
has a block form

A B
C D

where A is something "usual", B consists of a few dense columns, and C
consists of a few dense rows. We can store this efficiently in PETSc using
MATNEST where A is any matrix type, B has type MATDENSE, and C has type
MATTRANSPOSE encapsulating an MATDENSE.

Of course we can use a FieldSplit approach to solve with this, producing a
low-rank correction appearing from the Schur complement of D: S = A - B
D^{-1} C. Since D is usually very small and dense, we may have its inverse
explicitly. S can be solved with using the Woodbury formula, provided you
have a standard preconditioner for A.

We can easily implement MatSetValues_Transpose() to facilitate convenient
assembly of bordered systems using MatSetValuesLocal(). Does anyone have a
better idea for constructing these things?

The Woodbury formula stuff can probably be a new PC that operates on a
MATSCHURCOMPLEMENT by doing direct solves with the eliminated matrix
(typically redundantly in this case, because the dimension should be small
for this to make sense). Other API suggestions?
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20111104/a8ea10a2/attachment.html>


More information about the petsc-dev mailing list