# 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 ISs must be created independently, or to view many
logically independent serial ISs.

The input IS must have the same type on every process.

## Level
advanced

## Location
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/is/is/interface/index.c.html#ISOnComm">src/vec/is/is/interface/index.c</A>

## Examples
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/dm/label/tutorials/ex1.c.html">src/dm/label/tutorials/ex1.c.html</A><BR>

## Implementations

<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/is/is/impls/block/block.c.html#ISOnComm_Block">ISOnComm_Block in src/vec/is/is/impls/block/block.c</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/is/is/impls/general/general.c.html#ISOnComm_General">ISOnComm_General in src/vec/is/is/impls/general/general.c</A><BR>
<A HREF="PETSC_DOC_OUT_ROOT_PLACEHOLDER/src/vec/is/is/impls/stride/stride.c.html#ISOnComm_Stride">ISOnComm_Stride in src/vec/is/is/impls/stride/stride.c</A><BR>


---
[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](/docs/manualpages/index.md)  
[Index of all manual pages](/docs/manualpages/singleindex.md)  
