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