Actual source code: petscistypes.h

petsc-3.10.4 2019-02-26
Report Typos and Errors
  1: #if !defined(_PETSCISTYPES_H)
  2: #define _PETSCISTYPES_H

  4: /*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