Peter,

    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't produce enough useful information about how the linear 
solver did). 

> Along the way (with -info) I get messages of the form:
> SNESLSCheckResidual_Private(): ||J^T(F-Ax)||/||F-AX|| 208.031 near zero 
> implies inconsistent rhs
> 
> At the end, I get:
> [0] SNESLSCheckLocalMin_Private(): || J^T F|| 80.3 near zero implies found a 
> local minimum

   These are fine, there is no local minimum. By "near zero" we mean like 
10^-7.  These are no where near zero.


   Barry

On Aug 10, 2011, at 9:06 AM, Graf, Peter wrote:

> Hi Matt,
> Thanks for your reply.  Attached is the output as requested, specifically, of
> 
> ./snes_test -snes_monitor -snes_converged_reason -ksp_converged_reason 
> -snes_view -snes_monitor -ksp_monitor -ksp_type preonly -pc_type lu
> 
> For good measure (?), I am also attaching the case with "-info".
> 
> (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'm still wrong, in that my 
> BCs are mixed type,... but thanks for being clear)
> 
> Again, thank you very much for any help.
> -Peter
> 
> On 8/10/11 7:13 AM, "Matthew Knepley" <knepley at gmail.com> wrote:
> 
> On Wed, Aug 10, 2011 at 12:39 PM, Graf, Peter <Peter.Graf at nrel.gov> wrote:
> Dear Petsc-Users,
> 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:
> 
> The (modified) example seeks to solve
> u`` + u^{2} = f
> on [0,1] with
> u'(0) = U0
> u(1) = 1
> 
> With U0 = 0, the SNES solver converges.  With U0=-2 (for example) it does not:
> 
> Just to be clear, both of these are Neumann conditions.
> 
> 11 SNES Function norm 5.018284941187e+00
> Nonlinear solve did not converge due to DIVERGED_LS_FAILURE
> 
> When asking about convergence, please send the entire output of -snes_view 
> -snes_monitor -ksp_monitor -snes_converged_reason
> 
> Since the Jacobian becomes more ill-conditioned, its possible the linear 
> solver is not converging. When testing, its best to always use
> -ksp_type preonly -pc_type lu so that the solves are exact to start out.
> 
>  Thanks,
> 
>      Matt
> 
> (interestingly, it still comes up with roughly good solutions, e.g. at least 
> visually, which suggests to me my discretization is not _total_ garbage)
> 
> Along the way (with -info) I get messages of the form:
> SNESLSCheckResidual_Private(): ||J^T(F-Ax)||/||F-AX|| 208.031 near zero 
> implies inconsistent rhs
> 
> At the end, I get:
> [0] SNESLSCheckLocalMin_Private(): || J^T F|| 80.3 near zero implies found a 
> local minimum
> 
> I have used -snes_type test to verify that my Jacobian is accurate.
> 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'm not sure what to do about it.
> 
> 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 "trying" to do the right thing).
> I would love to have help getting this to work.  Specifically, what does the 
> message about the "inconsistent rhs" tell me I'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?)?
> 
> Thank you very much for any advice,
> 
> Peter Graf
> NREL Scientific Computing Center
> Golden, CO
> 
> 
> <verbose_output2><verbose_output_info>

Reply via email to