<html><head></head><body style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">That is what I figure.<div><br></div><div>I'm curious though if you need to manually determine the local row distribution after you do that. &nbsp;(for example, say you completely remove all the values from the local range of one processor… that processor wouldn't be utilized unless you redistribute the matrix)</div><div><br></div><div>-Andrew</div><div><br></div><div><br><div><div>On May 14, 2012, at 10:30 PM, Shri wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><br><div><div>On May 14, 2012, at 11:07 PM, Andrew Spott wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div>I'm attempting to do a convergence study on my basis, see how large my basis need to be to make my results accurate, does that help?</div></div></blockquote><div><br></div>&nbsp; &nbsp;You could use create a matrix with the set of all basis vectors and then zero out the rows &amp; columns of the matrix using MatZeroRowsColumns.&nbsp;<a href="http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatZeroRowsColumns.html">http://www.mcs.anl.gov/petsc/petsc-current/docs/manualpages/Mat/MatZeroRowsColumns.html</a>&nbsp;</div><div>&nbsp; &nbsp;I think this should be better than each time creating a new matrix when the basis changes.<br><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; "><div><br></div><div>-Andrew</div><br><div><div>On May 14, 2012, at 9:55 PM, Shri wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">What are you trying to do by removing the rows/columns of the matrix? Are there any variables that you want to treat as constants and hence eliminating the rows and columns?<div><br></div><div>Shri</div><div><br><div><div>On May 14, 2012, at 10:51 PM, Andrew Spott wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div style="word-wrap: break-word; -webkit-nbsp-mode: space; -webkit-line-break: after-white-space; ">Is there a computational cost to using a sparse matrix that is much bigger than it should be?<div><br></div><div>for example, say you have a matrix that is n x n, but you only store anything in the first m rows and columns (m &lt; n). &nbsp;</div><div><br></div><div>Also, would you then have to redo the matrix distribution among nodes by hand, or will PETSC do it for you?</div><div><br></div><div>Thanks for the quick reply</div><div><br></div><div>-Andrew</div><div><div><br><div><div>On May 14, 2012, at 9:38 PM, Jed Brown wrote:</div><br class="Apple-interchange-newline"><blockquote type="cite"><div class="gmail_quote">On Mon, May 14, 2012 at 9:33 PM, Andrew Spott <span dir="ltr">&lt;<a href="mailto:andrew.spott@gmail.com" target="_blank">andrew.spott@gmail.com</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
What is the best way to selectively add/remove columns/rows of a Mat?<br>
<br>
Is there a way to do it in place, or does it require essentially moving the values to a new matrix?<br></blockquote><div><br></div><div>If you only need to add/remove a small number of values, it's best to allocate for all that might be present and just store explicit zeros.</div>
<div><br></div><div>To add or remove rows, you are also changing the vector size that can be multiplied against, and the data structure must be rebuilt. This is why it's frequently preferable to use MatZeroRows (or a variant) instead of removing them from the data structure.</div>
</div>
</blockquote></div><br></div></div></div></blockquote></div><br></div></div></blockquote></div><br></div></blockquote></div><br></div></blockquote></div><br></div></body></html>