#if !defined(PETSCISTYPES_H) #define PETSCISTYPES_H /* SUBMANSEC = IS */ /*S IS - Abstract PETSc object that used for efficient indexing Level: beginner .seealso: `ISCreateGeneral()`, `ISCreateBlock()`, `ISCreateStride()`, `ISGetIndices()`, `ISDestroy()` S*/ typedef struct _p_IS *IS; /*S ISLocalToGlobalMapping - mappings from an arbitrary local ordering from 0 to n-1 to a global PETSc ordering used by a vector or matrix. Level: intermediate Notes: Mapping from local to global is scalable; but global to local may not be if the range of global values represented locally is very large. `ISLocalToGlobalMapping` is actually a private object; it is included here for the inline function `ISLocalToGlobalMappingApply()` to allow it to be inlined since it is used so often. .seealso: `ISLocalToGlobalMappingCreate()`, `ISLocalToGlobalMappingApply()`, `ISLocalToGlobalMappingDestroy()` S*/ typedef struct _p_ISLocalToGlobalMapping *ISLocalToGlobalMapping; /*S ISColoring - sets of IS's that define a coloring of something, such as a graph defined by a sparse matrix Level: intermediate Notes: One should not access the *is records below directly because they may not yet have been created. One should use `ISColoringGetIS()` to make sure they are created when needed. When the coloring type is `IS_COLORING_LOCAL` the coloring is in the local ordering of the unknowns. That is the matching the local (ghosted) vector; a local to global mapping must be applied to map them to the global ordering. Developer Note: This is not a `PetscObject` .seealso: `ISColoringCreate()`, `ISColoringGetIS()`, `ISColoringView()` S*/ typedef struct _n_ISColoring *ISColoring; /*S PetscLayout - defines layout of vectors and matrices across processes (which rows are owned by which processes) Level: developer .seealso: `PetscLayoutCreate()`, `PetscLayoutDestroy()` S*/ typedef struct _n_PetscLayout *PetscLayout; #endif