Actual source code: vhyp.h

      1: #pragma once

      3: #include <petsc/private/petschypre.h>
      4: #include <petscistypes.h>
      5: #include <petscvec.h>
      6: #include <HYPRE_IJ_mv.h>
      7: #include <_hypre_IJ_mv.h>

      9: struct VecHYPRE_IJVector_ {
     10:   HYPRE_IJVector ij;
     11:   /* Support for push/pop of PETSc's Vec memory into a ParVector */
     12:   Vec            pvec;
     13:   HYPRE_Complex *hv;
     14:   PetscErrorCode (*restore)(Vec, PetscScalar **);
     15: };
     16: typedef struct VecHYPRE_IJVector_ *VecHYPRE_IJVector;

     18: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJVectorCreate(PetscLayout, VecHYPRE_IJVector *);
     19: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJVectorDestroy(VecHYPRE_IJVector *);
     20: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJVectorCopy(Vec, VecHYPRE_IJVector);
     21: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJVectorPushVecRead(VecHYPRE_IJVector, Vec);
     22: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJVectorPushVecWrite(VecHYPRE_IJVector, Vec);
     23: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJVectorPushVec(VecHYPRE_IJVector, Vec);
     24: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJVectorPopVec(VecHYPRE_IJVector);
     25: PETSC_SINGLE_LIBRARY_INTERN PetscErrorCode VecHYPRE_IJBindToCPU(VecHYPRE_IJVector, PetscBool);