[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