On Tue, Apr 2, 2013 at 10:16 AM, Dharmendar Reddy <dharmareddy84 at gmail.com>wrote:
> Hello, > I am confused about the usage of SNESSetFunction, > DMSNESSetFunction, DMSNESSetFunctionLocal and the corresponding Jacobin > routines. > > At present my code is set up as follows. > > I initiate SNES with getFunction and getJacobain routines required as per > SNESSet<Function,Jacobian>. I pass a user context which has the mesh and > field layout information. I assemble the residual function and Jacobin > element wise using the information from user context. My code at this point > is serial, so i run the element loop from 1 to numberofTotalElements. > > Now i want to switch to using DMPlex. How should i change the interface to > my code. > You can always look at SNES ex62 http://www.mcs.anl.gov/petsc/petsc-dev/src/snes/examples/tutorials/ex62.c.html > If i set the dm for snes using SNESSetDM, i can see that the DM can be > accessed via SNESGetDM inside getFunction and getJacobian, then i get the > elementStartID and elementEndID to run the loop for assmbler. But now i > will have to assemble to local vector into global vector right ? > No, here is the sequence: 1) SNESSetDM(snes, dm) 2) DMSNESSetFunctionLocal(dm, userResidual, userCtx) where we have userResidual(DM dm, Vec X, Vec F, void *userCtx) Both X and F are local vectors which I normally interact with using DMPlexVecGet/SetClosure(). If you are using FEM, you can DMPlexComputeResidualFEM() here and use DMPlexSetFEMIntegration() to input point-wise physics functions as is done in ex62. > Looks like the DMSNESSetFunctionLocal will assemble the local > vector into global vector. The function provided to this should just > evaluate the local vector. Did i understand this right ? > > I am confused about passing the DM in DMSNESSet<Function,Jacobian>. When > the DM can be accessed via SNESGetDM, why do we pass it again explicitly ? > You are not passing the SNES, so where would it come from in this call? Matt > > -- > ----------------------------------------------------- > Dharmendar Reddy Palle > Graduate Student > Microelectronics Research center, > University of Texas at Austin, > 10100 Burnet Road, Bldg. 160 > MER 2.608F, TX 78758-4445 > e-mail: dharmareddy84 at gmail.com > Phone: +1-512-350-9082 > United States of America. > Homepage: https://webspace.utexas.edu/~dpr342 > -- What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead. -- Norbert Wiener -------------- next part -------------- An HTML attachment was scrubbed... URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20130402/dcd32596/attachment.html>
