Actual source code: mgimpl.h

  1: /*
  2:       Data structure used for Multigrid preconditioner.
  3: */
 6:  #include private/pcimpl.h
 7:  #include petscmg.h
 8:  #include petscksp.h


 11: /*
 12:      Structure for abstract multigrid solver. 

 14:      Level (0) is always the coarsest level and Level (levels-1) is the finest.
 15: */
 16: typedef struct
 17: {
 18:   PCMGType   am;                           /* Multiplicative, additive or full */
 19:   PetscInt   cycles;                       /* Type of cycle to run: 1 V 2 W */
 20:   PetscInt   cyclesperpcapply;             /* Number of cycles to use in each PCApply(), multiplicative only*/
 21:   PetscInt   level;                        /* level = 0 coarsest level */
 22:   PetscInt   levels;                       /* number of active levels used */
 23:   PetscInt   maxlevels;                    /* total number of levels allocated */
 24:   PetscTruth galerkin;                     /* use Galerkin process to compute coarser matrices */
 25:   PetscTruth galerkinused;                 /* destroy the Mat created by the Galerkin process */
 26:   Vec        b;                            /* Right hand side */
 27:   Vec        x;                            /* Solution */
 28:   Vec        r;                            /* Residual */
 29:   PetscErrorCode (*residual)(Mat,Vec,Vec,Vec);
 30:   Mat        A;                            /* matrix used in forming residual*/
 31:   KSP        smoothd;                      /* pre smoother */
 32:   KSP        smoothu;                      /* post smoother */
 33:   Mat        interpolate;
 34:   Mat        restrct;                      /* restrict is a reserved word on the Cray!!!*/
 35:   PetscInt   default_smoothu;              /* number of smooths per level if not over-ridden */
 36:   PetscInt   default_smoothd;              /*  with calls to KSPSetTolerances() */
 37:   PetscReal  rtol,abstol,dtol,ttol;        /* tolerances for when running with PCApplyRichardson_MG */
 38:   PetscEvent eventsetup;                   /* if logging times for each level */
 39:   PetscEvent eventsolve;
 40: }  PC_MG;


 43: #endif