Skip to main content
`Ctrl`+`K`

# ISPairToList

Convert an `IS` pair encoding an integer map to a list of `IS`.

## Synopsis

    #include "petscis.h"
    PetscErrorCode ISPairToList(IS xis, IS yis, PetscInt *listlen, IS **islist)

Collective

## Input Parameters

- xis - domain `IS`

- yis - range `IS`, the maximum value must be less than `PETSC_MPI_INT_MAX`

## Output Parameters

- listlen - length of `islist`

- islist - list of `IS`s breaking up indices by color

## Notes

Each `IS` in `islist` contains the preimage for each index on `yis`. The `IS` in `islist` are constructed on the subcommunicators of the input `IS` pair. Each subcommunicator corresponds to the preimage of some index j – this subcomm contains exactly the MPI processes that assign some indices i to j. This is essentially the inverse of `ISListToPair()`.

`xis` and `yis` must be of the same length and have congruent communicators.

The resulting `IS` have subcommunicators in a “deadlock-free” order (see `ISListToPair()`).

## See Also

`IS`, `ISListToPair()`

## Level

developer

## Location

src/vec/is/is/utils/isdiff.c

Index of all IS routines
Table of Contents for all manual pages
Index of all manual pages