<div dir="ltr"><div class="gmail_extra"><div class="gmail_quote">On Mon, Jan 18, 2016 at 9:42 AM, Hoang Giang Bui <span dir="ltr"><<a href="mailto:hgbk2008@gmail.com" target="_blank">hgbk2008@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr">Why P2/P2 is not for co-located discretization? However, it's not my question. The P2/P1 which I used generate variable block size at each node. That was fine if I used PCFieldSplitSetIS for each components, displacements and pressures. But how to set the block size (3) for displacement block?</div></blockquote><div><br></div><div>P2/P1 does not generate block matrices, and is not col-located, because the variables are located at different sets of nodes.</div><div><br></div><div>You can use PCFieldSplitSetIS() to specify the splits. This is the right method for P2/P1.</div><div><br></div><div>Setting the block size for the P2 block is not crucial. When its working we can do that.</div><div><br></div><div>  Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div class="gmail_extra"><div><div><div dir="ltr">Giang</div></div></div>
<br><div class="gmail_quote">On Mon, Jan 18, 2016 at 3:58 PM, 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:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span>On Mon, Jan 18, 2016 at 8:29 AM, Hoang Giang Bui <span dir="ltr"><<a href="mailto:hgbk2008@gmail.com" target="_blank">hgbk2008@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><div><br></div><div class="gmail_extra">
<br><div class="gmail_quote">On Thu, Jan 14, 2016 at 8:08 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div><br>
> On Jan 14, 2016, at 12:57 PM, Jed Brown <<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>> wrote:<br>
><br>
> Hoang Giang Bui <<a href="mailto:hgbk2008@gmail.com" target="_blank">hgbk2008@gmail.com</a>> writes:<br>
>> One more question I like to ask, which is more on the performance of the<br>
>> solver. That if I have a coupled problem, says the point block is [u_x u_y<br>
>> u_z p] in which entries of p block in stiffness matrix is in a much smaller<br>
>> scale than u (p~1e-6, u~1e+8), then AMG with hypre in PETSc still scale?<br>
><br>
> You should scale the model (as Barry says).  But the names of your<br>
> variables suggest that the system is a saddle point problem, in which<br>
> case there's a good chance AMG won't work at all.  For example,<br>
> BoomerAMG produces a singular preconditioner in similar contexts, such<br>
> that the preconditioned residual drops smoothly while the true residual<br>
> stagnates (the equations are not solved at all).  So be vary careful if<br>
> you think it's "working".<br>
<br></div></div></blockquote><div><br></div><div><br></div><div>Using block size 4 with the scaling, the hypre AMG does not converge. So it's somehow right.</div><div><br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div><div>
</div></div>   The PCFIEDSPLIT preconditioner is designed for helping to solve saddle point problems.<br>
<span><font color="#888888"><br>   <br></font></span></blockquote><div><br></div><div>Does PCFIELDSPLIT support variable block size? For example using P2/P1 discretization, the number of nodes carrying [u_x u_y u_z] is different with number of nodes carrying p. PCFieldSplitSetBlockSize would not be correct in this case.</div></div></div></div></blockquote><div><br></div></span><div>You misunderstand the blocking. You would put ALL velocities (P2) in one block and ALL pressure (P1) in another.</div><div>The PCFieldSplitSetBlockSize() call is for co-located discretizations, which P2/P2 is not.</div><div><br></div><div>   Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div dir="ltr"><span><font color="#888888"><div class="gmail_extra">Giang<br></div><div class="gmail_extra"><br></div></font></span></div>
</blockquote></div><span><br><br clear="all"><span class=""><font color="#888888"><div><br></div>-- <br><div>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</font></span></span></div></div>
</blockquote></div><br></div>
</blockquote></div><br><br clear="all"><div><br></div>-- <br><div class="gmail_signature">What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>-- Norbert Wiener</div>
</div></div>