xref: /petsc/include/petscistypes.h (revision 58c0e5077dcf40d6a880c19c87f1075ae1d22c8e)
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 .seealso:  ISCreateGeneral(), ISCreateBlock(), ISCreateStride(), ISGetIndices(), ISDestroy()
10 S*/
11 typedef struct _p_IS* IS;
12 
13 /*S
14    ISLocalToGlobalMapping - mappings from an arbitrary
15       local ordering from 0 to n-1 to a global PETSc ordering
16       used by a vector or matrix.
17 
18    Level: intermediate
19 
20    Note: mapping from Local to Global is scalable; but Global
21   to Local may not be if the range of global values represented locally
22   is very large.
23 
24    Note: the ISLocalToGlobalMapping is actually a private object; it is included
25   here for the inline function ISLocalToGlobalMappingApply() to allow it to be inlined since
26   it is used so often.
27 
28 .seealso:  ISLocalToGlobalMappingCreate()
29 S*/
30 typedef struct _p_ISLocalToGlobalMapping* ISLocalToGlobalMapping;
31 
32 /*S
33      ISColoring - sets of IS's that define a coloring
34               of the underlying indices
35 
36    Level: intermediate
37 
38     Notes:
39         One should not access the *is records below directly because they may not yet
40     have been created. One should use ISColoringGetIS() to make sure they are
41     created when needed.
42 
43     Developer Note: this is not a PetscObject
44 
45 .seealso:  ISColoringCreate(), ISColoringGetIS(), ISColoringView(), ISColoringGetIS()
46 S*/
47 typedef struct _n_ISColoring* ISColoring;
48 
49 /*S
50      PetscLayout - defines layout of vectors and matrices across processes (which rows are owned by which processes)
51 
52    Level: developer
53 
54 
55 .seealso:  PetscLayoutCreate(), PetscLayoutDestroy()
56 S*/
57 typedef struct _n_PetscLayout* PetscLayout;
58 
59 /*S
60   PetscSection - Mapping from integers in a designated range to contiguous sets of integers.
61 
62   In contrast to IS, which maps from integers to single integers, the range of a PetscSection is in the space of
63   contiguous sets of integers. These ranges are frequently interpreted as domains of other array-like objects,
64   especially other PetscSections, Vecs, and ISs. The domain is set with PetscSectionSetChart() and does not need to
65   start at 0. For each point in the domain of a PetscSection, the output set is represented through an offset and a
66   count, which are set using PetscSectionSetOffset() and PetscSectionSetDof() respectively. Lookup is typically using
67   accessors or routines like VecGetValuesSection().
68 
69   Level: developer
70 
71 .seealso:  PetscSectionCreate(), PetscSectionDestroy()
72 S*/
73 typedef struct _p_PetscSection *PetscSection;
74 
75 /*S
76   PetscSectionSym - Symmetries of the data referenced by a PetscSection.
77 
78   Often the order of data index by a PetscSection is meaningful, and describes additional structure, such as points on a
79   line, grid, or lattice.  If the data is accessed from a different "orientation", then the image of the data under
80   access then undergoes a symmetry transformation.  A PetscSectionSym specifies these symmetries.  The types of
81   symmetries that can be specified are of the form R * P, where R is a diagonal matrix of scalars, and P is a permutation.
82 
83   Level: developer
84 
85 .seealso: PetscSectionSymCreate(), PetscSectionSymDestroy(), PetscSectionSetSym(), PetscSectionGetSym(), PetscSectionSetFieldSym(), PetscSectionGetFieldSym(), PetscSectionGetSymPoints()
86 S*/
87 typedef struct _p_PetscSectionSym *PetscSectionSym;
88 
89 #endif
90