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