What's the API for specifying a redundant D?<br><br><div class="gmail_quote">On Fri, Nov 4, 2011 at 10:23 AM, Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov">jedbrown@mcs.anl.gov</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;"><div class="gmail_quote"><div class="im">On Fri, Nov 4, 2011 at 09:13, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br>

<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="gmail_quote"><div>So that means the construction layout of C should mirror B. I wonder if that is strange.</div></div></blockquote><div><br></div></div><div>The ownership rows of B are normally the same as the ownership rows of A. Similarly for columns of C.</div>

<div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div> Also, does D have a few rows on each proc, meaning B would be spread out too?</div>


</div></blockquote><div><br></div></div><div>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.)</div>

<div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><div></div></div><div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">


<div>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?</div>
</blockquote><div><br></div></div><div>Constructing B and C together I think might be the easiest, and having an option for C = B^T.</div></div></blockquote><div><br></div></div><div>You construct them together, but you want C to have a column partition, otherwise some process will be overloaded.</div>

<div class="im">
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<div>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?</div>




</blockquote></div></div><br>I think we need an example.<div></div></blockquote></div></div><div><br></div><div>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.</div>


<br><div><a href="http://en.wikipedia.org/wiki/Woodbury_matrix_identity" target="_blank">http://en.wikipedia.org/wiki/Woodbury_matrix_identity</a></div>
</blockquote></div><br>