So when would I use one over the other? - If I wanted to solve a problem using a direct solver or an iterative solver without a preconditioner, I would use A = J?
- 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? Thanks, Justin On Mon, Nov 2, 2015 at 1:39 PM, Jed Brown <[email protected]> wrote: > Justin Chang <[email protected]> writes: > > > Hi all, > > > > In my DMPlex program, I have these lines: > > > > Mat A,J; > > > > ... > > > > ierr = DMSetMatType(dm, MATAIJ); CHKERRQ(ierr); > > ierr = DMCreateMatrix(dm, &J); CHKERRQ(ierr); > > A = J; > > > > ierr = DMSNESSetFunctionLocal(dm, ...); CHKERRQ(ierr); > > ierr = DMSNESSetJacobianLocal(dm, ...); CHKERRQ(ierr); > > ierr = SNESSetJacobian(snes, A, J, NULL, NULL); CHKERRQ(ierr); > > ierr = SNESSetFromOptions(snes); CHKERRQ(ierr); > > > > ... > > > > ierr = SNESSolve(snes, NULL, x); CHKERRQ(ierr); > > > > ... > > ierr = MatDestroy(&J); CHKERRQ(ierr); > > > > > > For the line "A = J;", > > This means you have two handles referring to the same object. > > > what exactly is the difference, if any, between that and "ierr = > > MatDuplicate(...)" > > This creates a new object. > > > or "ierr = MatCopy(...)"? > > The second argument needs to be a valid Mat to call this function. > > > Do these different options somehow affect memory usage/performance? > > Yes. > > > Say I am solving a standard poisson equation using either GAMG and/or > > HYPRE. > > > > Thanks, > > Justin >
