Actual source code: vhyp.c

petsc-3.6.4 2016-04-12
Report Typos and Errors
  2: /*
  3:     Creates hypre ijvector from PETSc vector
  4: */

  6: #include <petsc/private/vecimpl.h>          /*I "petscvec.h" I*/
  7: EXTERN_C_BEGIN
  8: #include <HYPRE.h>
  9: #include <HYPRE_parcsr_ls.h>
 10: EXTERN_C_END

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

 19:   HYPRE_IJVectorCreate(PetscObjectComm((PetscObject)v),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: PETSC_EXTERN 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,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,NULL,array);
 52:   VecRestoreArray(v,&array);
 53:   return(0);
 54: }