Actual source code: mgimpl.h

  1: /* $Id: mgimpl.h,v 1.14 2001/08/21 21:03:20 bsmith Exp $ */

  3: /*
  4:       Data structure used for Multigrid preconditioner.
  5: */
 8:  #include src/sles/pc/pcimpl.h
 9:  #include petscmg.h
 10:  #include petscsles.h

 12: typedef struct _MG* MG;

 14: /*
 15:      Structure for abstract multigrid solver. 

 17:      Level (0) is always the coarsest level and Level (levels-1) is the finest.
 18: */
 19: struct _MG
 20: {
 21:   MGType    am;                           /* Multiplicative, additive or full */
 22:   int       cycles;                       /* Number cycles to run */
 23:   int       level;                        /* level = 0 coarsest level */
 24:   int       levels;                       /* number of active levels used */
 25:   int       maxlevels;                    /* total number of levels allocated */
 26:   Vec       b;                            /* Right hand side */
 27:   Vec       x;                            /* Solution */
 28:   Vec       r;                            /* Residual */
 29:   int       (*residual)(Mat,Vec,Vec,Vec);
 30:   Mat       A;                            /* matrix used in forming residual*/
 31:   SLES      smoothd;                      /* pre smoother */
 32:   SLES      smoothu;                      /* post smoother */
 33:   Mat       interpolate;
 34:   Mat       restrct;                      /* restrict is a reserved word on the Cray!!!*/
 35:   int       default_smoothu;              /* number of smooths per level if not over-ridden */
 36:   int       default_smoothd;              /*  with calls to KSPSetTolerances() */
 37:   PetscReal rtol,atol,dtol,ttol;          /* tolerances for when running with PCApplyRichardson_MG */
 38:   int       eventsetup;                   /* if logging times for each level */
 39:   int       eventsolve;
 40: };


 43: #endif