On Fri, Nov 4, 2011 at 09:13, Matthew Knepley <knepley at gmail.com> wrote:
> So that means the construction layout of C should mirror B. I wonder if > that is strange. > The ownership rows of B are normally the same as the ownership rows of A. Similarly for columns of C. > Also, does D have a few rows on each proc, meaning B would be spread out > too? > It doesn't matter where D (usually dense) is stored because it will typically be used redundantly. (These algorithms only make sense when D is pretty small. In practice, it is usually less than 10x10.) > 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? >> > > Constructing B and C together I think might be the easiest, and having an > option for C = B^T. > You construct them together, but you want C to have a column partition, otherwise some process will be overloaded. > > >> 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? >> > > I think we need an example. > You just apply the formula. Setup involves solving (perhaps approximately) with a few vectors, then the convergence is rate is normally the same as for A, with a few extra vector operations per iteration. http://en.wikipedia.org/wiki/Woodbury_matrix_identity -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20111104/55069111/attachment.html>
