Actual source code: vhyp.c
1: #define PETSCVEC_DLL
2: /*
3: Creates hypre ijvector from PETSc vector
4: */
6: #include private/vecimpl.h
8: #include "HYPRE.h"
9: #include "IJ_mv.h"
12: PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
13: {
17: HYPRE_IJVectorCreate(v->comm,v->map.rstart,v->map.rend-1,ij);
18: HYPRE_IJVectorSetObjectType(*ij,HYPRE_PARCSR);
19: HYPRE_IJVectorInitialize(*ij);
20: HYPRE_IJVectorAssemble(*ij);
21: return(0);
22: }
24: PetscErrorCode VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
25: {
27: PetscScalar *array;
30: HYPRE_IJVectorInitialize(ij);
31: VecGetArray(v,&array);
32: HYPRE_IJVectorSetValues(ij,v->map.n,PETSC_NULL,array);
33: VecRestoreArray(v,&array);
34: HYPRE_IJVectorAssemble(ij);
35: return(0);
36: }
38: PetscErrorCode VecHYPRE_IJVectorCopyFrom(HYPRE_IJVector ij,Vec v)
39: {
41: PetscScalar *array;
44: VecGetArray(v,&array);
45: HYPRE_IJVectorGetValues(ij,v->map.n,PETSC_NULL,array);
46: VecRestoreArray(v,&array);
47: return(0);
48: }