<div dir="ltr"><div><div><div><div><div>One more question.<br><br></div>Suppose that we are solving the singular linear system Ax = b. N(A) is the null space of A, and N(A^T) is the null space of the transpose of A.<br><br></div>The linear system is solved using SNES, that is, F(x) = Ax-b = Ax -b_r - b_n. Here b_n  in N(A^T),  and b_r in R(A).  During each nonlinear iteration, a linear system A \delta x = F(x) is solved. N(A) is applied to Krylov space  during the linear iterating. Before the actual solve "(*ksp->ops->solve)(ksp)" for \delta x,  a temporary copy of F(x) is made, F_tmp. N(A^T) is applied to F_tmp. We will get a \delta x.  F(x+\delta x ) =  A(x+\delta x)-b_r - b_n.   <br><br></div>F(x+\delta x ) always contain the vector b_n, and then the algorithm never converges because the normal of F is at least 1. <br><br></div>Should we apply N(A^T) to F instead of F_tmp so that b_n can be removed from F?<br><br>MatGetTransposeNullSpace(pmat,&nullsp);<br>if (nullsp) {<br>   VecDuplicate(ksp->vec_rhs,&btmp);<br>   VecCopy(ksp->vec_rhs,btmp);<br>   MatNullSpaceRemove(nullsp,btmp);<br>   vec_rhs      = ksp->vec_rhs;<br>   ksp->vec_rhs = btmp;<br>}<br><br>should  be changed to <br><br>MatGetTransposeNullSpace(pmat,&nullsp);<br>if (nullsp) {<br>   MatNullSpaceRemove(nullsp,ksp->vec_rhs);<br>}<br>???<br><br></div><div>Or other solutions to this issue?<br><br><br></div><div>Fande Kong,<br></div><div><br></div><div><div><div><div><div><div><br><br><br><div class="gmail_extra"><br><div class="gmail_quote">On Thu, Oct 13, 2016 at 8:23 AM, Matthew Knepley <span dir="ltr"><<a href="mailto:knepley@gmail.com" target="_blank">knepley@gmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><span class="gmail-">On Thu, Oct 13, 2016 at 9:06 AM, Kong, Fande <span dir="ltr"><<a href="mailto:fande.kong@inl.gov" target="_blank">fande.kong@inl.gov</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><br><div class="gmail_extra"><br><div class="gmail_quote">On Wed, Oct 12, 2016 at 10:21 PM, Jed Brown <span dir="ltr"><<a href="mailto:jed@jedbrown.org" target="_blank">jed@jedbrown.org</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><span>Barry Smith <<a href="mailto:bsmith@mcs.anl.gov" target="_blank">bsmith@mcs.anl.gov</a>> writes:<br>
>   I would make that a separate routine that the users would call first.<br>
<br>
</span>We have VecMDot and VecMAXPY.  I would propose adding<br>
<br>
  VecQR(PetscInt nvecs,Vec *vecs,PetscScalar *R);<br>
<br>
(where R can be NULL).<br></blockquote><div><br></div><div>What does R mean here?<br></div></div></div></div></blockquote><div><br></div></span><div>It means the coefficients of the old basis vectors in the new basis.</div><div><br></div><div>  Matt</div><span class="gmail-"><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex"><div dir="ltr"><div class="gmail_extra"><div class="gmail_quote"><div></div><div>If nobody working on this, I will be going to take a try.<br><br></div><div>Fande,<br></div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left:1px solid rgb(204,204,204);padding-left:1ex">
<br>
Does anyone use the "Vecs" type?<br>
</blockquote></div><br></div></div>
</blockquote></span></div><span class="gmail-HOEnZb"><font color="#888888"><br><br clear="all"><div><br></div>-- <br><div class="gmail-m_5899472988596035871gmail_signature">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</div>
</font></span></div></div>
</blockquote></div><br></div></div></div></div></div></div></div></div>