Actual source code: pcasmimpl.h

  1: #ifndef __ASM_H

  4: #include <petscdm.h>
  5: #include <petsc/private/pcimpl.h>
  6: typedef struct {
  7:   PetscInt        n, n_local, n_local_true;
  8:   PetscInt        overlap;       /* overlap requested by user */
  9:   KSP            *ksp;           /* linear solvers for each block */
 10:   VecScatter      restriction;   /* mapping from global to overlapping (process) subdomain*/
 11:   VecScatter     *lrestriction;  /* mapping from subregion to overlapping (process) subdomain */
 12:   VecScatter     *lprolongation; /* mapping from non-overlapping subregion to overlapping (process) subdomain; used for restrict additive version of algorithms */
 13:   Vec             lx, ly;        /* work vectors */
 14:   Vec            *x, *y;         /* work vectors */
 15:   IS              lis;           /* index set that defines each overlapping multiplicative (process) subdomain */
 16:   IS             *is;            /* index set that defines each overlapping subdomain */
 17:   IS             *is_local;      /* index set that defines each non-overlapping subdomain, may be NULL */
 18:   Mat            *mat, *pmat;    /* mat is not currently used */
 19:   PCASMType       type;          /* use reduced interpolation, restriction or both */
 20:   PetscBool       type_set;      /* if user set this value (so won't change it for symmetric problems) */
 21:   PetscBool       sort_indices;  /* flag to sort subdomain indices */
 22:   PetscBool       dm_subdomains; /* whether DM is allowed to define subdomains */
 23:   PCCompositeType loctype;       /* the type of composition for local solves */
 24:   MatType         sub_mat_type;  /* the type of Mat used for subdomain solves (can be MATSAME or NULL) */
 25:   /* For multiplicative solve */
 26:   Mat *lmats; /* submatrices for overlapping multiplicative (process) subdomain */
 27: } PC_ASM;
 28: #endif