1: #ifndef _VHYP_H 2: #define _VHYP_H 4: #include <petsc/private/petschypre.h> 5: #include <HYPRE_IJ_mv.h> 6: #include <_hypre_IJ_mv.h> 8: struct VecHYPRE_IJVector_ { 9: HYPRE_IJVector ij; 10: /* Support for push/pop of PETSc's Vec memory into a ParVector */ 11: Vec pvec; 12: HYPRE_Complex *hv; 13: PetscErrorCode (*restore)(Vec, PetscScalar **); 14: }; 15: typedef struct VecHYPRE_IJVector_ *VecHYPRE_IJVector; 17: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorCreate(PetscLayout, VecHYPRE_IJVector *); 18: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorDestroy(VecHYPRE_IJVector *); 19: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorCopy(Vec, VecHYPRE_IJVector); 20: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorPushVecRead(VecHYPRE_IJVector, Vec); 21: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorPushVecWrite(VecHYPRE_IJVector, Vec); 22: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorPushVec(VecHYPRE_IJVector, Vec); 23: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorPopVec(VecHYPRE_IJVector); 24: PETSC_EXTERN PetscErrorCode VecHYPRE_IJBindToCPU(VecHYPRE_IJVector, PetscBool); 26: #endif