Actual source code: vhyp.c

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

     6:  #include 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: }