Trying to make a small example for reproducing I could figure out my mistake in 
the code (totally unrelated to the question). MatPermute(..) just works fine.

My apologies.
Cyrill

From: Matthew Knepley <knep...@gmail.com<mailto:knep...@gmail.com>>
Date: Donnerstag, 7. Juli 2016 um 16:48
To: von Planta Cyrill 
<cyrill.von.pla...@usi.ch<mailto:cyrill.von.pla...@usi.ch>>
Cc: "petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>" 
<petsc-users@mcs.anl.gov<mailto:petsc-users@mcs.anl.gov>>
Subject: Re: [petsc-users] Reordering rows of parallel matrix across processors

On Thu, Jul 7, 2016 at 3:37 AM, Cyrill Vonplanta 
<cyrill.von.pla...@usi.ch<mailto:cyrill.von.pla...@usi.ch>> wrote:
Dear all,

I would like to reorder the rows of a matrix across processors. Is this 
possible with MatPermute(…)?

Yes, this works with MatPermute().

Could you send this small example so I can reproduce it?

To illustrate here is how an index set would look like for a matrix with  M=35 
on 2 CPU’s. Amongst other things I intend to swap the first and last row here.

[0] Number of indices in set 24
[0] 0 34
[0] 1 1
[0] 2 2
[0] 3 3
[0] 4 4
[0] 5 5
[0] 6 6
[0] 7 7
[0] 8 15
[0] 9 16
[0] 10 11
[0] 11 8
[0] 12 10
[0] 13 21
[0] 14 9
[0] 15 12
[0] 16 13
[0] 17 14
[0] 18 17
[0] 19 18
[0] 20 19
[0] 21 20
[0] 22 22
[0] 23 23
[1] Number of indices in set 11
[1] 0 24
[1] 1 25
[1] 2 26
[1] 3 27
[1] 4 28
[1] 5 29
[1] 6 30
[1] 7 31
[1] 8 32
[1] 9 33
[1] 10 0

Instead of exchanging the first and last row it seems to replace them with 
zeros only.
If this can’t be done with MatPermute how could it be done?

You could also use MatGetSubMatrix().

  Thanks,

    Matt

Thanks
Cyrill




--
What most experimenters take for granted before they begin their experiments is 
infinitely more interesting than any results to which their experiments lead.
-- Norbert Wiener

Reply via email to