Actual source code: vhyp.c
petsc-3.8.3 2017-12-09
2: /*
3: Creates hypre ijvector from PETSc vector
4: */
6: #include <petsc/private/vecimpl.h>
7: #include <../src/vec/vec/impls/hypre/vhyp.h>
8: #include <HYPRE.h>
10: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
11: {
15: HYPRE_IJVectorCreate(PetscObjectComm((PetscObject)v),v->map->rstart,v->map->rend-1,ij);
16: HYPRE_IJVectorSetObjectType(*ij,HYPRE_PARCSR);
17: HYPRE_IJVectorInitialize(*ij);
18: HYPRE_IJVectorAssemble(*ij);
19: return(0);
20: }
22: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorCopy(Vec v,HYPRE_IJVector ij)
23: {
25: PetscScalar *array;
28: HYPRE_IJVectorInitialize(ij);
29: VecGetArray(v,&array);
30: HYPRE_IJVectorSetValues(ij,v->map->n,NULL,array);
31: VecRestoreArray(v,&array);
32: HYPRE_IJVectorAssemble(ij);
33: return(0);
34: }
36: PetscErrorCode VecHYPRE_IJVectorCopyFrom(HYPRE_IJVector ij,Vec v)
37: {
39: PetscScalar *array;
42: VecGetArray(v,&array);
43: HYPRE_IJVectorGetValues(ij,v->map->n,NULL,array);
44: VecRestoreArray(v,&array);
45: return(0);
46: }