[petsc-users] Problems with preconditioners, which one?

Hong Zhang hzhang at mcs.anl.gov
Tue Aug 3 08:57:36 CDT 2010


Run your code sequentially with option '-pc_type lu'.
Does it still diverge?

Hong

On Tue, Aug 3, 2010 at 7:27 AM, Filippo Spiga
<filippo.spiga at disco.unimib.it> wrote:
>  Dear all,
>    I'm not an expert so probably the answer of my problem is very easy (I
> hope so!). I have a linear system (a distributed linear system) and I want
> to solve it using SNES. I know the form of the solution (this is a test
> case, then we want to apply the same method on another class of problems). I
> already use part this code that works for another problem.  I only changed
> is the Jacobian and the Jacobian evaluation routine. I tested the Jacobian
> using the option "-snes_type test" and the differences between mine compared
> with the one calculated by PETSc is "0" (*).
>
> The matrix is very simple but is "singular" (determinant = 1.0519e-55) and
> probably is also bad conditioned. At this point I tried the preconditioners.
> ILU is not good because it doesn't work in a parallel environment. HYPRE
> doesn't work, SNES diverges. I tried some basic tuning of HYPRE without
> success. But I'm not an expert. So, what can I do?
>
> I used this options (**) and SNES doesn't converge (***). Jacobian and the
> Residual vector are (**). I also tried (without success) to change
> rtol/atol, increasing the accurancy until 1.e-13. Any suggestion to try to
> find a good preconditioner (and a good tuning of that preconditioner) is
> really appreciate.
>
> Thank you very much in advance!
>
> Regards
>
>
> (*)
> Testing hand-coded Jacobian, if the ratio is,O(1.e-8), the hand-coded
> Jacobian is probably correct.
>
> (**)
> -log_summary
> -pc_type hypre
> -snes_type ls
> -snes_max_it 100000
> -snes_rtol 1.e-8
> -snes_atol 1.e-4
> -snes_monitor
> -snes_monitor_solution
> -snes_monitor_true_residual true
> -snes_monitor_solution_update
> -snes_view
>
> (***)
> [0]:  start=0, end=7
> [1]:  start=7, end=13
> [2]:  start=13, end=20
> [3]:  start=20, end=27
>  0 SNES Function norm 7.421625102155e-02
>  1 SNES Function norm 1.979632611100e-02
>  2 SNES Function norm 1.978787365526e-02
>  3 SNES Function norm 1.978784197958e-02
> SNES Object:
>  type: ls
>    line search variant: SNESLineSearchCubic
>    alpha=0.0001, maxstep=1e+08, minlambda=1e-12
>  maximum iterations=100000, maximum function evaluations=10000
>  tolerances: relative=1e-08, absolute=0.0001, solution=1e-08
>  total number of linear solver iterations=9
>  total number of function evaluations=55
>  KSP Object:
>    type: gmres
>      GMRES: restart=30, using Classical (unmodified) Gram-Schmidt
> Orthogonalization with no iterative refinement
>      GMRES: happy breakdown tolerance 1e-30
>    maximum iterations=10000, initial guess is zero
>    tolerances:  relative=1e-05, absolute=1e-50, divergence=10000
>    left preconditioning
>    using PRECONDITIONED norm type for convergence test
>  PC Object:
>    type: hypre
>      HYPRE BoomerAMG preconditioning
>      HYPRE BoomerAMG: Cycle type V
>      HYPRE BoomerAMG: Maximum number of levels 25
>      HYPRE BoomerAMG: Maximum number of iterations PER hypre call 1
>      HYPRE BoomerAMG: Convergence tolerance PER hypre call 0
>      HYPRE BoomerAMG: Threshold for strong coupling 0.25
>      HYPRE BoomerAMG: Interpolation truncation factor 0
>      HYPRE BoomerAMG: Interpolation: max elements per row 0
>      HYPRE BoomerAMG: Number of levels of aggressive coarsening 0
>      HYPRE BoomerAMG: Number of paths for aggressive coarsening 1
>      HYPRE BoomerAMG: Maximum row sums 0.9
>      HYPRE BoomerAMG: Sweeps down         1
>      HYPRE BoomerAMG: Sweeps up           1
>      HYPRE BoomerAMG: Sweeps on coarse    1
>      HYPRE BoomerAMG: Relax down          symmetric-SOR/Jacobi
>      HYPRE BoomerAMG: Relax up            symmetric-SOR/Jacobi
>      HYPRE BoomerAMG: Relax on coarse     Gaussian-elimination
>      HYPRE BoomerAMG: Relax weight  (all)      1
>      HYPRE BoomerAMG: Outer relax weight (all) 1
>      HYPRE BoomerAMG: Using CF-relaxation
>      HYPRE BoomerAMG: Measure type        local
>      HYPRE BoomerAMG: Coarsen type        Falgout
>      HYPRE BoomerAMG: Interpolation type  classical
>    linear system matrix = precond matrix:
>    Matrix Object:
>      type=mpiaij, rows=27, cols=27
>      total: nonzeros=223, allocated nonzeros=223
>        not using I-node (on process 0) routines
> SNES Diverged. Reason LS_FAILURE
> |residual|_2=1.978784e-02
> |residualb|_inf=1.588862e-02
> |Au-b|_2=1.978784e-02
> |Au-b|_inf=1.588862e-02
>
>
> (****) Jacobian is stored as Sparse matrix
> Jacobian =
>
>   (1,1)       0.0185
>   (3,1)      -0.0093
>   (4,1)      -0.0093
>   (5,1)      -0.0093
>  (26,1)      -0.0278
>   (2,2)       0.0031
>   (5,2)      -0.0093
>   (5,3)       0.0046
>   (7,3)      -0.0046
>  (10,3)      -0.0046
>  (13,3)      -0.0139
>  (15,3)      -0.0093
>  (26,3)      -0.0093
>   (5,4)       0.0046
>   (6,4)      -0.0139
>   (7,4)      -0.0046
>  (16,4)      -0.0093
>  (26,4)      -0.0093
>  (27,4)      -0.0046
>   (3,5)      -0.0046
>   (4,5)      -0.0046
>   (7,5)      -0.0093
>  (26,5)      -0.0093
>   (4,6)       0.0139
>   (6,6)       0.0139
>   (7,6)       0.0046
>  (16,6)       0.0093
>  (26,6)       0.0093
>  (27,6)       0.0046
>   (3,7)       0.0046
>   (4,7)       0.0046
>   (5,7)       0.0093
>   (7,7)       0.0093
>  (26,7)       0.0093
>   (3,8)      -0.0046
>   (8,8)       0.0031
>  (10,8)      -0.0046
>   (3,9)      -0.0139
>   (5,9)      -0.0046
>   (9,9)       0.0062
>   (3,10)      0.0046
>  (11,10)     -0.0046
>  (13,10)     -0.0046
>  (15,10)     -0.0046
>  (10,11)      0.0046
>  (11,11)      0.0046
>  (13,11)      0.0046
>  (15,11)      0.0046
>   (6,12)      0.0093
>   (7,12)      0.0093
>  (12,12)      0.0278
>  (13,12)      0.0093
>  (14,12)      0.0093
>  (15,12)      0.0093
>  (16,12)      0.0093
>  (26,12)      0.0278
>   (3,13)      0.0139
>   (7,13)      0.0046
>  (10,13)      0.0046
>  (13,13)      0.0139
>  (15,13)      0.0093
>  (26,13)      0.0093
>  (12,14)     -0.0093
>  (15,14)      0.0046
>  (16,14)      0.0046
>  (17,14)     -0.0093
>  (18,14)     -0.0046
>  (19,14)     -0.0046
>  (26,14)      0.0093
>   (3,15)      0.0093
>  (10,15)      0.0046
>  (11,15)     -0.0046
>  (12,15)     -0.0093
>  (13,15)     -0.0093
>  (14,15)     -0.0046
>  (18,15)     -0.0139
>  (26,15)      0.0093
>   (4,16)      0.0093
>   (6,16)     -0.0093
>  (12,16)     -0.0093
>  (14,16)     -0.0046
>  (19,16)     -0.0139
>  (20,16)     -0.0046
>  (26,16)      0.0093
>  (27,16)      0.0046
>  (12,17)      0.0093
>  (14,17)      0.0093
>  (17,17)      0.0093
>  (18,17)      0.0046
>  (19,17)      0.0046
>  (11,18)      0.0046
>  (12,18)      0.0093
>  (13,18)      0.0093
>  (14,18)      0.0046
>  (15,18)      0.0139
>  (18,18)      0.0139
>   (6,19)      0.0093
>  (12,19)      0.0093
>  (14,19)      0.0046
>  (16,19)      0.0139
>  (19,19)      0.0139
>  (20,19)      0.0046
>   (6,20)      0.0046
>  (16,20)      0.0046
>  (20,20)      0.0046
>  (27,20)      0.0046
>  (14,21)     -0.0093
>  (15,21)     -0.0046
>  (16,21)     -0.0046
>  (21,21)      0.0093
>  (26,21)     -0.0093
>   (3,22)     -0.0093
>  (10,22)     -0.0046
>  (15,22)     -0.0139
>  (22,22)      0.0123
>  (26,22)     -0.0093
>   (4,23)     -0.0093
>  (16,23)     -0.0139
>  (23,23)      0.0123
>  (26,23)     -0.0093
>  (27,23)     -0.0046
>   (4,24)     -0.0046
>  (24,24)      0.0031
>  (27,24)     -0.0046
>   (4,25)     -0.0139
>   (5,25)     -0.0046
>  (25,25)      0.0062
>   (3,26)      0.0093
>   (4,26)      0.0093
>   (5,26)      0.0093
>   (6,26)     -0.0093
>   (7,26)     -0.0093
>  (12,26)     -0.0278
>  (13,26)     -0.0093
>  (14,26)     -0.0093
>  (15,26)     -0.0093
>  (16,26)     -0.0093
>  (26,26)     -0.0000
>   (4,27)      0.0046
>   (6,27)     -0.0046
>  (16,27)     -0.0046
>  (20,27)     -0.0046
>
>
> Residual =
>
>         0
>         0
>    0.0001
>   -0.0101
>    0.0001
>   -0.0001
>   -0.0001
>         0
>         0
>    0.0000
>    0.0000
>   -0.0004
>   -0.0001
>   -0.0001
>   -0.0040
>   -0.0040
>    0.0000
>    0.0000
>    0.0000
>    0.0000
>         0
>         0
>         0
>         0
>         0
>   -0.0159
>   -0.0021
>
> --
>
> ===============================================================
>  Filippo SPIGA                MSc, HPC and GRID Technologist
>  tel.:   +39 340 8387735      skype: filippo.spiga
> ===============================================================
>
> «Nobody will drive us out of Cantor's paradise.»
>     -- David Hilbert
>
>


More information about the petsc-users mailing list