Date: 2021-03-03T22:25:54+00:00

Actual source code: vhyp.c
petsc-3.14.5 2021-03-03
Report Typos and Errors

      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,(HYPRE_Complex*)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,(HYPRE_Complex*)array);
     44:   VecRestoreArray(v,&array);
     45:   return(0);
     46: }