Actual source code: veccreate.c
  2: #include <petsc/private/vecimpl.h>
  4: /*@
  5:   VecCreate - Creates an empty vector object. The type can then be set with VecSetType(),
  6:   or VecSetFromOptions().
  8:    If you never  call VecSetType() or VecSetFromOptions() it will generate an
  9:    error when you try to use the vector.
 11:   Collective
 13:   Input Parameter:
 14: . comm - The communicator for the vector object
 16:   Output Parameter:
 17: . vec  - The vector object
 19:   Level: beginner
 21: .seealso: VecSetType(), VecSetSizes(), VecCreateMPIWithArray(), VecCreateMPI(), VecDuplicate(),
 22:           VecDuplicateVecs(), VecCreateGhost(), VecCreateSeq(), VecPlaceArray()
 23: @*/
 24: PetscErrorCode  VecCreate(MPI_Comm comm, Vec *vec)
 25: {
 26:   Vec            v;
 31:   *vec = NULL;
 32:   VecInitializePackage();
 34:   PetscHeaderCreate(v, VEC_CLASSID, "Vec", "Vector", "Vec", comm, VecDestroy, VecView);
 36:   PetscLayoutCreate(comm,&v->map);
 37:   v->array_gotten = PETSC_FALSE;
 38:   v->petscnative  = PETSC_FALSE;
 39:   v->offloadmask  = PETSC_OFFLOAD_UNALLOCATED;
 40: #if defined(PETSC_HAVE_VIENNACL) || defined(PETSC_HAVE_CUDA) || defined(PETSC_HAVE_HIP)
 41:   v->minimum_bytes_pinned_memory = 0;
 42:   v->pinned_memory = PETSC_FALSE;
 43: #endif
 44:   PetscStrallocpy(PETSCRANDER48,&v->defaultrandtype);
 45:   *vec = v;
 46:   return(0);
 47: }