Actual source code: vhyp.c

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

 5:  #include vecimpl.h
  7: #include "HYPRE.h"
  8: #include "IJ_mv.h"

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

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

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

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

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

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