On Sun, Nov 13, 2011 at 10:36 PM, Barry Smith <span dir="ltr"><<a href="mailto:bsmith@mcs.anl.gov">bsmith@mcs.anl.gov</a>></span> wrote:<div><br></div><div>0) Me</div><div><br><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">

PetscErrorCode  KSPSetOperators(KSP ksp,Mat Amat,Mat Pmat,MatStructure flag)<br>
{<br>
  MatNullSpace   nullsp;<br>
  PetscErrorCode ierr;<br>
<br>
  PetscFunctionBegin;<br>
  PetscValidHeaderSpecific(ksp,KSP_CLASSID,1);<br>
  if (Amat) PetscValidHeaderSpecific(Amat,MAT_CLASSID,2);<br>
  if (Pmat) PetscValidHeaderSpecific(Pmat,MAT_CLASSID,3);<br>
  if (Amat) PetscCheckSameComm(ksp,1,Amat,2);<br>
  if (Pmat) PetscCheckSameComm(ksp,1,Pmat,3);<br>
  if (!ksp->pc) {ierr = KSPGetPC(ksp,&ksp->pc);CHKERRQ(ierr);}<br>
  ierr = PCSetOperators(ksp->pc,Amat,Pmat,flag);CHKERRQ(ierr);<br>
  if (ksp->setupstage == KSP_SETUP_NEWRHS) ksp->setupstage = KSP_SETUP_NEWMATRIX;  /* so that next solve call will call PCSetUp() on new matrix */<br>
  if (ksp->guess) {<br>
    ierr = KSPFischerGuessReset(ksp->guess);CHKERRQ(ierr);<br>
  }<br>
  ierr = MatGetNullSpace(Amat, &nullsp);CHKERRQ(ierr);<br>
  if (nullsp) {<br>
    ierr = KSPSetNullSpace(ksp, nullsp);CHKERRQ(ierr);<br>
  }<br>
  PetscFunctionReturn(0);<br>
}<br>
<br>
<br>
1) It is legitimate to call KSPSetOperators with a null Amat so this is a bug that crashes large parts of PETSc<br></blockquote><div><br></div><div>What does a NULL A even mean here. I can understand a NULL P, which might mean A == P, but what would it mean</div>
<div>to have no A?</div><div> </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
2) Do you really want to do this? I am not sure I like it.<br>
</blockquote></div><br>Yes, I definitely do. How else will the solver get information about the null space of an operator.</div><div><br></div><div>   Matt<br clear="all"><div><br></div>-- <br>What most experimenters take for granted before they begin their experiments is infinitely more interesting than any results to which their experiments lead.<br>
-- Norbert Wiener<br>
</div>