Actual source code: mhyp.h

  1: #pragma once

  3: #include <petscdmda.h>
  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>

 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;

 20:   PetscBool needsinitialization;

 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;

 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;

 37:   int ss_object_type;
 38:   int nvars;
 39:   int dofs_order;

 41:   PetscBool needsinitialization;

 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;