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