Actual source code: vhyp.c

  1: #define PETSCVEC_DLL
  2: /*
  3:     Creates hypre ijvector from PETSc vector
  4: */

 6:  #include private/vecimpl.h
  8: #include "HYPRE.h"
  9: #include "IJ_mv.h"

 12: PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
 13: {

 17:   HYPRE_IJVectorCreate(v->comm,v->map.rstart,v->map.rend-1,ij);
 18:   HYPRE_IJVectorSetObjectType(*ij,HYPRE_PARCSR);
 19:   HYPRE_IJVectorInitialize(*ij);
 20:   HYPRE_IJVectorAssemble(*ij);
 21:   return(0);
 22: }

 24: PetscErrorCode VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
 25: {
 27:   PetscScalar    *array;

 30:   HYPRE_IJVectorInitialize(ij);
 31:   VecGetArray(v,&array);
 32:   HYPRE_IJVectorSetValues(ij,v->map.n,PETSC_NULL,array);
 33:   VecRestoreArray(v,&array);
 34:   HYPRE_IJVectorAssemble(ij);
 35:   return(0);
 36: }

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

 44:   VecGetArray(v,&array);
 45:   HYPRE_IJVectorGetValues(ij,v->map.n,PETSC_NULL,array);
 46:   VecRestoreArray(v,&array);
 47:   return(0);
 48: }