<div dir="ltr"><div><div><div>Hi All,<br><br></div>In MatSolve(), there is a piece of code:<br><br><i>  if (mat->errortype) {<br>    ierr = PetscInfo1(mat,"MatFactorError %D\n",mat->errortype);CHKERRQ(ierr);<br>    ierr = VecSetInf(x);CHKERRQ(ierr);<br>  } else {<br>    ierr = (*mat->ops->solve)(mat,b,x);CHKERRQ(ierr);<br>  }<br></i><br></div>If a direct solver such as LU or superlu fails to create a factorization, why we do not stop here and throw out an error message here or earlier?  Now we just let solver keep doing garbage computation, and finally we have a solution like this:<br><br><i>Vec Object: 1 MPI processes<br>  type: mpi<br>Process [0]<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.<br>inf.</i><br><br></div><div>Any particular reason to handle the thing in this way?<br></div><div><br></div>Fande,<br><div><br><br></div></div>