Actual source code: veccreate.c

  1: #define PETSCVEC_DLL
 2:  #include private/vecimpl.h

  6: /*@
  7:   VecCreate - Creates an empty vector object. The type can then be set with VecSetType(),
  8:   or VecSetFromOptions().

 10:    If you never  call VecSetType() or VecSetFromOptions() it will generate an 
 11:    error when you try to use the vector.

 13:   Collective on MPI_Comm

 15:   Input Parameter:
 16: . comm - The communicator for the vector object

 18:   Output Parameter:
 19: . vec  - The vector object

 21:   Level: beginner

 23: .keywords: vector, create
 24: .seealso: VecSetType(), VecSetSizes(), VecCreateMPIWithArray(), VecCreateMPI(), VecDuplicate(),
 25:           VecDuplicateVecs(), VecCreateGhost(), VecCreateSeq(), VecPlaceArray()
 26: @*/
 27: PetscErrorCode  VecCreate(MPI_Comm comm, Vec *vec)
 28: {
 29:   Vec v;

 34:   *vec = PETSC_NULL;
 35: #ifndef PETSC_USE_DYNAMIC_LIBRARIES
 36:   VecInitializePackage(PETSC_NULL);
 37: #endif

 39:   PetscHeaderCreate(v, _p_Vec, struct _VecOps, VEC_COOKIE, -1, "Vec", comm, VecDestroy, VecView);
 40:   PetscLogObjectMemory(v, sizeof(struct _p_Vec));
 41:   PetscMemzero(v->ops, sizeof(struct _VecOps));
 42:   v->bops->publish  = PETSC_NULL /* VecPublish_Petsc */;
 43:   v->type_name      = PETSC_NULL;

 45:   v->map.range    = PETSC_NULL;
 46:   v->data         = PETSC_NULL;
 47:   v->map.n        = -1;
 48:   v->map.N        = -1;
 49:   v->map.bs       = -1;
 50:   v->mapping      = PETSC_NULL;
 51:   v->bmapping     = PETSC_NULL;
 52:   v->array_gotten = PETSC_FALSE;
 53:   v->petscnative  = PETSC_FALSE;

 55:   *vec = v;
 56:   return(0);
 57: }