<div dir="ltr">So when would I use one over the other? <br><br>- If I wanted to solve a problem using a direct solver or an iterative solver without a preconditioner, I would use A = J?<br><div><br></div><div>- The documentation for SNESSetJacobian() says that AMat and PMat are usually the same, but if I used something like GAMG would I need to create two different objects/Mats?<br><br></div><div>Thanks,<br></div><div>Justin<br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Mon, Nov 2, 2015 at 1:39 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><span class="">Justin Chang <<a href="mailto:jychang48@gmail.com">jychang48@gmail.com</a>> writes:<br>
<br>
> Hi all,<br>
><br>
> In my DMPlex program, I have these lines:<br>
><br>
> Mat A,J;<br>
><br>
> ...<br>
><br>
> ierr = DMSetMatType(dm, MATAIJ); CHKERRQ(ierr);<br>
> ierr = DMCreateMatrix(dm, &J); CHKERRQ(ierr);<br>
> A = J;<br>
><br>
> ierr = DMSNESSetFunctionLocal(dm, ...); CHKERRQ(ierr);<br>
> ierr = DMSNESSetJacobianLocal(dm, ...); CHKERRQ(ierr);<br>
> ierr = SNESSetJacobian(snes, A, J, NULL, NULL); CHKERRQ(ierr);<br>
> ierr = SNESSetFromOptions(snes); CHKERRQ(ierr);<br>
><br>
> ...<br>
><br>
> ierr = SNESSolve(snes, NULL, x); CHKERRQ(ierr);<br>
><br>
> ...<br>
> ierr = MatDestroy(&J); CHKERRQ(ierr);<br>
><br>
><br>
> For the line "A = J;",<br>
<br>
</span>This means you have two handles referring to the same object.<br>
<span class=""><br>
> what exactly is the difference, if any, between that and "ierr =<br>
> MatDuplicate(...)"<br>
<br>
</span>This creates a new object.<br>
<span class=""><br>
> or "ierr = MatCopy(...)"?<br>
<br>
</span>The second argument needs to be a valid Mat to call this function.<br>
<span class=""><br>
> Do these different options somehow affect memory usage/performance?<br>
<br>
</span>Yes.<br>
<div class="HOEnZb"><div class="h5"><br>
> Say I am solving a standard poisson equation using either GAMG and/or<br>
> HYPRE.<br>
><br>
> Thanks,<br>
> Justin<br>
</div></div></blockquote></div><br></div>