xref: /petsc/src/snes/impls/fas/fasimpls.h (revision ee78dd50cdc33c880fef478d5bb8909567b784bd)
1421d9b32SPeter Brune #ifndef _SNES_FASIMPLS
2421d9b32SPeter Brune #define _SNES_FASIMPLS
3421d9b32SPeter Brune 
4421d9b32SPeter Brune #include <private/snesimpl.h>
5*ee78dd50SPeter Brune #include <private/dmimpl.h>
6421d9b32SPeter Brune 
7421d9b32SPeter Brune typedef struct {
8421d9b32SPeter Brune 
9421d9b32SPeter Brune   /* flags for knowing the global place of this FAS object */
10421d9b32SPeter Brune   PetscInt       level;                        /* level = 0 coarsest level */
11421d9b32SPeter Brune   PetscInt       levels;                       /* if level + 1 = levels; we're the last turtle */
12421d9b32SPeter Brune 
13421d9b32SPeter Brune 
14421d9b32SPeter Brune   /* smoothing objects */
15*ee78dd50SPeter Brune   SNES           upsmooth;                     /* the SNES for presmoothing */
16*ee78dd50SPeter Brune   SNES           downsmooth;                   /* the SNES for postsmoothing */
17421d9b32SPeter Brune 
18421d9b32SPeter Brune   /* coarse grid correction objects */
19421d9b32SPeter Brune   SNES           next;                         /* the SNES instance for the next level in the hierarchy */
20421d9b32SPeter Brune   Mat            interpolate;                  /* interpolation */
21421d9b32SPeter Brune   Mat            restrct;                      /* restriction operator */
22421d9b32SPeter Brune   Vec            rscale;                       /* the pointwise scaling of the restriction operator */
23421d9b32SPeter Brune 
24*ee78dd50SPeter Brune   /* method parameters */
25*ee78dd50SPeter Brune   PetscInt       n_cycles;                     /* number of cycles on this level */
26*ee78dd50SPeter Brune   PetscInt       max_up_it;                    /* number of pre-smooths */
27*ee78dd50SPeter Brune   PetscInt       max_down_it;                  /* number of post-smooth cycles */
28421d9b32SPeter Brune 
29421d9b32SPeter Brune } SNES_FAS;
30421d9b32SPeter Brune 
31421d9b32SPeter Brune #endif
32