It is the direct solver on the the coarse grid that is finding the zero pivot (since the coarse grid problem like all the levels has a null space). You can use the option -mg_coarse_pc_factor_shift_type nonzero (in petsc-3.1 or petsc-dev) Also keep the KSPSetNullSpace() function you are using. Barry On Jun 3, 2011, at 3:54 AM, Stijn A. M. Vantieghem wrote:
Dear all,
I am using PETSc (Fortran interface) to solve a Poisson equation with Neumann boundary conditions. Up till now, I managed to do this with Hypre's BoomerAMG. Now, I am investigating whether I can improve the performance of my code by using ML. However, at execution I receive a zero pivot error; I tried to remove the (constant) null space with KSPSetNullSpace, but this didn't solve my problem. Do you have an idea of what I'm doing wrong? Thanks.
The relevant portions of my code are as follows:
!**************************************************** call KSPCreate(PETSC_COMM_WORLD,ksp,ierr) call KSPSetOperators(ksp,M,M,DIFFERENT_NONZERO_PATTERN,ierr)
call MatNullSpaceCreate(PETSC_COMM_WORLD,PETSC_TRUE,0,PETSC_NULL,sp,ierr) call KSPSetNullSpace(ksp,sp,ierr)
call KSPGetPC(ksp,pc,ierr) call PCSetType(pc,PCML,ierr)
call KSPSetFromOptions(ksp,ierr) ... call KSPSetInitialGuessNonzero(ksp,PETSC_TRUE,ierr) call KSPSolve(ksp,petsc_rhs,petsc_pressure,ierr) !****************************************************
and the error message is:
[0]PETSC ERROR: --------------------- Error Message ------------------------------------ [0]PETSC ERROR: Detected zero pivot in LU factorization see http://www.mcs.anl.gov/petsc/petsc-as/documentation/troubleshooting.html#Zer... [0]PETSC ERROR: Zero pivot row 0 value 3.57045e-20 tolerance 1e-12! [0]PETSC ERROR: ------------------------------------------------------------------------ ... [0]PETSC ERROR: ------------------------------------------------------------------------ [0]PETSC ERROR: MatLUFactorNumeric_SeqAIJ() line 574 in src/mat/impls/aij/seq/aijfact.c [0]PETSC ERROR: MatLUFactorNumeric() line 2587 in src/mat/interface/matrix.c [0]PETSC ERROR: PCSetUp_LU() line 158 in src/ksp/pc/impls/factor/lu/lu.c [0]PETSC ERROR: PCSetUp() line 795 in src/ksp/pc/interface/precon.c [0]PETSC ERROR: KSPSetUp() line 237 in src/ksp/ksp/interface/itfunc.c [0]PETSC ERROR: PCSetUp_MG() line 602 in src/ksp/pc/impls/mg/mg.c [0]PETSC ERROR: PCSetUp_ML() line 668 in src/ksp/pc/impls/ml/ml.c [0]PETSC ERROR: PCSetUp() line 795 in src/ksp/pc/interface/precon.c [0]PETSC ERROR: KSPSetUp() line 237 in src/ksp/ksp/interface/itfunc.c [0]PETSC ERROR: KSPSolve() line 353 in src/ksp/ksp/interface/itfunc.c
Regards Stijn
Stijn A.M. Vantieghem Earth and Planetary Magnetism Institute for Geophysics ETH Zürich Sonneggstrasse 5 - CH 8092 Zürich tel: +41 44 632 39 90 e-mail: [email protected]