[petsc-dev] [petsc-users] MATNEST with shell matrices

Amneet Bhalla mail2amneet at gmail.com
Thu Feb 28 11:58:45 CST 2013


Hi Jed,

I have registered MatShell that operates on VecNest (which is composed of
shell vectors) with KSP.
When I am solving sytem of equations using this KSP, I am getting some
errors. The sequence of
events from gdb are:

#0  0x0000000000000000 in ?? ()

#1  0x00000000009856fd in VecGetArrayRead (x=0x3422a30, a=0x7fff8b8c6620)
    at
/home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/include/petsc-private/vecimpl.h:350

#2  0x000000000098f57f in VecGetArray_Nest (X=0x34291d0, x=0x7fff8b8c6720)
    at
/home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/src/vec/vec/impls/nest/vecnest.c:719

#3  0x0000000000a3f3df in VecGetArrayRead (x=0x34291d0, a=0x7fff8b8c6720)
    at
/home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/include/petsc-private/vecimpl.h:350

#4  0x0000000000a51c83 in MatMult (mat=0x32c34f0, x=0x336a1c0, y=0x34291d0)
    at
/home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/src/mat/interface/matrix.c:2092

#5  0x00000000012b2a78 in KSPInitialResidual (ksp=0x334bcb0,
vsoln=0x336a1c0,
    vt1=0x34291d0, vt2=0x343c150, vres=0x344f220, vb=0x337d810)
    at
/home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/src/ksp/ksp/interface/itres.c:54

#6  0x0000000000da2eaa in KSPSolve_GMRES (ksp=0x334bcb0)
    at
/home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/src/ksp/ksp/impls/gmres/gmres.c:230

#7  0x0000000000d1ad6b in KSPSolve (ksp=0x334bcb0, b=0x337d810, x=0x336a1c0)
    at
/home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/src/ksp/ksp/interface/itfunc.c:446

#8  0x00000000006b8a08 in IBTK::PETScBlockKrylovLinearSolver::solveSystem (
    this=0x3249380, x=0x32f3e20, b=0x330c6d0)
    at PETScBlockKrylovLinearSolver.C:384

#9  0x00000000005777e3 in main (argc=6, argv=0x7fff8b8ca988) at main.C:274

In frame 4, the user defined matrix-vector multiplication is successful ( I
printed out a statement).
This would imply in the routine MatVecMult(Mat A, Vec x, Vec y), Vec y
would be a duplicated
vector. This in turn would mean that user-defined routine to duplicate
vectors MatGetVecs(Mat A, Vec *left, Vec* right)
should have been called. But this is not happening. It is in this routine,
that I am setting

*left->ops->getarray = PETSC_NULL;

Any thoughts on what might be going on?

Thanks,
Amneet
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.mcs.anl.gov/pipermail/petsc-dev/attachments/20130228/54f20d1c/attachment.html>


More information about the petsc-dev mailing list