Actual source code: petscsectiontypes.h
1: #ifndef PETSCSECTIONTYPES_H
2: #define PETSCSECTIONTYPES_H
4: /* SUBMANSEC = PetscSection */
6: /*S
7: PetscSection - Mapping from integers in a designated range to contiguous sets of integers.
9: In contrast to `IS`, which maps from integers to single integers, the range of a `PetscSection` is in the space of
10: contiguous sets of integers. These ranges are frequently interpreted as domains of other array-like objects,
11: especially other `PetscSection`, `Vec`s, and `IS`s. The domain is set with `PetscSectionSetChart()` and does not need to
12: start at 0. For each point in the domain of a `PetscSection`, the output set is represented through an offset and a
13: count, which are set using `PetscSectionSetOffset()` and `PetscSectionSetDof()` respectively. Lookup is typically using
14: accessors or routines like `VecGetValuesSection()`.
16: The `PetscSection` object and methods are intended to be used in the PETSc `Vec` and `Mat` implementations. The indices returned by the `PetscSection` are appropriate for the kind of `Vec` it is associated with. For example, if the vector being indexed is a local vector, we call the section a local section. If the section indexes a global vector, we call it a global section. For parallel vectors, like global vectors, we use negative indices to indicate dofs owned by other processes.
18: Level: beginner
20: .seealso: [PetscSection](sec_petscsection), `PetscSectionCreate()`, `PetscSectionDestroy()`, `PetscSectionSym`
21: S*/
22: typedef struct _p_PetscSection *PetscSection;
24: /*S
25: PetscSectionSym - Symmetries of the data referenced by a `PetscSection`.
27: Often the order of data index by a `PetscSection` is meaningful, and describes additional structure, such as points on a
28: line, grid, or lattice. If the data is accessed from a different "orientation", then the image of the data under
29: access then undergoes a symmetry transformation. A `PetscSectionSym` specifies these symmetries. The types of
30: symmetries that can be specified are of the form R * P, where R is a diagonal matrix of scalars, and P is a permutation.
32: Level: developer
34: .seealso: `PetscSection`, `PetscSectionSymCreate()`, `PetscSectionSymDestroy()`, `PetscSectionSetSym()`, `PetscSectionGetSym()`, `PetscSectionSetFieldSym()`,
35: `PetscSectionGetFieldSym()`, `PetscSectionGetSymPoints()`, `PetscSectionSymType`, `PetscSectionSymSetType()`, `PetscSectionSymGetType()`
36: S*/
37: typedef struct _p_PetscSectionSym *PetscSectionSym;
39: /*J
40: PetscSectionSymType - String with the name of a `PetscSectionSym` type.
42: Level: developer
44: Note:
45: `PetscSectionSym` has no default implementation, but is used by `DM` in `PetscSectionSymCreateLabel()`.
47: .seealso: `PetscSectionSymSetType()`, `PetscSectionSymGetType()`, `PetscSectionSym`, `PetscSectionSymCreate()`, `PetscSectionSymRegister()`
48: J*/
49: typedef const char *PetscSectionSymType;
51: #endif