Skip to main content
`Ctrl`+`K`

# PetscDataType

Used for handling different basic data types.

## Synopsis

    typedef enum {
      PETSC_DATATYPE_UNKNOWN = 0,
      PETSC_DOUBLE           = 1,
      PETSC_COMPLEX          = 2,
      PETSC_LONG             = 3,
      PETSC_SHORT            = 4,
      PETSC_FLOAT            = 5,
      PETSC_CHAR             = 6,
      PETSC_BIT_LOGICAL      = 7,
      PETSC_ENUM             = 8,
      PETSC_BOOL             = 9,
      PETSC___FLOAT128       = 10,
      PETSC_OBJECT           = 11,
      PETSC_FUNCTION         = 12,
      PETSC_STRING           = 13,
      PETSC___FP16           = 14,
      PETSC_STRUCT           = 15,
      PETSC_INT              = 16,
      PETSC_INT64            = 17,
      PETSC_COUNT            = 18,
      PETSC_INT32            = 19,
    } PetscDataType;

## Notes

Use of this should be avoided if one can directly use `MPI_Datatype` instead.

`PETSC_INT` is the datatype for a `PetscInt`, regardless of whether it is 4 or 8 bytes. `PETSC_REAL`, `PETSC_COMPLEX` and `PETSC_SCALAR` are the datatypes for `PetscReal`, `PetscComplex` and `PetscScalar`, regardless of their sizes.

## Developer Notes

It would be nice if we could always just use MPI Datatypes, why can we not?

If you change any values in `PetscDatatype` make sure you update their usage in share/petsc/matlab/PetscBagRead.m and share/petsc/matlab/@PetscOpenSocket/read/write.m

## TODO

Remove use of improper `PETSC_ENUM`

## See Also

`PetscBinaryRead()`, `PetscBinaryWrite()`, `PetscDataTypeToMPIDataType()`, `PetscDataTypeGetSize()`

## Level

beginner

## Location

include/petscsystypes.h

## Examples

src/dm/field/tutorials/ex1.c
src/dm/impls/swarm/tutorials/ex1f90.F90
src/dm/impls/swarm/tutorials/ex1.c
src/sys/tutorials/ex5.c

## Examples

src/dm/tutorials/ex20.c

## Examples

src/ts/tutorials/ex30.c

## Examples

src/ts/tutorials/ex30.c

## Examples

src/ts/tutorials/ex30.c
src/vec/vec/tutorials/ex6.c
src/dm/tutorials/swarm_ex3.c
src/snes/tutorials/ex63.c
src/vec/vec/tutorials/ex6f.F90

Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages