xref: /petsc/include/petscistypes.h (revision 76be6f4ff3bd4e251c19fc00ebbebfd58b6e7589)
1 #if !defined(PETSCISTYPES_H)
2 #define PETSCISTYPES_H
3 
4 /* SUBMANSEC = IS */
5 
6 /*S
7      IS - Abstract PETSc object that allows indexing.
8 
9    Level: beginner
10 
11 .seealso: `ISCreateGeneral()`, `ISCreateBlock()`, `ISCreateStride()`, `ISGetIndices()`, `ISDestroy()`
12 S*/
13 typedef struct _p_IS* IS;
14 
15 /*S
16    ISLocalToGlobalMapping - mappings from an arbitrary
17       local ordering from 0 to n-1 to a global PETSc ordering
18       used by a vector or matrix.
19 
20    Level: intermediate
21 
22    Note: mapping from local to global is scalable; but global
23   to local may not be if the range of global values represented locally
24   is very large.
25 
26    Note: the ISLocalToGlobalMapping is actually a private object; it is included
27   here for the inline function ISLocalToGlobalMappingApply() to allow it to be inlined since
28   it is used so often.
29 
30 .seealso: `ISLocalToGlobalMappingCreate()`, `ISLocalToGlobalMappingApply()`, `ISLocalToGlobalMappingDestroy()`
31 S*/
32 typedef struct _p_ISLocalToGlobalMapping* ISLocalToGlobalMapping;
33 
34 /*S
35      ISColoring - sets of IS's that define a coloring
36               of the underlying indices
37 
38    Level: intermediate
39 
40     Notes:
41         One should not access the *is records below directly because they may not yet
42     have been created. One should use ISColoringGetIS() to make sure they are
43     created when needed.
44 
45         When the coloring type is IS_COLORING_LOCAL the coloring is in the local ordering of the unknowns.
46     That is the matching the local (ghosted) vector; a local to global mapping must be applied to map
47     them to the global ordering.
48 
49     Developer Note: this is not a PetscObject
50 
51 .seealso: `ISColoringCreate()`, `ISColoringGetIS()`, `ISColoringView()`
52 S*/
53 typedef struct _n_ISColoring* ISColoring;
54 
55 /*S
56      PetscLayout - defines layout of vectors and matrices across processes (which rows are owned by which processes)
57 
58    Level: developer
59 
60 .seealso: `PetscLayoutCreate()`, `PetscLayoutDestroy()`
61 S*/
62 typedef struct _n_PetscLayout* PetscLayout;
63 
64 #endif
65