xref: /petsc/include/petscistypes.h (revision fe998a80077c9ee0917a39496df43fc256e1b478)
1 #if !defined(_PETSCISTYPES_H)
2 #define _PETSCISTYPES_H
3 
4 /*S
5      IS - Abstract PETSc object that allows indexing.
6 
7    Level: beginner
8 
9   Concepts: indexing, stride
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()
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     Developer Note: this is not a PetscObject
46 
47 .seealso:  ISColoringCreate(), ISColoringGetIS(), ISColoringView(), ISColoringGetIS()
48 S*/
49 typedef struct _n_ISColoring* ISColoring;
50 
51 /*S
52      PetscLayout - defines layout of vectors and matrices across processes (which rows are owned by which processes)
53 
54    Level: developer
55 
56 
57 .seealso:  PetscLayoutCreate(), PetscLayoutDestroy()
58 S*/
59 typedef struct _n_PetscLayout* PetscLayout;
60 
61 /*S
62   PetscSection - Mapping from integers in a designated range to contiguous sets of integers.
63 
64   In contrast to IS, which maps from integers to single integers, the range of a PetscSection is in the space of
65   contiguous sets of integers. These ranges are frequently interpreted as domains of other array-like objects,
66   especially other PetscSections, Vecs, and ISs. The domain is set with PetscSectionSetChart() and does not need to
67   start at 0. For each point in the domain of a PetscSection, the output set is represented through an offset and a
68   count, which are set using PetscSectionSetOffset() and PetscSectionSetDof() respectively. Lookup is typically using
69   accessors or routines like VecGetValuesSection().
70 
71   Level: developer
72 
73 .seealso:  PetscSectionCreate(), PetscSectionDestroy()
74 S*/
75 typedef struct _p_PetscSection *PetscSection;
76 
77 #endif
78