xref: /petsc/include/petscsectiontypes.h (revision ea844a1adba28e307898a6e94a1f422fd7d2db48)
1*ea844a1aSMatthew Knepley #if !defined(PETSCSECTIONTYPES_H)
2*ea844a1aSMatthew Knepley #define PETSCSECTIONTYPES_H
3*ea844a1aSMatthew Knepley 
4*ea844a1aSMatthew Knepley /*S
5*ea844a1aSMatthew Knepley   PetscSection - Mapping from integers in a designated range to contiguous sets of integers.
6*ea844a1aSMatthew Knepley 
7*ea844a1aSMatthew Knepley   In contrast to IS, which maps from integers to single integers, the range of a PetscSection is in the space of
8*ea844a1aSMatthew Knepley   contiguous sets of integers. These ranges are frequently interpreted as domains of other array-like objects,
9*ea844a1aSMatthew Knepley   especially other PetscSections, Vecs, and ISs. The domain is set with PetscSectionSetChart() and does not need to
10*ea844a1aSMatthew Knepley   start at 0. For each point in the domain of a PetscSection, the output set is represented through an offset and a
11*ea844a1aSMatthew Knepley   count, which are set using PetscSectionSetOffset() and PetscSectionSetDof() respectively. Lookup is typically using
12*ea844a1aSMatthew Knepley   accessors or routines like VecGetValuesSection().
13*ea844a1aSMatthew Knepley 
14*ea844a1aSMatthew Knepley   Level: beginner
15*ea844a1aSMatthew Knepley 
16*ea844a1aSMatthew Knepley .seealso:  PetscSectionCreate(), PetscSectionDestroy(), PetscSectionSym
17*ea844a1aSMatthew Knepley S*/
18*ea844a1aSMatthew Knepley typedef struct _p_PetscSection *PetscSection;
19*ea844a1aSMatthew Knepley 
20*ea844a1aSMatthew Knepley /*S
21*ea844a1aSMatthew Knepley   PetscSectionSym - Symmetries of the data referenced by a PetscSection.
22*ea844a1aSMatthew Knepley 
23*ea844a1aSMatthew Knepley   Often the order of data index by a PetscSection is meaningful, and describes additional structure, such as points on a
24*ea844a1aSMatthew Knepley   line, grid, or lattice.  If the data is accessed from a different "orientation", then the image of the data under
25*ea844a1aSMatthew Knepley   access then undergoes a symmetry transformation.  A PetscSectionSym specifies these symmetries.  The types of
26*ea844a1aSMatthew Knepley   symmetries that can be specified are of the form R * P, where R is a diagonal matrix of scalars, and P is a permutation.
27*ea844a1aSMatthew Knepley 
28*ea844a1aSMatthew Knepley   Level: developer
29*ea844a1aSMatthew Knepley 
30*ea844a1aSMatthew Knepley .seealso: PetscSection, PetscSectionSymCreate(), PetscSectionSymDestroy(), PetscSectionSetSym(), PetscSectionGetSym(), PetscSectionSetFieldSym(),
31*ea844a1aSMatthew Knepley           PetscSectionGetFieldSym(), PetscSectionGetSymPoints(), PetscSectionSymType, PetscSectionSymSetType(), PetscSectionSymGetType()
32*ea844a1aSMatthew Knepley S*/
33*ea844a1aSMatthew Knepley typedef struct _p_PetscSectionSym *PetscSectionSym;
34*ea844a1aSMatthew Knepley 
35*ea844a1aSMatthew Knepley /*J
36*ea844a1aSMatthew Knepley   PetscSectionSymType - String with the name of a PetscSectionSym type.
37*ea844a1aSMatthew Knepley 
38*ea844a1aSMatthew Knepley   Level: developer
39*ea844a1aSMatthew Knepley 
40*ea844a1aSMatthew Knepley   Notes:
41*ea844a1aSMatthew Knepley     PetscSectionSym has no default implementation, but is used by DM in PetscSectionSymCreateLabel().
42*ea844a1aSMatthew Knepley 
43*ea844a1aSMatthew Knepley .seealso: PetscSectionSymSetType(), PetscSectionSymGetType(), PetscSectionSym, PetscSectionSymCreate(), PetscSectionSymRegister()
44*ea844a1aSMatthew Knepley J*/
45*ea844a1aSMatthew Knepley typedef const char *PetscSectionSymType;
46*ea844a1aSMatthew Knepley 
47*ea844a1aSMatthew Knepley #endif
48