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 "HYPRE_parcsr_ls.h"
14: PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
15: {
19: HYPRE_IJVectorCreate(((PetscObject)v)->comm,v->map->rstart,v->map->rend-1,ij);
20: HYPRE_IJVectorSetObjectType(*ij,HYPRE_PARCSR);
21: HYPRE_IJVectorInitialize(*ij);
22: HYPRE_IJVectorAssemble(*ij);
23: return(0);
24: }
28: PetscErrorCode VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
29: {
31: PetscScalar *array;
34: HYPRE_IJVectorInitialize(ij);
35: VecGetArray(v,&array);
36: HYPRE_IJVectorSetValues(ij,v->map->n,PETSC_NULL,array);
37: VecRestoreArray(v,&array);
38: HYPRE_IJVectorAssemble(ij);
39: return(0);
40: }
44: PetscErrorCode VecHYPRE_IJVectorCopyFrom(HYPRE_IJVector ij,Vec v)
45: {
47: PetscScalar *array;
50: VecGetArray(v,&array);
51: HYPRE_IJVectorGetValues(ij,v->map->n,PETSC_NULL,array);
52: VecRestoreArray(v,&array);
53: return(0);
54: }