<div class="gmail_quote">On Thu, Jun 16, 2011 at 12:59, Alexander Grayver <span dir="ltr">&lt;<a href="mailto:agrayver@gfz-potsdam.de">agrayver@gfz-potsdam.de</a>&gt;</span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex;">
<div id=":68k">   ! store transformed elements<br>
    call MatSetValues(A,1,rowidx,nvals,cols,transformedvals,INSERT_VALUES,ierr);CHKERRQ(ierr);<br>
    call MatRestoreRow(A,i,nvals,cols,vals,ierr);CHKERRQ(ierr); </div></blockquote></div><br><div>You can&#39;t mix these because MatGetRow() needs an assembled matrix, and MatSetValues() makes the matrix be unassembled.</div>
<div><br></div><div>What do you want the parallel semantics to be during this transformation?</div><div><br></div><div>The MatGetArray() for MPIDense just gives you access to the &quot;diagonal&quot; block.</div><div><br>
</div><div>What is the high-level description of the operation you&#39;re trying to do? Is this &quot;matrix&quot; actually being used as a linear operator, or is it a grid of values?</div>