petsc-3.14.5 2021-03-03
Report Typos and Errors

# PetscCopyMode

Determines how an array or PetscObject passed to certain functions is copied or retained by the aggregate PetscObject

### Synopsis

    typedef enum {PETSC_COPY_VALUES, PETSC_OWN_POINTER, PETSC_USE_POINTER} PetscCopyMode;

### For the array input

      PETSC_COPY_VALUES - the array values are copied into new space, the user is free to reuse or delete the passed in array

      PETSC_OWN_POINTER - the array values are NOT copied, the object takes ownership of the array and will free it later, the user cannot change or

                          delete the array. The array MUST have been obtained with PetscMalloc(). Hence this mode cannot be used in Fortran.

      PETSC_USE_POINTER - the array values are NOT copied, the object uses the array but does NOT take ownership of the array. The user cannot use

                          the array but the user must delete the array after the object is destroyed.

### For the PetscObject input

      PETSC_COPY_VALUES - the input PetscObject is cloned into the aggregate PetscObject; the user is free to reuse/modify the input PetscObject without side effects.

      PETSC_OWN_POINTER - the input PetscObject is referenced by pointer (with reference count), thus should not be modified by the user. (Modification may cause errors or unintended side-effects in this or a future version of PETSc.)

For either case above, the input PetscObject should be destroyed by the user when no longer needed (the aggregate object increases its reference count).

      PETSC_USE_POINTER - invalid for PetscObject inputs.

### Level

beginner

### Location

include/petscsystypes.h

### Examples

src/vec/vec/utils/tagger/tutorials/ex1.c.html
src/vec/vec/tutorials/ex8.c.html
src/vec/is/is/tutorials/ex1.c.html
src/vec/is/is/tutorials/ex3.c.html
src/vec/is/is/tutorials/ex4.c.html
src/vec/is/is/tutorials/ex5.c.html
src/vec/is/is/tutorials/ex1f.F.html
src/vec/is/is/tutorials/ex1f90.F90.html
src/vec/is/is/tutorials/ex3f90.F90.html
src/vec/is/sf/tutorials/ex1.c.html
src/vec/is/sf/tutorials/ex2.c.html
Index of all Sys routines
Table of Contents for all manual pages
Index of all manual pages