1: #if !defined(_PETSCISTYPES_H) 2:#define _PETSCISTYPES_H4: /*S 5: IS - Abstract PETSc object that allows indexing. 7: Level: beginner 9: Concepts: indexing, stride 11: .seealso: ISCreateGeneral(), ISCreateBlock(), ISCreateStride(), ISGetIndices(), ISDestroy() 12: S*/ 13: typedef struct _p_IS* IS; 15: /*S 16: ISLocalToGlobalMapping - mappings from an arbitrary 17: local ordering from 0 to n-1 to a global PETSc ordering 18: used by a vector or matrix. 20: Level: intermediate 22: Note: mapping from Local to Global is scalable; but Global 23: to Local may not be if the range of global values represented locally 24: is very large. 26: Note: the ISLocalToGlobalMapping is actually a private object; it is included 27: here for the inline function ISLocalToGlobalMappingApply() to allow it to be inlined since 28: it is used so often. 30: .seealso: ISLocalToGlobalMappingCreate() 31: S*/ 32: typedef struct _p_ISLocalToGlobalMapping* ISLocalToGlobalMapping; 34: /*S 35: ISColoring - sets of IS's that define a coloring 36: of the underlying indices 38: Level: intermediate 40: Notes: 41: One should not access the *is records below directly because they may not yet 42: have been created. One should use ISColoringGetIS() to make sure they are 43: created when needed. 45: Developer Note: this is not a PetscObject 47: .seealso: ISColoringCreate(), ISColoringGetIS(), ISColoringView(), ISColoringGetIS() 48: S*/ 49: typedef struct _n_ISColoring* ISColoring; 51: /*S 52: PetscLayout - defines layout of vectors and matrices across processes (which rows are owned by which processes) 54: Level: developer 57: .seealso: PetscLayoutCreate(), PetscLayoutDestroy() 58: S*/ 59: typedef struct _n_PetscLayout* PetscLayout; 61: /*S 62: PetscSection - Mapping from integers in a designated range to contiguous sets of integers. 64: In contrast to IS, which maps from integers to single integers, the range of a PetscSection is in the space of 65: contiguous sets of integers. These ranges are frequently interpreted as domains of other array-like objects, 66: especially other PetscSections, Vecs, and ISs. The domain is set with PetscSectionSetChart() and does not need to 67: start at 0. For each point in the domain of a PetscSection, the output set is represented through an offset and a 68: count, which are set using PetscSectionSetOffset() and PetscSectionSetDof() respectively. Lookup is typically using 69: accessors or routines like VecGetValuesSection(). 71: Level: developer 73: .seealso: PetscSectionCreate(), PetscSectionDestroy() 74: S*/ 75: typedef struct _p_PetscSection *PetscSection; 77: /*S 78: PetscSectionSym - Symmetries of the data referenced by a PetscSection. 80: Often the order of data index by a PetscSection is meaningful, and describes additional structure, such as points on a 81: line, grid, or lattice. If the data is accessed from a different "orientation", then the image of the data under 82: access then undergoes a symmetry transformation. A PetscSectionSym specifies these symmetries. The types of 83: symmetries that can be specified are of the form R * P, where R is a diagonal matrix of scalars, and P is a permutation. 85: Level: developer 87: .seealso: PetscSectionSymCreate(), PetscSectionSymDestroy(), PetscSectionSetSym(), PetscSectionGetSym(), PetscSectionSetFieldSym(), PetscSectionGetFieldSym(), PetscSectionGetSymPoints() 88: S*/ 89: typedef struct _p_PetscSectionSym *PetscSectionSym; 91: #endif