xref: /petsc/src/snes/interface/snesregi.c (revision db7814771ca77b190574494e87b584e981451db0)
1eaa2832dSBarry Smith 
2af0996ceSBarry Smith #include <petsc/private/snesimpl.h>     /*I  "petscsnes.h"  I*/
3fb2e594dSBarry Smith 
48cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONLS(SNES);
58cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTR(SNES);
641ba4c6cSHeeho Park PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTRDC(SNES);
78cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NRichardson(SNES);
88cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES);
91ef27442SStefano Zampini PETSC_EXTERN PetscErrorCode SNESCreate_KSPTRANSPOSEONLY(SNES);
108cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES);
118cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES);
128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES);
138cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES);
148cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES);
15be95d8f1SBarry Smith PETSC_EXTERN PetscErrorCode SNESCreate_NGS(SNES);
168cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES);
178cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES);
188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES);
198cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES);
208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES);
218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES);
22eed5f15bSPeter Brune PETSC_EXTERN PetscErrorCode SNESCreate_Composite(SNES);
23561742edSMatthew G. Knepley PETSC_EXTERN PetscErrorCode SNESCreate_Patch(SNES);
24eaa2832dSBarry Smith 
251c6b2ff8SBarry Smith const char *SNESConvergedReasons_Shifted[] = {" ","DIVERGED_TR_DELTA","DIVERGED_JACOBIAN_DOMAIN","DIVERGED_DTOL","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
2664075487SBarry Smith                                               "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
279dcbbd2bSBarry Smith                                               "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
289e5d0892SLisandro Dalcin                                               "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","SNESConvergedReason","",NULL};
291c6b2ff8SBarry Smith const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 12;
309dcbbd2bSBarry Smith 
319e5d0892SLisandro Dalcin const char *SNESNormSchedules_Shifted[]    = {"DEFAULT","NONE","ALWAYS","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormSchedule","SNES_NORM_",NULL};
32365a6726SPeter Brune const char *const *const SNESNormSchedules = SNESNormSchedules_Shifted + 1;
33fdacfa88SPeter Brune 
349e5d0892SLisandro Dalcin const char *SNESFunctionTypes_Shifted[]    = {"DEFAULT","UNPRECONDITIONED","PRECONDITIONED","SNESFunctionType","SNES_FUNCTION_",NULL};
3547073ea2SPeter Brune const char *const *const SNESFunctionTypes = SNESFunctionTypes_Shifted + 1;
3647073ea2SPeter Brune 
3783f0b094SBarry Smith /*@C
3882bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
39eaa2832dSBarry Smith 
40fee21e36SBarry Smith    Not Collective
41fee21e36SBarry Smith 
4236851e7fSLois Curfman McInnes    Level: advanced
4336851e7fSLois Curfman McInnes 
44*db781477SPatrick Sanan .seealso: `SNESRegisterDestroy()`
45eaa2832dSBarry Smith @*/
46607a6623SBarry Smith PetscErrorCode  SNESRegisterAll(void)
47eaa2832dSBarry Smith {
483a40ed3dSBarry Smith   PetscFunctionBegin;
490f51fdf8SToby Isaac   if (SNESRegisterAllCalled) PetscFunctionReturn(0);
504c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
5182bf6240SBarry Smith 
529566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNEWTONLS,         SNESCreate_NEWTONLS));
539566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNEWTONTR,         SNESCreate_NEWTONTR));
549566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNEWTONTRDC,       SNESCreate_NEWTONTRDC));
559566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNRICHARDSON,      SNESCreate_NRichardson));
569566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESKSPONLY,          SNESCreate_KSPONLY));
579566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESKSPTRANSPOSEONLY, SNESCreate_KSPTRANSPOSEONLY));
589566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESVINEWTONRSLS,     SNESCreate_VINEWTONRSLS));
599566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESVINEWTONSSLS,     SNESCreate_VINEWTONSSLS));
609566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNGMRES,           SNESCreate_NGMRES));
619566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESQN,               SNESCreate_QN));
629566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESSHELL,            SNESCreate_Shell));
639566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNGS,              SNESCreate_NGS));
649566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNCG,              SNESCreate_NCG));
659566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESFAS,              SNESCreate_FAS));
669566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESMS,               SNESCreate_MS));
679566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESNASM,             SNESCreate_NASM));
689566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESANDERSON,         SNESCreate_Anderson));
699566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESASPIN,            SNESCreate_ASPIN));
709566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESCOMPOSITE,        SNESCreate_Composite));
719566063dSJacob Faibussowitsch   PetscCall(SNESRegister(SNESPATCH,            SNESCreate_Patch));
72798534f6SMatthew G. Knepley 
739566063dSJacob Faibussowitsch   PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSNESResidual,       NULL, NULL));
749566063dSJacob Faibussowitsch   PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERDRAW,  PETSC_VIEWER_DRAW_LG, KSPMonitorSNESResidualDrawLG, KSPMonitorSNESResidualDrawLGCreate, NULL));
753a40ed3dSBarry Smith   PetscFunctionReturn(0);
76eaa2832dSBarry Smith }
77