<div dir="ltr">On Thu, Feb 28, 2013 at 12:58 PM, Amneet Bhalla <span dir="ltr"><<a href="mailto:mail2amneet@gmail.com" target="_blank">mail2amneet@gmail.com</a>></span> wrote:<br><div class="gmail_extra"><div class="gmail_quote">
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><br>Hi Jed,
<div><br></div><div>I have registered MatShell that operates on VecNest (which is composed of shell vectors) with KSP. </div><div>When I am solving sytem of equations using this KSP, I am getting some errors. The sequence of </div>



<div>events from gdb are:</div><div><br></div><div><div>#0  0x0000000000000000 in ?? ()</div><div><br></div><div>#1  0x00000000009856fd in VecGetArrayRead (x=0x3422a30, a=0x7fff8b8c6620)</div><div>    at /home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/include/petsc-private/vecimpl.h:350</div>


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


<div>#3  0x0000000000a3f3df in VecGetArrayRead (x=0x34291d0, a=0x7fff8b8c6720)</div><div>    at /home/amneet/SOFTWARES/LIBRARIESIBAMR/PETSc-3.3-Lite/include/petsc-private/vecimpl.h:350</div></div></blockquote><div><br></div>
<div style>This is calling VecValidValues() checks for vec->ops->getarray. Since VecGetArray_Nest() is implemented, it calls the routine. I'm inclined to add a vec->ops->validvalues() and _not_ try to hack it in terms of VecGetArray().</div>
<div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex"><div><div></div><div>#4  0x0000000000a51c83 in MatMult (mat=0x32c34f0, x=0x336a1c0, y=0x34291d0)</div>

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


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


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


<div>#8  0x00000000006b8a08 in IBTK::PETScBlockKrylovLinearSolver::solveSystem (</div><div>    this=0x3249380, x=0x32f3e20, b=0x330c6d0)</div><div>    at PETScBlockKrylovLinearSolver.C:384</div><div><br></div><div>#9  0x00000000005777e3 in main (argc=6, argv=0x7fff8b8ca988) at main.C:274</div>


</div><div><br></div><div>In frame 4, the user defined matrix-vector multiplication is successful ( I printed out a statement).</div><div>This would imply in the routine MatVecMult(Mat A, Vec x, Vec y), Vec y would be a duplicated</div>


<div>vector. This in turn would mean that user-defined routine to duplicate vectors MatGetVecs(Mat A, Vec *left, Vec* right)</div><div>should have been called. But this is not happening. It is in this routine, that I am setting </div>


<div><br></div><div>*left->ops->getarray = PETSC_NULL;</div><div><br></div><div>Any thoughts on what might be going on?</div><div><br></div><div>Thanks,</div><div>Amneet</div>
</blockquote></div><br></div></div>