I think there is an inconsistency in our definitions. If you create a matrix which<br>is 4x8 on 2 procs, then you end up with a row and column map like this:<br><br> rowMap colMap<br> [0..2) [2..4) [0..4) [4..8)<br clear="all">
<br>However, we use the column map for queries which then give nonsense. The most<br>damaging is in MatSetValues(). If I give a value for (2,2) on proc 1, then since<br>2 < cstart = 4, this value is considered "off-diagonal" and can cause a malloc(). So<br>
I think we have a choice. We can define "diagonal block" to have this weird shape,<br>or we can change all queries for the diagonal block to use only the rowMap. I vote<br>for the latter, but does anyone have an objection?<br>
<br> Matt<br><br>-- <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>