Actual source code: vhyp.c
1: /*$Id: bvec2.c,v 1.202 2001/09/12 03:26:24 bsmith Exp $*/
2: /*
3: Creates hypre ijvector from PETSc vector
4: */
6: #include src/vec/vecimpl.h
7: EXTERN_C_BEGIN
8: #include "HYPRE.h"
9: #include "IJ_mv.h"
10: EXTERN_C_END
12: int VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
13: {
14: int ierr;
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: int VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
25: {
26: int ierr;
27: PetscScalar *array;
30: HYPRE_IJVectorInitialize(ij);
31: VecGetArrayFast(v,&array);
32: HYPRE_IJVectorSetValues(ij,v->map->n,PETSC_NULL,array);
33: VecRestoreArrayFast(v,&array);
34: HYPRE_IJVectorAssemble(ij);
35: return(0);
36: }
38: int VecHYPRE_IJVectorCopyFrom(HYPRE_IJVector ij,Vec v)
39: {
40: int ierr;
41: PetscScalar *array;
44: VecGetArrayFast(v,&array);
45: HYPRE_IJVectorGetValues(ij,v->map->n,PETSC_NULL,array);
46: VecRestoreArrayFast(v,&array);
47: return(0);
48: }