Actual source code: vhyp.c
1: /*
2: Creates hypre ijvector from PETSc vector
3: */
5: #include vecimpl.h
7: #include "HYPRE.h"
8: #include "IJ_mv.h"
11: PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
12: {
16: HYPRE_IJVectorCreate(v->comm,v->map->rstart,v->map->rend-1,ij);
17: HYPRE_IJVectorSetObjectType(*ij,HYPRE_PARCSR);
18: HYPRE_IJVectorInitialize(*ij);
19: HYPRE_IJVectorAssemble(*ij);
20: return(0);
21: }
23: PetscErrorCode VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
24: {
26: PetscScalar *array;
29: HYPRE_IJVectorInitialize(ij);
30: VecGetArray(v,&array);
31: HYPRE_IJVectorSetValues(ij,v->map->n,PETSC_NULL,array);
32: VecRestoreArray(v,&array);
33: HYPRE_IJVectorAssemble(ij);
34: return(0);
35: }
37: PetscErrorCode VecHYPRE_IJVectorCopyFrom(HYPRE_IJVector ij,Vec v)
38: {
40: PetscScalar *array;
43: VecGetArray(v,&array);
44: HYPRE_IJVectorGetValues(ij,v->map->n,PETSC_NULL,array);
45: VecRestoreArray(v,&array);
46: return(0);
47: }