Skip to main content
`Ctrl`+`K`

# ISListToPair

Convert an `IS` list to a pair of `IS` of equal length defining an equivalent integer multimap. Each `IS` in `islist` is assigned an integer j so that all of the indices of that `IS` are mapped to j.

## Synopsis

    #include "petscis.h"
    PetscErrorCode ISListToPair(MPI_Comm comm, PetscInt listlen, IS islist[], IS *xis, IS *yis)

Collective

## Input Parameters

- comm - `MPI_Comm`

- listlen - `IS` list length

- islist - `IS` list

## Output Parameters

- xis - domain `IS`

- yis - range `IS`

## Notes

The global integers assigned to the `IS` of `islist` might not correspond to the local numbers of the `IS` on that list, but the two orderings are the same: the global integers assigned to the `IS` on the local list form a strictly increasing sequence.

The `IS` in `islist` can belong to subcommunicators of `comm`, and the subcommunicators on the input `IS` list are assumed to be in a “deadlock-free” order.

Local lists of `PetscObject`s (or their subcomms) on a comm are “deadlock-free” if subcomm1 precedes subcomm2 on any local list, then it precedes subcomm2 on all ranks. Equivalently, the local numbers of the subcomms on each local list are drawn from some global numbering. This is ensured, for example, by `ISPairToList()`.

## See Also

`IS`, `ISPairToList()`

## 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