Matthew Knepley <[email protected]> writes: > On Sun, Sep 10, 2017 at 9:15 AM, Praveen C <[email protected]> wrote: > >> >> >>> >>> You can use SNESSetJacobian, but DMSNESSetJacobianLocal is more >>> convenient in my opinion. >>> >>> > I still have some doubt. If >>> > >>> > da0 --> for residual >>> > da1 --> for jacobian >>> > >>> > I still need to call SNESetDM. So here I pass da0 ? But then how will >>> snes >>> > know about da1 ? >>> >>> This should work. >>> >>> DMCreateMatrix(da1, &Jpre); >>> SNESSetDM(snes, da0); >>> SNESSetJacobian(snes, NULL, Jpre, NULL, NULL); >>> DMDASNESSetJacobianLocal(da0, func, ctx); >>> >>> >>> In the last line above, should it not be da1 ? >> > > No, Jed is saying that using a DA with a wider stencil on that Jacobian is > alright as long as > you do not try to input values outside the more restricted sparsity pattern.
Yeah, SNES only knows about one DM and will use it for communication, etc. An alternative is to implement a function for SNESSetJacobian -- if you do this, you need to get the local work space and do communication explicitly.
signature.asc
Description: PGP signature
