1 | #if !(defined __PETSCSNESFAS_H)
|
---|
2 | #define __PETSCSNESFAS_H
|
---|
3 | #include "petscsnes.h"
|
---|
4 |
|
---|
5 |
|
---|
6 | /*E
|
---|
7 | SNESFASType - Determines the type of multigrid method that is run.
|
---|
8 |
|
---|
9 | Level: beginner
|
---|
10 |
|
---|
11 | Values:
|
---|
12 | + SNES_FAS_MULTIPLICATIVE (default) - traditional V or W cycle as determined by SNESFASSetCycles()
|
---|
13 | - SNES_FAS_ADDITIVE - the additive multigrid preconditioner where all levels are
|
---|
14 |
|
---|
15 | .seealso: PCMGSetType(), PCMGType
|
---|
16 |
|
---|
17 | E*/
|
---|
18 | typedef enum { SNES_FAS_MULTIPLICATIVE, SNES_FAS_ADDITIVE } SNESFASType;
|
---|
19 | extern const char * SNESFASTypes[];
|
---|
20 |
|
---|
21 | /* called on the finest level FAS instance*/
|
---|
22 | extern PetscErrorCode SNESFASSetType(SNES, SNESFASType);
|
---|
23 | extern PetscErrorCode SNESFASGetType(SNES, SNESFASType*);
|
---|
24 | extern PetscErrorCode SNESFASSetLevels(SNES, PetscInt, MPI_Comm *);
|
---|
25 | extern PetscErrorCode SNESFASGetLevels(SNES, PetscInt *);
|
---|
26 | extern PetscErrorCode SNESFASGetCycleSNES(SNES, PetscInt, SNES*);
|
---|
27 | extern PetscErrorCode SNESFASSetNumberSmoothUp(SNES, PetscInt);
|
---|
28 | extern PetscErrorCode SNESFASSetNumberSmoothDown(SNES, PetscInt);
|
---|
29 | extern PetscErrorCode SNESFASSetCycles(SNES, PetscInt);
|
---|
30 | extern PetscErrorCode SNESFASSetMonitor(SNES, PetscBool);
|
---|
31 |
|
---|
32 |
|
---|
33 | extern PetscErrorCode SNESFASSetGalerkin(SNES, PetscBool);
|
---|
34 | extern PetscErrorCode SNESFASGetGalerkin(SNES, PetscBool*);
|
---|
35 |
|
---|
36 | /* called on any level -- "Cycle" FAS instance */
|
---|
37 | extern PetscErrorCode SNESFASCycleGetSmoother(SNES, SNES*);
|
---|
38 | extern PetscErrorCode SNESFASCycleGetSmootherUp(SNES, SNES*);
|
---|
39 | extern PetscErrorCode SNESFASCycleGetSmootherDown(SNES, SNES*);
|
---|
40 | extern PetscErrorCode SNESFASCycleGetCorrection(SNES, SNES*);
|
---|
41 | extern PetscErrorCode SNESFASCycleGetInterpolation(SNES, Mat*);
|
---|
42 | extern PetscErrorCode SNESFASCycleGetRestriction(SNES, Mat*);
|
---|
43 | extern PetscErrorCode SNESFASCycleGetInjection(SNES, Mat*);
|
---|
44 | extern PetscErrorCode SNESFASCycleGetRScale(SNES, Vec*);
|
---|
45 | extern PetscErrorCode SNESFASCycleSetCycles(SNES, PetscInt);
|
---|
46 | extern PetscErrorCode SNESFASCycleIsFine(SNES, PetscBool*);
|
---|
47 |
|
---|
48 | /* called on the (outer) finest level FAS to set/get parameters on any level instance */
|
---|
49 | extern PetscErrorCode SNESFASSetInterpolation(SNES, PetscInt, Mat);
|
---|
50 | extern PetscErrorCode SNESFASGetInterpolation(SNES, PetscInt, Mat*);
|
---|
51 | extern PetscErrorCode SNESFASSetRestriction(SNES, PetscInt, Mat);
|
---|
52 | extern PetscErrorCode SNESFASGetRestriction(SNES, PetscInt, Mat*);
|
---|
53 | extern PetscErrorCode SNESFASSetInjection(SNES, PetscInt, Mat);
|
---|
54 | extern PetscErrorCode SNESFASGetInjection(SNES, PetscInt, Mat*);
|
---|
55 | extern PetscErrorCode SNESFASSetRScale(SNES, PetscInt, Vec);
|
---|
56 | extern PetscErrorCode SNESFASGetRScale(SNES, PetscInt, Vec*);
|
---|
57 |
|
---|
58 | extern PetscErrorCode SNESFASGetSmoother(SNES, PetscInt, SNES*);
|
---|
59 | extern PetscErrorCode SNESFASGetSmootherUp(SNES, PetscInt, SNES*);
|
---|
60 | extern PetscErrorCode SNESFASGetSmootherDown(SNES, PetscInt, SNES*);
|
---|
61 | extern PetscErrorCode SNESFASGetCoarseSolve(SNES, SNES*);
|
---|
62 |
|
---|
63 | extern PetscErrorCode SNESFASCreateCoarseVec(SNES,Vec*);
|
---|
64 | extern PetscErrorCode SNESFASRestrict(SNES,Vec,Vec);
|
---|
65 |
|
---|
66 | #endif
|
---|