Actual source code: vhyp.c
petsc-3.7.1 2016-05-15
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: }