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 "HYPRE_parcsr_ls.h"

 14: PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
 15: {

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

 28: PetscErrorCode VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
 29: {
 31:   PetscScalar    *array;

 34:   HYPRE_IJVectorInitialize(ij);
 35:   VecGetArray(v,&array);
 36:   HYPRE_IJVectorSetValues(ij,v->map.n,PETSC_NULL,array);
 37:   VecRestoreArray(v,&array);
 38:   HYPRE_IJVectorAssemble(ij);
 39:   return(0);
 40: }

 44: PetscErrorCode VecHYPRE_IJVectorCopyFrom(HYPRE_IJVector ij,Vec v)
 45: {
 47:   PetscScalar    *array;

 50:   VecGetArray(v,&array);
 51:   HYPRE_IJVectorGetValues(ij,v->map.n,PETSC_NULL,array);
 52:   VecRestoreArray(v,&array);
 53:   return(0);
 54: }