:orphan:
# ISOnComm
Split a parallel `IS` on subcomms (usually self) or concatenate index sets on subcomms into a parallel index set
## Synopsis
```
#include "petscis.h"
PetscErrorCode ISOnComm(IS is, MPI_Comm comm, PetscCopyMode mode, IS *newis)
```
Collective
## Input Parameters
- ***is -*** index set
- ***comm -*** communicator for new index set
- ***mode -*** copy semantics, `PETSC_USE_POINTER` for no-copy if possible, otherwise `PETSC_COPY_VALUES`
## Output Parameter
- ***newis -*** new `IS` on `comm`
## Notes
It is usually desirable to create a parallel `IS` and look at the local part when necessary.
This function is useful if serial `IS`s must be created independently, or to view many
logically independent serial `IS`s.
The input `IS` must have the same type on every MPI process.
## See Also
`IS`
## Level
advanced
## Location
src/vec/is/is/interface/index.c
## Examples
src/dm/label/tutorials/ex1.c
## Implementations
ISOnComm_Block in src/vec/is/is/impls/block/block.c
ISOnComm_General in src/vec/is/is/impls/general/general.c
ISOnComm_Stride in src/vec/is/is/impls/stride/stride.c
---
[Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/vec/is/is/interface/index.c)
[Index of all IS routines](index.md)
[Table of Contents for all manual pages](/manualpages/index.md)
[Index of all manual pages](/manualpages/singleindex.md)