Le 13/01/2014 22:15, Matthew Knepley a écrit :
On Mon, Jan 13, 2014 at 2:27 PM, Rémi Lacroix <[email protected] <mailto:[email protected]>> wrote:

    Le 13/01/2014 19:00, Matthew Knepley a écrit :
    On Mon, Jan 13, 2014 at 9:47 AM, Rémi Lacroix
    <[email protected] <mailto:[email protected]>> wrote:

        Hello,

        I would like to permute an index set with another index set,
        just like you can do for vectors using VecScatter.

        I have two index sets IS1 and IS2 which share the same size
        but have different parallel layouts. I often need to permute
        vectors/matrices using those two index sets (as in first
        permute with IS1 then permute the result with IS2). Since I
        don't use the intermediate result, I would like to permute
        IS1 with IS2 to get a new index set so that I can permute
        directly my vectors/matrices with it. Is that possible using
        Petsc?


    We do not have this particular composition in our interface.
    However, you could accomplish this using PetscSF.

      Thanks,

         Matt

    Thanks for the quick answer.

    So basically I need to have a look at the underlying mechanism of
    VecScatter and implement something similar for IS. How complex
    would it be in practice?


Using the PetscSF interface instead of VecScatter should not be too hard.

   Matt
In fact this is quite easier than I expected it to be.

I have a quick question though. Is it safe to access the row layout of a matrix using "mat->rmap"? I wasn't able to find a function to do this. This way I would be able to use "PetscSFSetGraphLayout" directly.

Rémi

Reply via email to