[petsc-users] gamg and zero pivots

Matthew Knepley knepley at gmail.com
Sun Sep 20 13:57:51 CDT 2015


On Sun, Sep 20, 2015 at 12:40 PM, Gideon Simpson <gideon.simpson at gmail.com>
wrote:

> Point taken.  So this comes back to something that I began asking about in
> a previous thread, but took a detour as you guys identified other problems
> with my code.  The issue is that I have a DMComposite with two blocks.  One
> block is of size two, and couples certain pieces of the second block, which
> is, morally, a vector valued semilinear elliptic equation.  Using grid
> sequencing, the guesses for the SNES are now quite good, but I’m struggling
> with the issue of preconditioning the linear problem.  The second block
> would, presumably, benefit from multigrid, but jacobi doesn’t do such a
> good job on that. At the same time, the first block, as discussed, has
> these zeros on the diagonal, and can’t use SOR.
>

Chebyshev/Jacobi is the obvious next try.

   Matt


> -gideon
>
> On Sep 19, 2015, at 10:43 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>
> On Sep 19, 2015, at 9:14 PM, Gideon Simpson <gideon.simpson at gmail.com>
> wrote:
>
> Yes, I know exactly where the zero diagonal entries are.  Is there a way
> to compensate for that?
>
>
>  Not really. How can you update x_i if A_ii = 0 ?
>
>
>
> -gideon
>
> On Sep 19, 2015, at 10:09 PM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>
> Oh, it is a different kind of zero pivot value. There is a zero on the
> diagonal while it is trying to do SOR.  Should there be zeros on the
> diagonal of your matrix?
>
>  You can use -mg_levels_pc_type jacobi  and it will ignore those zero
> values.
>
>  Barry
>
>
> On Sep 19, 2015, at 7:12 PM, Gideon Simpson <gideon.simpson at gmail.com>
> wrote:
>
> I never get to see the output.  When it runs, I get:
>
> 0 SNES Function norm 8.405398322914e-02
> [0]PETSC ERROR: --------------------- Error Message
> --------------------------------------------------------------
> [0]PETSC ERROR: Zero pivot in LU factorization:
> http://www.mcs.anl.gov/petsc/documentation/faq.html#zeropivot
> [0]PETSC ERROR: Zero pivot on row 0
> [0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html
> for trouble shooting.
> [0]PETSC ERROR: Petsc Release Version 3.6.1, unknown
> [0]PETSC ERROR: ./blowup_refine on a arch-darwin-c-debug named gs_air by
> gideon Sat Sep 19 20:11:44 2015
> [0]PETSC ERROR: Configure options --download-mpich=yes
> --download-suitesparse=yes --download-superlu=yes
> --download-superlu_dist=yes --download-mumps=yes --download-sprng=yes
> --with-cxx=clang++ --with-cc=clang --with-fc=gfortran --download-metis=yes
> --download-parmetis=yes --download-scalapack=yes
> [0]PETSC ERROR: #1 MatSOR_SeqAIJ_Inode() line 2795 in
> /opt/petsc/src/mat/impls/aij/seq/inode.c
> [0]PETSC ERROR: #2 MatSOR_MPIAIJ() line 1496 in
> /opt/petsc/src/mat/impls/aij/mpi/mpiaij.c
> [0]PETSC ERROR: #3 MatSOR() line 3697 in
> /opt/petsc/src/mat/interface/matrix.c
> [0]PETSC ERROR: #4 PCApply_SOR() line 37 in
> /opt/petsc/src/ksp/pc/impls/sor/sor.c
> [0]PETSC ERROR: #5 PCApply() line 483 in
> /opt/petsc/src/ksp/pc/interface/precon.c
> [0]PETSC ERROR: #6 KSP_PCApply() line 242 in
> /opt/petsc/include/petsc/private/kspimpl.h
> [0]PETSC ERROR: #7 KSPInitialResidual() line 63 in
> /opt/petsc/src/ksp/ksp/interface/itres.c
> [0]PETSC ERROR: #8 KSPSolve_GMRES() line 235 in
> /opt/petsc/src/ksp/ksp/impls/gmres/gmres.c
> [0]PETSC ERROR: #9 KSPSolve() line 604 in
> /opt/petsc/src/ksp/ksp/interface/itfunc.c
> [0]PETSC ERROR: #10 KSPSolve_Chebyshev() line 381 in
> /opt/petsc/src/ksp/ksp/impls/cheby/cheby.c
> [0]PETSC ERROR: #11 KSPSolve() line 604 in
> /opt/petsc/src/ksp/ksp/interface/itfunc.c
> [0]PETSC ERROR: #12 PCMGMCycle_Private() line 19 in
> /opt/petsc/src/ksp/pc/impls/mg/mg.c
> [0]PETSC ERROR: #13 PCApply_MG() line 340 in
> /opt/petsc/src/ksp/pc/impls/mg/mg.c
> [0]PETSC ERROR: #14 PCApply() line 483 in
> /opt/petsc/src/ksp/pc/interface/precon.c
> [0]PETSC ERROR: #15 KSP_PCApply() line 242 in
> /opt/petsc/include/petsc/private/kspimpl.h
> [0]PETSC ERROR: #16 KSPInitialResidual() line 63 in
> /opt/petsc/src/ksp/ksp/interface/itres.c
> [0]PETSC ERROR: #17 KSPSolve_GMRES() line 235 in
> /opt/petsc/src/ksp/ksp/impls/gmres/gmres.c
> [0]PETSC ERROR: #18 KSPSolve() line 604 in
> /opt/petsc/src/ksp/ksp/interface/itfunc.c
> [0]PETSC ERROR: #19 SNESSolve_NEWTONLS() line 233 in
> /opt/petsc/src/snes/impls/ls/ls.c
> [0]PETSC ERROR: #20 SNESSolve() line 3906 in
> /opt/petsc/src/snes/interface/snes.c
> [1]PETSC ERROR: #1 VecNorm_MPI() line 63 in
> /opt/petsc/src/vec/vec/impls/mpi/pvec2.c
> [1]PETSC ERROR: #2 VecNorm() line 242 in
> /opt/petsc/src/vec/vec/interface/rvector.c
> [1]PETSC ERROR: #3 VecNormalize() line 337 in
> /opt/petsc/src/vec/vec/interface/rvector.c
> [1]PETSC ERROR: #4 KSPGMRESCycle() line 127 in
> /opt/petsc/src/ksp/ksp/impls/gmres/gmres.c
> [1]PETSC ERROR: #5 KSPSolve_GMRES() line 236 in
> /opt/petsc/src/ksp/ksp/impls/gmres/gmres.c
> [1]PETSC ERROR: #6 KSPSolve() line 604 in
> /opt/petsc/src/ksp/ksp/interface/itfunc.c
> [1]PETSC ERROR: #7 KSPSolve_Chebyshev() line 381 in
> /opt/petsc/src/ksp/ksp/impls/cheby/cheby.c
> [1]PETSC ERROR: #8 KSPSolve() line 604 in
> /opt/petsc/src/ksp/ksp/interface/itfunc.c
> [1]PETSC ERROR: #9 PCMGMCycle_Private() line 19 in
> /opt/petsc/src/ksp/pc/impls/mg/mg.c
> [1]PETSC ERROR: #10 PCApply_MG() line 340 in
> /opt/petsc/src/ksp/pc/impls/mg/mg.c
> [1]PETSC ERROR: #11 PCApply() line 483 in
> /opt/petsc/src/ksp/pc/interface/precon.c
> [1]PETSC ERROR: #12 KSP_PCApply() line 242 in
> /opt/petsc/include/petsc/private/kspimpl.h
> [1]PETSC ERROR: #13 KSPInitialResidual() line 63 in
> /opt/petsc/src/ksp/ksp/interface/itres.c
> [1]PETSC ERROR: #14 KSPSolve_GMRES() line 235 in
> /opt/petsc/src/ksp/ksp/impls/gmres/gmres.c
> [1]PETSC ERROR: #15 KSPSolve() line 604 in
> /opt/petsc/src/ksp/ksp/interface/itfunc.c
> [1]PETSC ERROR: #16 SNESSolve_NEWTONLS() line 233 in
> /opt/petsc/src/snes/impls/ls/ls.c
> [1]PETSC ERROR: #17 SNESSolve() line 3906 in
> /opt/petsc/src/snes/interface/snes.c
>
> and then it just sits there.
>
> -gideon
>
> On Sep 19, 2015, at 7:18 PM, Matthew Knepley <knepley at gmail.com> wrote:
>
> On Sat, Sep 19, 2015 at 6:10 PM, Gideon Simpson <gideon.simpson at gmail.com>
> wrote:
> It gives zero pivots on:
>
> Send -ksp_view
>
> Matt
>
> -ksp_type gmres -pc_type gamg -mg_coarse_sub_pc_factor_shift_type NONZERO
>
> It has no problem with:
>
> -ksp_type gmres -pc_type bjacobi -sub_pc_factor_shift_type NONZERO
>
> -gideon
>
> On Sep 19, 2015, at 12:37 AM, Barry Smith <bsmith at mcs.anl.gov> wrote:
>
>
> On Sep 18, 2015, at 10:42 PM, Gideon Simpson <gideon.simpson at gmail.com>
> wrote:
>
> I’m getting a zero pivot in LU factorization error when I use the gamg
> preconditioner.  I know there is some issue with my matrix, as I get the
> same error if I use pc_type lu in serial, or if I use pc_type bjacobi in
> parallel, both of which are corrected by adding -pc_factor_shift_type
> NONZERO -sub_pc_factor_shift_type NONZERO, respectively.  However, I can’t
> quite seem to figure out the analogous command to use for the gamg
> preconditioner.
>
>
> You need to figure out the prefix to the option that is added by gamg to
> set it. One way is to run with the gamg options and -help and grep for
> factor_shift.
>
> The option is like something like -mg_coarse_pc_factor_shift_type nonzero
> or -mg_coarse_sub_pc_factor_shift_type
>
> Barry
>
>
> -gideon
>
>
>
>
>
>
> --
> What most experimenters take for granted before they begin their
> experiments is infinitely more interesting than any results to which their
> experiments lead.
> -- Norbert Wiener
>
>
>
>
>
>
>


-- 
What most experimenters take for granted before they begin their
experiments is infinitely more interesting than any results to which their
experiments lead.
-- Norbert Wiener
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-users/attachments/20150920/4aebdb4e/attachment-0001.html>


More information about the petsc-users mailing list