Actual source code: vhyp.c

  1: /*$Id: bvec2.c,v 1.202 2001/09/12 03:26:24 bsmith Exp $*/
  2: /*
  3:     Creates hypre ijvector from PETSc vector
  4: */

 6:  #include src/vec/vecimpl.h
  7: EXTERN_C_BEGIN
  8: #include "HYPRE.h"
  9: #include "IJ_mv.h"
 10: EXTERN_C_END

 12: int VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
 13: {
 14:   int         ierr;

 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: int VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
 25: {
 26:   int         ierr;
 27:   PetscScalar *array;

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

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

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