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