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
signature.asc
Description: PGP signature
