xref: /petsc/src/snes/impls/fas/fasimpls.h (revision 421d9b3201840ccac4284b98ab49dc267dcc958d)
1*421d9b32SPeter Brune #ifndef _SNES_FASIMPLS
2*421d9b32SPeter Brune #define _SNES_FASIMPLS
3*421d9b32SPeter Brune 
4*421d9b32SPeter Brune #include <private/snesimpl.h>
5*421d9b32SPeter Brune 
6*421d9b32SPeter Brune typedef struct {
7*421d9b32SPeter Brune 
8*421d9b32SPeter Brune   /* flags for knowing the global place of this FAS object */
9*421d9b32SPeter Brune   PetscInt       level;                        /* level = 0 coarsest level */
10*421d9b32SPeter Brune   PetscInt       levels;                       /* if level + 1 = levels; we're the last turtle */
11*421d9b32SPeter Brune 
12*421d9b32SPeter Brune 
13*421d9b32SPeter Brune   /* smoothing objects */
14*421d9b32SPeter Brune   SNES           presmooth;                    /* the SNES for presmoothing */
15*421d9b32SPeter Brune   SNES           postsmooth;                   /* the SNES for postsmoothing */
16*421d9b32SPeter Brune 
17*421d9b32SPeter Brune   /* coarse grid correction objects */
18*421d9b32SPeter Brune   SNES           next;                         /* the SNES instance for the next level in the hierarchy */
19*421d9b32SPeter Brune   Mat            interpolate;                  /* interpolation */
20*421d9b32SPeter Brune   Mat            restrct;                      /* restriction operator */
21*421d9b32SPeter Brune   Vec            rscale;                       /* the pointwise scaling of the restriction operator */
22*421d9b32SPeter Brune 
23*421d9b32SPeter Brune   /* method specific */
24*421d9b32SPeter Brune   PetscInt cycles;
25*421d9b32SPeter Brune 
26*421d9b32SPeter Brune } SNES_FAS;
27*421d9b32SPeter Brune 
28*421d9b32SPeter Brune #endif
29