Actual source code: veccreate.c

  1: #ifdef PETSC_RCS_HEADER
  2: static char vcid[] = "$Id: vecserialize.c,v 1.10 2000/01/10 03:18:14 knepley Exp $";
  3: #endif

 5:  #include vecimpl.h

  9: /*@C
 10:   VecCreate - Creates an empty vector object. The type can then be set with VecSetType(),
 11:   or VecSetFromOptions().

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

 16:   Collective on MPI_Comm

 18:   Input Parameter:
 19: . comm - The communicator for the vector object

 21:   Output Parameter:
 22: . vec  - The vector object

 24:   Level: beginner

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

 37:   *vec = PETSC_NULL;
 38: #ifndef PETSC_USE_DYNAMIC_LIBRARIES
 39:   VecInitializePackage(PETSC_NULL);
 40: #endif

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

 49:   v->map          = PETSC_NULL;
 50:   v->data         = PETSC_NULL;
 51:   v->n            = -1;
 52:   v->N            = -1;
 53:   v->bs           = -1;
 54:   v->mapping      = PETSC_NULL;
 55:   v->bmapping     = PETSC_NULL;
 56:   v->array_gotten = PETSC_FALSE;
 57:   v->petscnative  = PETSC_FALSE;
 58:   v->esivec       = PETSC_NULL;

 60:   *vec = v;
 61:   return(0);
 62: }