xref: /petsc/src/dm/impls/da/hypre/mhyp.h (revision 9dd11ecf0918283bb567d8b33a92f53ac4ea7840)
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