<div style="line-height:1.7;color:#000000;font-size:14px;font-family:Arial"><br>Thanks for your reply! And sorry for my late answer. I want to parallel a particle-method code and solve Ax=b in each timestep.  In this code, each partition forms a CSR matrix and assembles the final coefficient matrix by MatCreateMPIAIJWithArrays. But, the domain decomposition makes that the particles' order doesn't follow the original order. In other words, Solution Vector x follows the original order but Vector b follows a new order due to domain decomposition. So I want to change the Vector b's order and Matrix A's row order to follow the origin order. I have been considering to change my parallel code in these days, but I didn't find a best way. I'm considering to multiply a renumbering identity matrix at both sides of the equation with function MatMatMult. Do you have any suggestions for this problem? If the function MatMatMult can influence the parallel efficiency obviously?<br><div>Thanks again!</div><div>Daye</div><br><br><div style="position:relative;zoom:1"></div><div id="divNeteaseMailCard"></div><br><pre><br>At 2018-04-10 22:07:04, "Smith, Barry F." <bsmith@mcs.anl.gov> wrote:
>
>   When and where do you want to change the row order?
>
>   For PETSc and external factorization based solvers this is handled automatically, no need to do anything.
>
>   The ordering of matrix rows corresponds to the ordering of the vectors; almost always one partitions and orders the vectors based on the mesh that underlies the problem and there is no reason to reorder once the layout is initially determined.
>
>   Barry
>
>
>
>> On Apr 10, 2018, at 8:42 AM, ĪŅ <dayedut123@163.com> wrote:
>> 
>> Hello,
>> I want to change the row order of a sparse matrix. Are there any build-in functions and suggestions?
>> Thank you very much!
>> Daye
>> 
>> 
>>  
>
</pre></div><br><br><span title="neteasefooter"><p> </p></span>