To implement the safe method---i.e. copying the unknown vector u within FOO---what is proper generic form of FOO?  <br><br>I guess I&#39;m not clear exactly how FOO and jac_shell (the J*x routine) are linked.  It appears they aren&#39;t, given I can use an empty subroutine, but how then is a local copy of u within FOO used in for J(u) in J(U)*x of jac_shell?<br>
<br><br><div class="gmail_quote">On Tue, Aug 31, 2010 at 1:14 PM, Barry Smith <span dir="ltr">&lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin: 0pt 0pt 0pt 0.8ex; border-left: 1px solid rgb(204, 204, 204); padding-left: 1ex;">
<div><div></div><div class="h5"><br>
On Aug 31, 2010, at 1:03 PM, Jeremy Roberts wrote:<br>
<br>
&gt;<br>
&gt; Hi Barry,<br>
&gt;<br>
&gt; Thanks for the quick response.<br>
&gt;<br>
&gt; I have the unknown vector u globally accessible and so forgo use of the user-defined context (I tried to get it to work---can it be used in Fortran?).<br>
&gt;<br>
&gt; I used<br>
&gt;<br>
&gt; call SNESSetJacobian( snes, Jshell, Jshell, FOO, PETSC_NULL_OBJECT, ierr )<br>
&gt;<br>
&gt; where FOO is an empty function having the correct argument types.  It seems to work now, and I get the exact same answer using an explicit Jacobian matrix and the shell version.  Is there a way to get around needing FOO at all?<br>

&gt;<br>
<br>
</div></div>   If it works great. But I how you know what the &quot;unknown vector u &quot; that is &quot;globally accessible&quot;  in SNES is? How do you know it is the same each time a new Jacobian is needed? The only save way is to copy the vector passed into the FOO funcion.<br>

<br>
   Barry<br>
<br>
<br>
<br>
&gt; Jeremy<br>
&gt;<br>
&gt;<br>
<br>
</blockquote></div><br>