<html>
<head>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8">
</head>
<body style="word-wrap: break-word; -webkit-nbsp-mode: space; line-break: after-white-space;" class="">
<br class="">
<div><br class="">
<blockquote type="cite" class="">
<div class="">On Nov 1, 2017, at 7:46 PM, Jed Brown <<a href="mailto:jed@jedbrown.org" class="">jed@jedbrown.org</a>> wrote:</div>
<br class="Apple-interchange-newline">
<div class="">
<div class="">Matthew Knepley <<a href="mailto:knepley@gmail.com" class="">knepley@gmail.com</a>> writes:<br class="">
<br class="">
<blockquote type="cite" class="">On Wed, Nov 1, 2017 at 6:50 PM, Blaise A Bourdin <<a href="mailto:bourdin@lsu.edu" class="">bourdin@lsu.edu</a>> wrote:<br class="">
<br class="">
<blockquote type="cite" class="">Hi,<br class="">
<br class="">
I have just spent 2h helping a student debugging a code, and I think that<br class="">
the problem is not ours…<br class="">
See the attached example: 1 create 1 DM and 2 SNES.<br class="">
If I assign the same DM to both SNES, the function and Jacobean of the<br class="">
second are ignored, and the first one is used.<br class="">
Replace the block l 138 - l. 149 with the one commented above, and the<br class="">
result is even weirder.<br class="">
<br class="">
Is this the intended behavior? If so, should there be a note of this<br class="">
behavior in the SNESSetDM man page?<br class="">
</blockquote>
</blockquote>
<br class="">
You can DMClone() when solving the other problem.<br class="">
<br class="">
<blockquote type="cite" class="">I am not sure I understand everything this is doing, but I want to make an<br class="">
upfront point:<br class="">
<br class="">
 SNESSetFunction() is intended for use without a DM<br class="">
<br class="">
When the solver has a DM, we intend you to use<br class="">
<br class="">
 DMSNESSetFunctionLocal() and DMSNESSetJacobianLocal()<br class="">
</blockquote>
<br class="">
This doesn't really matter -- SNESSetFunction just calls<br class="">
DMSNESSetFunction.  Getting rid of SNESSetFunction would save the<br class="">
confusion but break every existing PETSc code.</div>
</div>
</blockquote>
<blockquote type="cite" class="">
<div class="">
<div class=""><br class="">
<blockquote type="cite" class="">However, now I think I see what is happening. The DMSNES is a structure<br class="">
that is intended to mediate between the solver<br class="">
and mesh. When you do SNESSetDM(), it copies over the DMSNES context. This<br class="">
context is already holding the formfunction<br class="">
and formjacobian pointers. Yes, this is confusing.<br class="">
<br class="">
Jed, how should this be documented?<br class="">
</blockquote>
<br class="">
I don't know of a simple rule to prevent this in code.  You can have<br class="">
several SNES that are "related" in the sense that they help solve a<br class="">
given problem (nonlinear preconditioners, for example) and they can<br class="">
share a DM.  If you are solving different problems, you need to create a<br class="">
different DM.  Does this documentation help?<br class="">
<br class="">
<a href="https://bitbucket.org/petsc/petsc/commits/e03a659ce1e595e4412d70ada3603101a46e94e2" class="">https://bitbucket.org/petsc/petsc/commits/e03a659ce1e595e4412d70ada3603101a46e94e2</a><br class="">
</div>
</div>
</blockquote>
<br class="">
</div>
<div>Yes, I think it does. How about adding a  statement in the main DM man page stating that each field should get its SNES and its DM, possibly through cloning a main DM?</div>
<div>I should have thought about it.</div>
<div><br class="">
</div>
<div>Blaise</div>
<div><br class="">
</div>
<div><br class="">
</div>
<div><br class="">
</div>
<br class="">
<div class=""><span class="Apple-style-span" style="border-collapse: separate; font-variant-ligatures: normal; font-variant-east-asian: normal; font-variant-position: normal; line-height: normal; border-spacing: 0px;"><span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " class="">
<span class="Apple-style-span" style="border-collapse: separate; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; orphans: 2; text-indent: 0px; text-transform: none; white-space: normal; widows: 2; word-spacing: 0px; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; -webkit-text-decorations-in-effect: none; -webkit-text-size-adjust: auto; -webkit-text-stroke-width: 0px; ">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " class="">
<span class="Apple-style-span" style="border-collapse: separate; -webkit-border-horizontal-spacing: 0px; -webkit-border-vertical-spacing: 0px; color: rgb(0, 0, 0); font-family: Helvetica; font-size: 12px; font-style: normal; font-variant: normal; font-weight: normal; letter-spacing: normal; line-height: normal; -webkit-text-decorations-in-effect: none; text-indent: 0px; -webkit-text-size-adjust: auto; text-transform: none; orphans: 2; white-space: normal; widows: 2; word-spacing: 0px; ">
<div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; " class="">
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " class="">
-- </div>
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " class="">
Department of Mathematics and Center for Computation & Technology</div>
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " class="">
Louisiana State University, Baton Rouge, LA 70803, USA</div>
<div style="margin-top: 0px; margin-right: 0px; margin-bottom: 0px; margin-left: 0px; " class="">
Tel. +1 (225) 578 1612, Fax  +1 (225) 578 4276 <a href="http://www.math.lsu.edu/~bourdin" class="">
http://www.math.lsu.edu/~bourdin</a></div>
<div class=""><br class="khtml-block-placeholder">
</div>
<div class=""><br class="khtml-block-placeholder">
</div>
<br class="Apple-interchange-newline">
</div>
</span></div>
</span><br class="Apple-interchange-newline">
</div>
</span><br class="Apple-interchange-newline">
</span><br class="Apple-interchange-newline">
</div>
<br class="">
</body>
</html>