[11896] | 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
|
---|