<div dir="ltr"><div><br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Sep 19, 2013 at 1:28 PM, Jungho Lee <span dir="ltr"><<a href="mailto:julee@mcs.anl.gov" target="_blank">julee@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 dir="ltr"><div class="gmail_extra"><div>To fill others in on the situation here; this was regarding a variational inequality example, that uses reduced space method for which routines are defined in src/snes/impls/vi/rs/virs.c.  When MatGetSubMatrix was called to extract rows and columns of the original matrix corresponding to the "inactive" indices, original information about the block size wasn't copied.</div>





<div><br></div><div>KSP performance (with fgmres and gmres) deteriorates dramatically when I switch from mg to gamg (with agg), which I think is due to the lack of mechanism in gamg to take inactive/active indices into consideration for examples like this. </div>

</div></div></blockquote>Wouldn't gamg work with the submatrix of only inactive degrees of freedom -- the jac_inact_inact in KSPSetOperators(snes->ksp,jac_inact_inact,prejac_inact_inact,flg) of SNESSolve_VINEWTONRSLS()?</div>

<div class="gmail_quote"><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"><div class="gmail_extra">



<div><br></div><div>There is DMSetVI in virs.c, which marks snes->dm as being associated with VI and  makes it call an appropriate versions of coarsen (and createinterpolation, etc.,) which takes inactive IS into account, which in turn gets called in PCSetUp_MG. This part of PCSetUP_MG is skipped when gamg is used since it employs its own algorithm to figure out the coarse grid. So I think a possible solution is to provide a similar mechanism for gamg as well - but how?.<br>



</div><div><br></div><div>Ideas?</div><div class="im"><div style="font-size:large"><br></div>

<div><span style="font-size:small">On Wed, Sep 18, 2013 at 9:11 PM, Mark F. Adams </span><span dir="ltr" style="font-size:small"><<a href="mailto:mfadams@lbl.gov" target="_blank">mfadams@lbl.gov</a>></span><span style="font-size:small"> wrote:</span><br>





</div><div class="gmail_quote"><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>>>> results in two levels with the coarse problem being 13*13. Wouldn't<br>






>>> it be natural for the coarse problem to be of size that's an integer<br>
>>> multiple of 3, though?<br>
<br>
</div>Yes, something is wrong here.  And as Jed said if you have different Mats for the operator and preconditioner the you have to set the block size on the preconditioned Mat.  If you are then we have a problem.<span style="font-size:large"></span></blockquote>





<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"><span style="font-size:large"></span></blockquote><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><br>
><br>
>>> 2) For the specific set of parameters I'm using for testing purposes,<br>
>>> the smallest nonzero entry of the finest level matrix is of order<br>
>>> e-7.<br>
<br>
</div>BTW, the scaling of the matrix should not matter.  If you see a difference then we would want to look at it.<br>
<div><br>
>>> For the coarse level matrix (size 13*13), whose entries are<br>
>>> determined by MatPtAP called in createlevel (in gamg.c), the smallest<br>
>>> nonzero entry is of order e-24 - this jumped out at me as a potential<br>
>>> sign of something wrong.<br>
<br>
</div>Oh, you are talking about the smallest.  That does not matter.  (its a sparse matrix so technically the smallest entry is zero)<div><div></div></div></blockquote>
</div><br><br></div></div></div>
</blockquote></div><br></div></div>