:orphan: # 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 --- [Edit on GitLab](https://gitlab.com/petsc/petsc/-/edit/release/src/vec/is/is/utils/isdiff.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)