Skip to main content
`Ctrl`+`K`

# ISEmbed

Embed `IS` `a` into `IS` `b` by finding the locations in `b` that have the same indices as in `a`. If `c` is the `IS` of these locations, we have `a = b*c`, regarded as a composition of the corresponding `ISLocalToGlobalMapping`.

## Synopsis

    #include "petscis.h"
    PetscErrorCode ISEmbed(IS a, IS b, PetscBool drop, IS *c)

Not Collective

## Input Parameters

- a - `IS` to embed

- b - `IS` to embed into

- drop - flag indicating whether to drop indices of `a` that are not in `b`.

## Output Parameter

- c - local embedding indices

## Notes

If some of the global indices of `a` are not among the indices of `b`, the embedding is impossible. The local indices of `a` corresponding to these global indices are either mapped to -1 (if `!drop`) or are omitted (if `drop`). In the former case the size of `c` is the same as that of `a`, in the latter case the size of `c` may be smaller.

The resulting `IS` is sequential, since the index substitution it encodes is purely local.

## See Also

`IS`, `ISLocalToGlobalMapping`

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