xref: /petsc/src/snes/interface/snesregi.c (revision fbf9dbe564678ed6eff1806adbc4c4f01b9743f4)
1 
2 #include <petsc/private/snesimpl.h> /*I  "petscsnes.h"  I*/
3 
4 PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONLS(SNES);
5 PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTR(SNES);
6 PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTRDC(SNES);
7 PETSC_EXTERN PetscErrorCode SNESCreate_NRichardson(SNES);
8 PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES);
9 PETSC_EXTERN PetscErrorCode SNESCreate_KSPTRANSPOSEONLY(SNES);
10 PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES);
11 PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES);
12 PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES);
13 PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES);
14 PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES);
15 PETSC_EXTERN PetscErrorCode SNESCreate_NGS(SNES);
16 PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES);
17 PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES);
18 PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES);
19 PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES);
20 PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES);
21 PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES);
22 PETSC_EXTERN PetscErrorCode SNESCreate_Composite(SNES);
23 PETSC_EXTERN PetscErrorCode SNESCreate_Patch(SNES);
24 
25 const char *SNESConvergedReasons_Shifted[] = {" ", "DIVERGED_TR_DELTA", "DIVERGED_JACOBIAN_DOMAIN", "DIVERGED_DTOL", "DIVERGED_LOCAL_MIN", "DIVERGED_INNER", "DIVERGED_LINE_SEARCH", "DIVERGED_MAX_IT", "DIVERGED_FNORM_NAN", "DIVERGED_LINEAR_SOLVE", "DIVERGED_FUNCTION_COUNT", "DIVERGED_FUNCTION_DOMAIN", "CONVERGED_ITERATING", " ", "CONVERGED_FNORM_ABS", "CONVERGED_FNORM_RELATIVE", "CONVERGED_SNORM_RELATIVE", "CONVERGED_ITS", " ", "SNESConvergedReason", "", NULL};
26 const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 12;
27 
28 const char              *SNESNormSchedules_Shifted[] = {"DEFAULT", "NONE", "ALWAYS", "INITIALONLY", "FINALONLY", "INITIALFINALONLY", "SNESNormSchedule", "SNES_NORM_", NULL};
29 const char *const *const SNESNormSchedules           = SNESNormSchedules_Shifted + 1;
30 
31 const char              *SNESFunctionTypes_Shifted[] = {"DEFAULT", "UNPRECONDITIONED", "PRECONDITIONED", "SNESFunctionType", "SNES_FUNCTION_", NULL};
32 const char *const *const SNESFunctionTypes           = SNESFunctionTypes_Shifted + 1;
33 
34 /*@C
35    SNESRegisterAll - Registers all of the nonlinear solver methods in the `SNES` package.
36 
37    Not Collective
38 
39    Level: advanced
40 
41 .seealso: `SNES`, `SNESRegisterDestroy()`
42 @*/
43 PetscErrorCode SNESRegisterAll(void)
44 {
45   PetscFunctionBegin;
46   if (SNESRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
47   SNESRegisterAllCalled = PETSC_TRUE;
48 
49   PetscCall(SNESRegister(SNESNEWTONLS, SNESCreate_NEWTONLS));
50   PetscCall(SNESRegister(SNESNEWTONTR, SNESCreate_NEWTONTR));
51   PetscCall(SNESRegister(SNESNEWTONTRDC, SNESCreate_NEWTONTRDC));
52   PetscCall(SNESRegister(SNESNRICHARDSON, SNESCreate_NRichardson));
53   PetscCall(SNESRegister(SNESKSPONLY, SNESCreate_KSPONLY));
54   PetscCall(SNESRegister(SNESKSPTRANSPOSEONLY, SNESCreate_KSPTRANSPOSEONLY));
55   PetscCall(SNESRegister(SNESVINEWTONRSLS, SNESCreate_VINEWTONRSLS));
56   PetscCall(SNESRegister(SNESVINEWTONSSLS, SNESCreate_VINEWTONSSLS));
57   PetscCall(SNESRegister(SNESNGMRES, SNESCreate_NGMRES));
58   PetscCall(SNESRegister(SNESQN, SNESCreate_QN));
59   PetscCall(SNESRegister(SNESSHELL, SNESCreate_Shell));
60   PetscCall(SNESRegister(SNESNGS, SNESCreate_NGS));
61   PetscCall(SNESRegister(SNESNCG, SNESCreate_NCG));
62   PetscCall(SNESRegister(SNESFAS, SNESCreate_FAS));
63   PetscCall(SNESRegister(SNESMS, SNESCreate_MS));
64   PetscCall(SNESRegister(SNESNASM, SNESCreate_NASM));
65   PetscCall(SNESRegister(SNESANDERSON, SNESCreate_Anderson));
66   PetscCall(SNESRegister(SNESASPIN, SNESCreate_ASPIN));
67   PetscCall(SNESRegister(SNESCOMPOSITE, SNESCreate_Composite));
68   PetscCall(SNESRegister(SNESPATCH, SNESCreate_Patch));
69 
70   PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSNESResidual, NULL, NULL));
71   PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorSNESResidualDrawLG, KSPMonitorSNESResidualDrawLGCreate, NULL));
72   PetscFunctionReturn(PETSC_SUCCESS);
73 }
74