1 2 #if !defined(_MHYP_H) 3 #define _MHYP_H 4 5 #include <petscdmda.h> /*I "petscdmda.h" I*/ 6 #include <HYPRE_struct_mv.h> 7 #include <HYPRE_struct_ls.h> 8 #include <_hypre_struct_mv.h> 9 #include <HYPRE_sstruct_mv.h> 10 #include <HYPRE_sstruct_ls.h> 11 #include <_hypre_sstruct_mv.h> 12 13 typedef struct { 14 MPI_Comm hcomm; 15 DM da; 16 HYPRE_StructGrid hgrid; 17 HYPRE_StructStencil hstencil; 18 HYPRE_StructMatrix hmat; 19 HYPRE_StructVector hb,hx; 20 hypre_Box hbox; 21 22 PetscBool needsinitialization; 23 24 /* variables that are stored here so they need not be reloaded for each MatSetValuesLocal() or MatZeroRowsLocal() call */ 25 PetscInt *gindices,rstart,gnx,gnxgny,xs,ys,zs,nx,ny,nxny; 26 } Mat_HYPREStruct; 27 28 typedef struct { 29 MPI_Comm hcomm; 30 DM da; 31 HYPRE_SStructGrid ss_grid; 32 HYPRE_SStructGraph ss_graph; 33 HYPRE_SStructStencil ss_stencil; 34 HYPRE_SStructMatrix ss_mat; 35 HYPRE_SStructVector ss_b, ss_x; 36 hypre_Box hbox; 37 38 int ss_object_type; 39 int nvars; 40 int dofs_order; 41 42 PetscBool needsinitialization; 43 44 /* variables that are stored here so they need not be reloaded for each MatSetValuesLocal() or MatZeroRowsLocal() call */ 45 PetscInt *gindices,rstart,gnx,gnxgny,gnxgnygnz,xs,ys,zs,nx,ny,nz,nxny,nxnynz; 46 } Mat_HYPRESStruct; 47 48 49 extern PetscErrorCode MatHYPRE_IJMatrixCreate(Mat,HYPRE_IJMatrix*); 50 extern PetscErrorCode MatHYPRE_IJMatrixCopy(Mat,HYPRE_IJMatrix); 51 extern PetscErrorCode MatHYPRE_IJMatrixFastCopy(Mat,HYPRE_IJMatrix); 52 extern PetscErrorCode VecHYPRE_IJVectorCreate(Vec,HYPRE_IJVector*); 53 54 55 #endif 56