xref: /petsc/src/snes/interface/snesregi.c (revision bd89dbf26d8a5efecb980364933175da61864cd7)
1af0996ceSBarry Smith #include <petsc/private/snesimpl.h> /*I  "petscsnes.h"  I*/
2fb2e594dSBarry Smith 
38cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONLS(SNES);
48cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTR(SNES);
541ba4c6cSHeeho Park PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTRDC(SNES);
68cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NRichardson(SNES);
78cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES);
81ef27442SStefano Zampini PETSC_EXTERN PetscErrorCode SNESCreate_KSPTRANSPOSEONLY(SNES);
98cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES);
108cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES);
118cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES);
128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES);
138cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES);
14be95d8f1SBarry Smith PETSC_EXTERN PetscErrorCode SNESCreate_NGS(SNES);
158cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES);
168cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES);
178cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES);
188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES);
198cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES);
208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES);
21eed5f15bSPeter Brune PETSC_EXTERN PetscErrorCode SNESCreate_Composite(SNES);
22561742edSMatthew G. Knepley PETSC_EXTERN PetscErrorCode SNESCreate_Patch(SNES);
2397276fddSZach Atkins PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONAL(SNES);
24eaa2832dSBarry Smith 
25*76c63389SBarry Smith const char *SNESConvergedReasons_Shifted[] = {" ", "DIVERGED_OBJECTIVE_NANORINF", "DIVERGED_OBJECTIVE_DOMAIN", "DIVERGED_USER", "DIVERGED_TR_DELTA", "DIVERGED_JACOBIAN_DOMAIN", "DIVERGED_DTOL", "DIVERGED_LOCAL_MIN", "DIVERGED_INNER", "DIVERGED_LINE_SEARCH", "DIVERGED_MAX_IT", "DIVERGED_FUNCTION_NANORINF", "DIVERGED_LINEAR_SOLVE", "DIVERGED_FUNCTION_COUNT", "DIVERGED_FUNCTION_DOMAIN", "CONVERGED_ITERATING", " ", "CONVERGED_FNORM_ABS", "CONVERGED_FNORM_RELATIVE", "CONVERGED_SNORM_RELATIVE", "CONVERGED_ITS", "CONVERGED_BREAKOUT_INNER_ITER", "CONVERGED_USER", " ", "SNESConvergedReason", "", NULL};
26*76c63389SBarry Smith const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 15;
279dcbbd2bSBarry Smith 
289e5d0892SLisandro Dalcin const char              *SNESNormSchedules_Shifted[] = {"DEFAULT", "NONE", "ALWAYS", "INITIALONLY", "FINALONLY", "INITIALFINALONLY", "SNESNormSchedule", "SNES_NORM_", NULL};
29365a6726SPeter Brune const char *const *const SNESNormSchedules           = SNESNormSchedules_Shifted + 1;
30fdacfa88SPeter Brune 
319e5d0892SLisandro Dalcin const char              *SNESFunctionTypes_Shifted[] = {"DEFAULT", "UNPRECONDITIONED", "PRECONDITIONED", "SNESFunctionType", "SNES_FUNCTION_", NULL};
3247073ea2SPeter Brune const char *const *const SNESFunctionTypes           = SNESFunctionTypes_Shifted + 1;
3347073ea2SPeter Brune 
3483f0b094SBarry Smith /*@C
35f6dfbefdSBarry Smith   SNESRegisterAll - Registers all of the nonlinear solver methods in the `SNES` package.
36eaa2832dSBarry Smith 
37fee21e36SBarry Smith   Not Collective
38fee21e36SBarry Smith 
3936851e7fSLois Curfman McInnes   Level: advanced
4036851e7fSLois Curfman McInnes 
41420bcc1bSBarry Smith .seealso: [](ch_snes), `SNES`, `SNESRegisterDestroy()`
42eaa2832dSBarry Smith @*/
SNESRegisterAll(void)43d71ae5a4SJacob Faibussowitsch PetscErrorCode SNESRegisterAll(void)
44d71ae5a4SJacob Faibussowitsch {
453a40ed3dSBarry Smith   PetscFunctionBegin;
463ba16761SJacob Faibussowitsch   if (SNESRegisterAllCalled) PetscFunctionReturn(PETSC_SUCCESS);
474c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
4882bf6240SBarry Smith 
499566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNEWTONLS, SNESCreate_NEWTONLS));
509566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNEWTONTR, SNESCreate_NEWTONTR));
519566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNEWTONTRDC, SNESCreate_NEWTONTRDC));
529566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNRICHARDSON, SNESCreate_NRichardson));
539566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESKSPONLY, SNESCreate_KSPONLY));
549566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESKSPTRANSPOSEONLY, SNESCreate_KSPTRANSPOSEONLY));
559566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESVINEWTONRSLS, SNESCreate_VINEWTONRSLS));
569566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESVINEWTONSSLS, SNESCreate_VINEWTONSSLS));
579566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNGMRES, SNESCreate_NGMRES));
589566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESQN, SNESCreate_QN));
599566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESSHELL, SNESCreate_Shell));
609566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNGS, SNESCreate_NGS));
619566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNCG, SNESCreate_NCG));
629566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESFAS, SNESCreate_FAS));
639566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESMS, SNESCreate_MS));
649566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNASM, SNESCreate_NASM));
659566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESANDERSON, SNESCreate_Anderson));
669566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESASPIN, SNESCreate_ASPIN));
679566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESCOMPOSITE, SNESCreate_Composite));
689566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESPATCH, SNESCreate_Patch));
6997276fddSZach Atkins   PetscCall(SNESRegister(SNESNEWTONAL, SNESCreate_NEWTONAL));
70798534f6SMatthew G. Knepley 
719566063dSJacob Faibussowitsch   PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSNESResidual, NULL, NULL));
729566063dSJacob Faibussowitsch   PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorSNESResidualDrawLG, KSPMonitorSNESResidualDrawLGCreate, NULL));
733ba16761SJacob Faibussowitsch   PetscFunctionReturn(PETSC_SUCCESS);
74eaa2832dSBarry Smith }
75