On Wed, Aug 10, 2011 at 4:10 PM, Graf, Peter <span dir="ltr">&lt;<a href="mailto:Peter.Graf@nrel.gov">Peter.Graf@nrel.gov</a>&gt;</span> wrote:<br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
Hi Barry,<br>
Thanks for your response.  I did not see a &quot;fgmre&quot; option, but &quot;fgmres&quot; works, and here is the output (including -info).<br>
Thanks in advance for any help you can offer<br></blockquote><div><br></div><div>Okay, the linear system is being solved, but Newton convergence is stalling. It may be that Newton just cannot solve</div><div>this system, but it is more likely that there is an error in the Jacobian. In order to test this, you can use</div>
<div><br></div><div>  -snes_fd</div><div><br></div><div>which is very slow, but forms the entire Jacobian using finite differences.</div><div><br></div><div>  Thanks,</div><div><br></div><div>     Matt</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

<font color="#888888">-Peter<br>
</font><div><div></div><div class="h5"><br>
On 8/10/11 8:53 AM, &quot;Barry Smith&quot; &lt;<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>&gt; wrote:<br>
<br>
<br>
<br>
   Peter,<br>
<br>
    Matt gave some bad advice. Please rerun with -ksp_type fgmre -ksp_monitor -ksp_converged_reason as well as the -snes_monitor and send the output.  (With the preonly it doesn&#39;t produce enough useful information about how the linear solver did).<br>

<br>
&gt; Along the way (with -info) I get messages of the form:<br>
&gt; SNESLSCheckResidual_Private(): ||J^T(F-Ax)||/||F-AX|| 208.031 near zero implies inconsistent rhs<br>
&gt;<br>
&gt; At the end, I get:<br>
&gt; [0] SNESLSCheckLocalMin_Private(): || J^T F|| 80.3 near zero implies found a local minimum<br>
<br>
   These are fine, there is no local minimum. By &quot;near zero&quot; we mean like 10^-7.  These are no where near zero.<br>
<br>
<br>
   Barry<br>
<br>
On Aug 10, 2011, at 9:06 AM, Graf, Peter wrote:<br>
<br>
&gt; Hi Matt,<br>
&gt; Thanks for your reply.  Attached is the output as requested, specifically, of<br>
&gt;<br>
&gt; ./snes_test -snes_monitor -snes_converged_reason -ksp_converged_reason -snes_view -snes_monitor -ksp_monitor -ksp_type preonly -pc_type lu<br>
&gt;<br>
&gt; For good measure (?), I am also attaching the case with &quot;-info&quot;.<br>
&gt;<br>
&gt; (R.e. terminology, I was contrasting the case here with the Dirichlet case of, e.g., u(0) =1, u(1) = 1.  Actually I think I&#39;m still wrong, in that my BCs are mixed type,... but thanks for being clear)<br>
&gt;<br>
&gt; Again, thank you very much for any help.<br>
&gt; -Peter<br>
&gt;<br>
&gt; On 8/10/11 7:13 AM, &quot;Matthew Knepley&quot; &lt;<a href="mailto:knepley@gmail.com">knepley@gmail.com</a>&gt; wrote:<br>
&gt;<br>
&gt; On Wed, Aug 10, 2011 at 12:39 PM, Graf, Peter &lt;<a href="mailto:Peter.Graf@nrel.gov">Peter.Graf@nrel.gov</a>&gt; wrote:<br>
&gt; Dear Petsc-Users,<br>
&gt; I am implementing a 1D solution of the (drift/diffusion) semiconductor equations.  The case of Dirichlet boundaries works fine.  The case of Neumann boundaries (i.e. current boundary conditions such as occur at semiconductor/metal contacts) does not.   In sorting this out, I have modified one of your examples to recreate the problem:<br>

&gt;<br>
&gt; The (modified) example seeks to solve<br>
&gt; u`` + u^{2} = f<br>
&gt; on [0,1] with<br>
&gt; u&#39;(0) = U0<br>
&gt; u(1) = 1<br>
&gt;<br>
&gt; With U0 = 0, the SNES solver converges.  With U0=-2 (for example) it does not:<br>
&gt;<br>
&gt; Just to be clear, both of these are Neumann conditions.<br>
&gt;<br>
&gt; 11 SNES Function norm 5.018284941187e+00<br>
&gt; Nonlinear solve did not converge due to DIVERGED_LS_FAILURE<br>
&gt;<br>
&gt; When asking about convergence, please send the entire output of -snes_view -snes_monitor -ksp_monitor -snes_converged_reason<br>
&gt;<br>
&gt; Since the Jacobian becomes more ill-conditioned, its possible the linear solver is not converging. When testing, its best to always use<br>
&gt; -ksp_type preonly -pc_type lu so that the solves are exact to start out.<br>
&gt;<br>
&gt;  Thanks,<br>
&gt;<br>
&gt;      Matt<br>
&gt;<br>
&gt; (interestingly, it still comes up with roughly good solutions, e.g. at least visually, which suggests to me my discretization is not _total_ garbage)<br>
&gt;<br>
&gt; Along the way (with -info) I get messages of the form:<br>
&gt; SNESLSCheckResidual_Private(): ||J^T(F-Ax)||/||F-AX|| 208.031 near zero implies inconsistent rhs<br>
&gt;<br>
&gt; At the end, I get:<br>
&gt; [0] SNESLSCheckLocalMin_Private(): || J^T F|| 80.3 near zero implies found a local minimum<br>
&gt;<br>
&gt; I have used -snes_type test to verify that my Jacobian is accurate.<br>
&gt; I have also dumped the Jacobians to a file and examined their condition numbers.  The nonconverged cases have condition numbers around 10^7, whereas the converged cases have condition numbers around 10^3.  This seems like a clue, but I&#39;m not sure what to do about it.<br>

&gt;<br>
&gt; All this is completely analogous to the real case of interest (in that case, my condition numbers go to 10^13 or more, and there is similar visual evidence that the solver is &quot;trying&quot; to do the right thing).<br>

&gt; I would love to have help getting this to work.  Specifically, what does the message about the &quot;inconsistent rhs&quot; tell me I&#39;m doing wrong?  What is the evidence of the condition number telling me?  Do I have an error somewhere, or do I have a legitimately ill-conditioned Jacobian (in which case, what should I do about that?)?<br>

&gt;<br>
&gt; Thank you very much for any advice,<br>
&gt;<br>
&gt; Peter Graf<br>
&gt; NREL Scientific Computing Center<br>
&gt; Golden, CO<br>
&gt;<br>
&gt;<br>
&gt; &lt;verbose_output2&gt;&lt;verbose_output_info&gt;<br>
<br>
<br>
</div></div></blockquote></div><br><br clear="all"><br>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>