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?

Thanks again!

At 2018-04-10 22:07:04, "Smith, Barry F." <> 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, 我 <> 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

Reply via email to