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);