[petsc-users] Convergence trouble with SNES and CG

David Knezevic david.knezevic at akselos.com
Mon Feb 22 17:54:51 CST 2016


I'm solving a "linear elasticity with contact" problem using SNES. The
matrix is symmetric, and it corresponds to the standard linear elasticity
matrix, plus some extra nonlinear "penalty spring" terms due to the contact
conditions.

The solve works fine if I use a direct solver (e.g. MUMPS). I've also found
that CG usually works fine too, but in one specific case it fails to
converge. (I thought that penalty springs + iterative solvers may not be a
good combination, but it does seem to work fine in most cases.)

Below I've pasted the (last part of the) output of "-ksp_type cg
-ksp_norm_type natural -snes_view -ksp_monitor" for the case that fails.

If anyone has some suggestions about other solver/preconditioner options
that would be worth trying, that would be most appreciated.

Thanks,
David

-------------------------------------------------------------------------------

  102 KSP Residual norm 8.910585826247e-05
  103 KSP Residual norm 8.395178827803e-05
  104 KSP Residual norm 7.758478472168e-05
  105 KSP Residual norm 7.099534889984e-05
  106 KSP Residual norm 6.615351528474e-05
  107 KSP Residual norm 6.303646443688e-05
  NL step  5, |residual|_2 = 1.996487e+01
    0 KSP Residual norm 5.844456247091e+00
    1 KSP Residual norm 1.308756943973e+00
    2 KSP Residual norm 7.545133187463e-01
    3 KSP Residual norm 1.346068942607e+00
SNES Object: 1 MPI processes
  type: newtonls
  maximum iterations=50, maximum function evaluations=10000
  tolerances: relative=1e-08, absolute=1e-50, solution=1e-08
  total number of linear solver iterations=535
  total number of function evaluations=11
  norm schedule ALWAYS
  SNESLineSearch Object:   1 MPI processes
    type: bt
      interpolation: cubic
      alpha=1.000000e-04
    maxstep=1.000000e+08, minlambda=1.000000e-12
    tolerances: relative=1.000000e-08, absolute=1.000000e-15,
lambda=1.000000e-08
    maximum iterations=40
  KSP Object:   1 MPI processes
    type: cg
    maximum iterations=10000, initial guess is zero
    tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
    left preconditioning
    using NATURAL norm type for convergence test
  PC Object:   1 MPI processes
    type: ilu
      ILU: out-of-place factorization
      0 levels of fill
      tolerance for zero pivot 2.22045e-14
      matrix ordering: natural
      factor fill ratio given 1, needed 1
        Factored matrix follows:
          Mat Object:           1 MPI processes
            type: seqaij
            rows=967608, cols=967608
            package used to perform factorization: petsc
            total: nonzeros=7.55539e+07, allocated nonzeros=7.55539e+07
            total number of mallocs used during MatSetValues calls =0
              using I-node routines: found 322536 nodes, limit used is 5
    linear system matrix = precond matrix:
    Mat Object:    ()     1 MPI processes
      type: seqaij
      rows=967608, cols=967608
      total: nonzeros=7.55539e+07, allocated nonzeros=7.55539e+07
      total number of mallocs used during MatSetValues calls =0
        using I-node routines: found 322536 nodes, limit used is 5
Number of nonlinear iterations: 5
Nonlinear solver convergence/divergence reason: DIVERGED_LINEAR_SOLVE
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20160222/b0826e65/attachment-0001.html>


More information about the petsc-users mailing list