Hello,

I have been playing around with a block Jacobi preconditioner (PCJACOBI)
with an incomplete Cholesky (PCICC) sub-preconditioner. Although you cannot
set KSPSetPCSide to PC_SYMMETRIC for PCBJACOBI, you still can do it for
PCICC. I was surprised to find that PCApplySymmetricLeft is properly
applied to a vector. However, PCApplySymmetricRight throws an error:
...
    [0]PETSC ERROR: Object is in wrong state
    [0]PETSC ERROR: VecPlaceArray() was already called on this vector,
without a call to VecResetArray()
    ...
    [0]PETSC ERROR: #3 PCApplySymmetricLeft_BJacobi_Singleblock() at
/home/abylay/KAUST/Libraries/C/petsc/src/ksp/pc/impls/bjacobi/bjacobi.c:660
    [0]PETSC ERROR: #4 PCApplySymmetricLeft() at
/home/abylay/KAUST/Libraries/C/petsc/src/ksp/pc/interface/precon.c:532
...
The problem goes away if I add:
...
    PetscCall(VecResetArray(bjac->x));
    PetscCall(VecResetArray(bjac->y));
...
at line 698 in source file bjacobi.c. I don't know if it is a bug, and how
I should report it, just wanted let someone know if it is.
Thanks.

Abylay Zhumekenov

Reply via email to