Actual source code: petscistypes.h

petsc-master 2019-06-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: .seealso:  ISCreateGeneral(), ISCreateBlock(), ISCreateStride(), ISGetIndices(), ISDestroy()
 10: S*/
 11: typedef struct _p_IS* IS;

 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.

 18:    Level: intermediate

 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.

 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.

 28: .seealso:  ISLocalToGlobalMappingCreate()
 29: S*/
 30: typedef struct _p_ISLocalToGlobalMapping* ISLocalToGlobalMapping;

 32: /*S
 33:      ISColoring - sets of IS's that define a coloring
 34:               of the underlying indices

 36:    Level: intermediate

 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.

 43:     Developer Note: this is not a PetscObject

 45: .seealso:  ISColoringCreate(), ISColoringGetIS(), ISColoringView(), ISColoringGetIS()
 46: S*/
 47: typedef struct _n_ISColoring* ISColoring;

 49: /*S
 50:      PetscLayout - defines layout of vectors and matrices across processes (which rows are owned by which processes)

 52:    Level: developer


 55: .seealso:  PetscLayoutCreate(), PetscLayoutDestroy()
 56: S*/
 57: typedef struct _n_PetscLayout* PetscLayout;

 59: /*S
 60:   PetscSection - Mapping from integers in a designated range to contiguous sets of integers.

 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().

 69:   Level: developer

 71: .seealso:  PetscSectionCreate(), PetscSectionDestroy()
 72: S*/
 73: typedef struct _p_PetscSection *PetscSection;

 75: /*S
 76:   PetscSectionSym - Symmetries of the data referenced by a PetscSection.

 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.

 83:   Level: developer

 85: .seealso: PetscSectionSymCreate(), PetscSectionSymDestroy(), PetscSectionSetSym(), PetscSectionGetSym(), PetscSectionSetFieldSym(), PetscSectionGetFieldSym(), PetscSectionGetSymPoints()
 86: S*/
 87: typedef struct _p_PetscSectionSym *PetscSectionSym;

 89: #endif