<div class="gmail_quote">On Tue, Aug 14, 2012 at 4:19 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":1c">  Ok, but then that context cannot be used for any other purpose because of the possible conflict. Which means SNEScoloring thing must be changed.<br>
<br>
   Why not use SNESSetApplicationContext() to get the ts into SNES?</div></blockquote><div><br></div><div>I don't mind this, but I think it would be cleaner to change SNES coloring.</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div id=":1c">Here you are passing into the jacobian location something more general than the jacobian context.</div></blockquote><div><br></div><div>Why is it more general? It's exactly the context needed to compute the Jacobian.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div id=":1c"> Do you also pass the ts to the SNESSetFunction() context?</div></blockquote></div><br><div>Yes.</div>
<div><br></div><div><br></div><div>I philosophically like having separate contexts for each callback because it avoids imposing a certain class structure on the user. That is, if we just had XXSetApplicationContext() and all the callbacks used that, it basically forces the user to implement each callback from the same class. I think that is usually the right design, but not always, and I'd hate to place that constraint on the user.</div>
<div><br></div><div>Now assuming that the flexibility above is good, we should not have SNES treat TS specially. When someone wraps a different loop around SNES (optimization, UQ, etc), they should be able to compose using standard interfaces. This is why I think that SNES coloring is the misbehaving component.</div>