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