Actual source code: vhyp.c
petsc-3.7.2 2016-06-05
2: /*
3: Creates hypre ijvector from PETSc vector
4: */
6: #include <petsc/private/vecimpl.h> /*I "petscvec.h" I*/
7: EXTERN_C_BEGIN
8: #include <HYPRE.h>
9: #include <HYPRE_parcsr_ls.h>
10: EXTERN_C_END
14: PETSC_EXTERN PetscErrorCode VecHYPRE_IJVectorCreate(Vec v,HYPRE_IJVector *ij)
15: {
19: HYPRE_IJVectorCreate(PetscObjectComm((PetscObject)v),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: PETSC_EXTERN 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,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,NULL,array);
52: VecRestoreArray(v,&array);
53: return(0);
54: }