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