<p>Isn't PtAP still the right operation, you just have a particular implementation that takes advantage of structure?</p>
<p>I know you can also assemble B A^{-1} B^T, which is the same thing, and maybe we should provide a generic op for that.</p>
<div class="gmail_quote">On May 11, 2012 1:17 PM, "Stefano Zampini" <<a href="mailto:stefano.zampini@gmail.com">stefano.zampini@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<br><div class="gmail_quote">2012/5/11 Jed Brown <span dir="ltr"><<a href="mailto:jedbrown@mcs.anl.gov" target="_blank">jedbrown@mcs.anl.gov</a>></span><br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">

<p>I don't like this idea of the matrix type determining the algorithm, I'd rather choose the algorithm.</p></blockquote><div><br>This is note the case in my BDDC: it is the algorithm that drives the type of matrix to be built.<br>

 <br></div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<p>Can we decouple it by building the prolongation operator P whose columns are harmonic extension of the coarse nodes? Then the coarse operator looks like P^T A P just like multigrid (for which we have a matop) instead of looking like a Schur complement.</p>

</blockquote><div>I already have it. Each process has its local part, splitted in the 
matrices pcbddc->coarse_phi_B (local interface nodes) and  (optionally) 
pcbddc->coarse_phi_D (local dirichlet nodes). You can see that I used them to check the correctness of the coarse local part in the code (see line 1702 of bddc.c). I build the local part of coarse matrix
 , but I don't use the expensive PtAP operation. Instead, I evaluate it 
by exploiting properties of the saddle point problem they come from.<br><br><br> </div><blockquote class="gmail_quote" style="margin:0pt 0pt 0pt 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div>
<div>

<div class="gmail_quote">On May 10, 2012 2:42 PM, "Stefano Zampini" <<a href="mailto:stefano.zampini@gmail.com" target="_blank">stefano.zampini@gmail.com</a>> wrote:<br type="attribution"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">



<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="gmail_quote"><div>This is to do recursive BDDC or what?</div><div><br></div></div>




</blockquote><div><br>Yes. When creating the BDDC coarse matrix, now the code has three 3 options<br><br>A) coarse matrix is a MATIS -> multilevel BDDC <br>B) coarse matrix is SEQAIJ -> one level BDDC with only one proc (or all) solving directly the coarse problem<br>




C) coarse matrix is MPIAIJ -> one level  BDDC with a parallel direct solve <br> <br>I think that PCREDUNDANT can do the job in both cases of options B if the matrix would be parallel. <br>
</div></div>
</blockquote></div>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>Stefano<br>
</blockquote></div>