I am working on handling very small pivot values for a very small
percentage of my matrix (linear Ax = b solution), and I am getting an error
that I don't understand when I run the KSPCG solver in parallel.

KSPCreate(comm, &ksp)
KSPSetTolerances(ksp, rtol, ...)
KSPSetType(ksp, KSPCG)
KSPSetInitialGuessNonzero(ksp, PETSC_TRUE)
KSPSetFromOptions(ksp)
...
KSPSetOperators(ksp, V, V)
...
KSPSolve(ksp,...)
KSPGetConvergedReason(ksp, &kspReason)
if ( kspReason == KSP_DIVERGED_PCSETUP_FAILED )
  PCGetSetUpFailedReason(pc, &pcReason)
...

Default Case (zeropivot is 2.22045E-14):
mpiexec -n 1 ...
==> ksp fails due to pcReason = PC_FACTOR_NUMERIC_ZEROPIVOT

Reduced pivot case, n = 1:
mpiexec -n 1 ... -pc_factor_zeropivot 1E-15
==> runs successfully

Reduced pivot case, n > 1:
mpiexec -n 2 ... -pc_factor_zeropivot 1E-15
==>  ksp fails due to pcReason = PC_SUBPC_ERROR
What does this mean?

If I use the MUMPS solver and either Cholesky or LU preconditioning
instead, it runs fine with any number of MPI ranks, but I'd like to be able
to run the CG solver in parallel too.

Thanks in advance,

Matt Overholt
CapeSym, Inc.
(508) 653-7100 x204
[email protected]

Reply via email to