<html><head><meta http-equiv="Content-Type" content="text/html charset=iso-8859-1"></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">I see that the fine grid smoother is calling my matrix free formFunction routine:<div><br></div><div><div>(gdb) frame 11</div><div>#11 0x00000001020f6cbe in PCMGMCycle_Private (pc=0x1096b2270, mglevelsin=0x112183098, reason=0x0) at mg.c:19</div><div>warning: Source file is more recent than executable.</div><div>19        ierr = KSPSolve(mglevels->smoothd,mglevels->b,mglevels->x);CHKERRQ(ierr);  /* pre-smooth */</div><div>Current language:  auto; currently c</div><div>(gdb) list</div><div>14        PetscErrorCode ierr;</div><div>15        PetscInt       cycles = (mglevels->level == 1) ? 1 : (PetscInt) mglevels->cycles;</div><div>16      </div><div>17        PetscFunctionBegin;</div><div>18        if (mglevels->eventsmoothsolve) {ierr = PetscLogEventBegin(mglevels->eventsmoothsolve,0,0,0,0);CHKERRQ(ierr);}</div><div>19        ierr = KSPSolve(mglevels->smoothd,mglevels->b,mglevels->x);CHKERRQ(ierr);  /* pre-smooth */</div><div>20        if (mglevels->eventsmoothsolve) {ierr = PetscLogEventEnd(mglevels->eventsmoothsolve,0,0,0,0);CHKERRQ(ierr);}</div><div>21        if (mglevels->level) {  /* not the coarsest grid */</div><div>22          if (mglevels->eventresidual) {ierr = PetscLogEventBegin(mglevels->eventresidual,0,0,0,0);CHKERRQ(ierr);}</div><div>23          ierr = (*mglevels->residual)(mglevels->A,mglevels->b,mglevels->x,mglevels->r);CHKERRQ(ierr);</div><div>(gdb) p mglevels->level</div><div>$1 = 5</div><div><br></div><div>gamg.c sets all the operators with the same matrix, as far as I can see.  Could SNES be setting the matrix type somehow?</div><div><br></div><div>Mark</div><div><br></div><div><div>On Mar 6, 2013, at 4:48 PM, Peter Brune <<a href="mailto:prbrune@gmail.com">prbrune@gmail.com</a>> wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div dir="ltr"><div>That's the thing; you WANT a MFFD matrix in the snes->jacobian slot but not the snes->jacobian_pre slot.<br><br></div><div>Somewhere the PC's getting the wrong one and putting it on the smoother.<br>
</div><div><br></div>- Peter<br></div><div class="gmail_extra"><br><br><div class="gmail_quote">On Wed, Mar 6, 2013 at 3:44 PM, Mark F. Adams <span dir="ltr"><<a href="mailto:mark.adams@columbia.edu" target="_blank">mark.adams@columbia.edu</a>></span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div class="im">><br>
>  Yikes, the logic of SNES and MG (with dm etc) is getting a bit too convoluted. I would run in the debugger with a break point for MatCreate_MFFD() this will give a hint why it is being used.<br>
><br>
<br>
</div>#0  0x0000000100fca059 in MatCreate_MFFD ()<br>
#1  0x0000000100eedc34 in MatSetType ()<br>
#2  0x0000000100fc7bc3 in MatCreateMFFD ()<br>
#3  0x00000001012acc90 in MatCreateSNESMF ()<br>
#4  0x00000001012c092e in SNESSetUp ()<br>
#5  0x00000001012c277b in SNESSolve ()<br>
<br>
I will keep digging.  This is the first one and it is not in the PC ...</blockquote></div><br></div>
</blockquote></div><br></div></body></html>