Actual source code: vhyp.c

petsc-3.9.3 2018-07-02
Report Typos and Errors

  2: /*
  3:     Creates hypre ijvector from PETSc vector
  4: */

  6:  #include <petsc/private/vecimpl.h>
  7:  #include <../src/vec/vec/impls/hypre/vhyp.h>
  8: #include <HYPRE.h>

 10: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
 11: {

 15:   HYPRE_IJVectorCreate(PetscObjectComm((PetscObject)v),v->map->rstart,v->map->rend-1,ij);
 16:   HYPRE_IJVectorSetObjectType(*ij,HYPRE_PARCSR);
 17:   HYPRE_IJVectorInitialize(*ij);
 18:   HYPRE_IJVectorAssemble(*ij);
 19:   return(0);
 20: }

 22: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
 23: {
 25:   PetscScalar    *array;

 28:   HYPRE_IJVectorInitialize(ij);
 29:   VecGetArray(v,&array);
 30:   HYPRE_IJVectorSetValues(ij,v->map->n,NULL,array);
 31:   VecRestoreArray(v,&array);
 32:   HYPRE_IJVectorAssemble(ij);
 33:   return(0);
 34: }

 36: PetscErrorCode VecHYPRE_IJVectorCopyFrom(HYPRE_IJVector ij,Vec v)
 37: {
 39:   PetscScalar    *array;

 42:   VecGetArray(v,&array);
 43:   HYPRE_IJVectorGetValues(ij,v->map->n,NULL,array);
 44:   VecRestoreArray(v,&array);
 45:   return(0);
 46: }