[petsc-users] Matrix missing diagonal entry
Florian Lindner
mailinglists at xgm.de
Tue Oct 7 08:14:27 CDT 2014
Hello,
when I try to KSPSolve my matrix petsc prints out that a diagonal entry is missing:
KSPSetOperators(solver, _matCLU.matrix, _matCLU.matrix );
KSPSolve(solver, vin.vector, vp.vector);
And petsc is perfectly right about that specific entry being zero. So this may be more of a mathematical problem then pure petsc.
The algorithm that I try to reimplement does the following:
lu(_matrixCLU, _pivotsCLU); // Compute LU decomposition
// Left out: Permutate in according to pivotsCLU
forwardSubstitution(_matrixCLU, in, y); // CLU^-1 * in = y (lower triangle of CLU)
backSubstitution(_matrixCLU, y, p); // CLU^-1 * y = p (upper triangle of CLU)
multiply(_matrixA, p, out ); // out = A * p (not relevant here)
I want to replace to lu, forward- and backwardSubstituation by using a petsc KSP solver. Before doing any of these operations _matrixCLU and _matCLU are equal:
=============== CLU Before LU =======
==== Dynamic Matrix of size 7 x 7 ====
1.0000 0.3679 0.1353 0.3679 1.0000 0.0000 0.0000
0.3679 1.0000 0.3679 0.1353 1.0000 1.0000 0.0000
0.1353 0.3679 1.0000 0.3679 1.0000 1.0000 1.0000
0.3679 0.1353 0.3679 1.0000 1.0000 0.0000 1.0000
1.0000 1.0000 1.0000 1.0000 0.0000 0.0000 0.0000
0.0000 1.0000 1.0000 0.0000 0.0000 0.0000 0.0000
0.0000 0.0000 1.0000 1.0000 0.0000 0.0000 0.0000
Mat Object:CLU 1 MPI processes
type: seqsbaij
row 0: (0, 1) (1, 0.367879) (2, 0.135335) (3, 0.367879) (4, 1) (5, 0) (6, 0)
row 1: (1, 1) (2, 0.367879) (3, 0.135335) (4, 1) (5, 1) (6, 0)
row 2: (2, 1) (3, 0.367879) (4, 1) (5, 1) (6, 1)
row 3: (3, 1) (4, 1) (5, 0) (6, 1)
row 4:
row 5:
row 6:
LU decomposition of matrixCLU works, no rank deficiency (no 0 on the main diagonal after LU and I tested for full rank of matrixCLU). Petsc complains with this matrix:
[0]PETSC ERROR: --------------------- Error Message --------------------------------------------------------------
[0]PETSC ERROR: Object is in wrong state
[0]PETSC ERROR: Matrix is missing diagonal entry 4
[0]PETSC ERROR: See http://www.mcs.anl.gov/petsc/documentation/faq.html for trouble shooting.
[0]PETSC ERROR: Petsc Release Version 3.5.2, unknown
[0]PETSC ERROR: ../build/debug/binprecice on a arch-linux2-c-debug named helium by lindnefn Mon Oct 6 16:26:49 2014
[0]PETSC ERROR: Configure options
[0]PETSC ERROR: #1 MatICCFactorSymbolic_SeqSBAIJ() line 2430 in /data2/scratch/lindner/petsc/src/mat/impls/sbaij/seq/sbaijfact2.c
[0]PETSC ERROR: #2 MatICCFactorSymbolic() line 6266 in /data2/scratch/lindner/petsc/src/mat/interface/matrix.c
[0]PETSC ERROR: #3 PCSetup_ICC() line 20 in /data2/scratch/lindner/petsc/src/ksp/pc/impls/factor/icc/icc.c
[0]PETSC ERROR: #4 PCSetUp() line 902 in /data2/scratch/lindner/petsc/src/ksp/pc/interface/precon.c
[0]PETSC ERROR: #5 KSPSetUp() line 305 in /data2/scratch/lindner/petsc/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: #6 KSPSolve() line 417 in /data2/scratch/lindner/petsc/src/ksp/ksp/interface/itfunc.c
[0]PETSC ERROR: #7 map() line 696 in src/mapping/PetRadialBasisFctMapping.hpp
numerical equality test failed: 0.00000000000000000000e+00 instead of 1.00000000000000000000e+00
file: src/mapping/tests/PetRadialBasisFctMappingTest.cpp line: 196
statement: value==1.0
difference: 1.00000000000000000000e+00
What's indeed perfectly right. But what is the best way to cope with that?
Thanks,
Florian
More information about the petsc-users
mailing list