Date: 2022-03-04T17:37:21+00:00

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: #if defined(PETSC_HAVE_DEVICE)
     45:   v->boundtocpu = PETSC_TRUE;
     46: #endif
     47:   PetscStrallocpy(PETSCRANDER48,&v->defaultrandtype);
     48:   *vec = v;
     49:   return(0);
     50: }