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