xref: /petsc/src/snes/interface/snesregi.c (revision 1c6b2ff8df46f8a4f5ce7a45c746a507d77a9320)
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);
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);
23eaa2832dSBarry Smith 
24*1c6b2ff8SBarry Smith const char *SNESConvergedReasons_Shifted[] = {" ","DIVERGED_TR_DELTA","DIVERGED_JACOBIAN_DOMAIN","DIVERGED_DTOL","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
2564075487SBarry Smith                                               "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
269dcbbd2bSBarry Smith                                               "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
27*1c6b2ff8SBarry Smith                                               "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","SNESConvergedReason","",0};
28*1c6b2ff8SBarry Smith const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 12;
299dcbbd2bSBarry Smith 
30365a6726SPeter Brune const char *SNESNormSchedules_Shifted[]    = {"DEFAULT","NONE","ALWAYS","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormSchedule","SNES_NORM_",0};
31365a6726SPeter Brune const char *const *const SNESNormSchedules = SNESNormSchedules_Shifted + 1;
32fdacfa88SPeter Brune 
3347073ea2SPeter Brune const char *SNESFunctionTypes_Shifted[]    = {"DEFAULT","UNPRECONDITIONED","PRECONDITIONED","SNESFunctionType","SNES_FUNCTION_",0};
3447073ea2SPeter Brune const char *const *const SNESFunctionTypes = SNESFunctionTypes_Shifted + 1;
3547073ea2SPeter Brune 
3683f0b094SBarry Smith /*@C
3782bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
38eaa2832dSBarry Smith 
39fee21e36SBarry Smith    Not Collective
40fee21e36SBarry Smith 
4136851e7fSLois Curfman McInnes    Level: advanced
4236851e7fSLois Curfman McInnes 
4382bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
44eaa2832dSBarry Smith @*/
45607a6623SBarry Smith PetscErrorCode  SNESRegisterAll(void)
46eaa2832dSBarry Smith {
47dfbe8321SBarry Smith   PetscErrorCode ierr;
4882bf6240SBarry Smith 
493a40ed3dSBarry Smith   PetscFunctionBegin;
500f51fdf8SToby Isaac   if (SNESRegisterAllCalled) PetscFunctionReturn(0);
514c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
5282bf6240SBarry Smith 
53bdf89e91SBarry Smith   ierr = SNESRegister(SNESNEWTONLS,         SNESCreate_NEWTONLS);CHKERRQ(ierr);
54bdf89e91SBarry Smith   ierr = SNESRegister(SNESNEWTONTR,         SNESCreate_NEWTONTR);CHKERRQ(ierr);
55bdf89e91SBarry Smith   ierr = SNESRegister(SNESNRICHARDSON,      SNESCreate_NRichardson);CHKERRQ(ierr);
56bdf89e91SBarry Smith   ierr = SNESRegister(SNESKSPONLY,          SNESCreate_KSPONLY);CHKERRQ(ierr);
571ef27442SStefano Zampini   ierr = SNESRegister(SNESKSPTRANSPOSEONLY, SNESCreate_KSPTRANSPOSEONLY);CHKERRQ(ierr);
58bdf89e91SBarry Smith   ierr = SNESRegister(SNESVINEWTONRSLS,     SNESCreate_VINEWTONRSLS);CHKERRQ(ierr);
59bdf89e91SBarry Smith   ierr = SNESRegister(SNESVINEWTONSSLS,     SNESCreate_VINEWTONSSLS);CHKERRQ(ierr);
60bdf89e91SBarry Smith   ierr = SNESRegister(SNESNGMRES,           SNESCreate_NGMRES);CHKERRQ(ierr);
61bdf89e91SBarry Smith   ierr = SNESRegister(SNESQN,               SNESCreate_QN);CHKERRQ(ierr);
62bdf89e91SBarry Smith   ierr = SNESRegister(SNESSHELL,            SNESCreate_Shell);CHKERRQ(ierr);
63be95d8f1SBarry Smith   ierr = SNESRegister(SNESNGS,              SNESCreate_NGS);CHKERRQ(ierr);
64bdf89e91SBarry Smith   ierr = SNESRegister(SNESNCG,              SNESCreate_NCG);CHKERRQ(ierr);
65bdf89e91SBarry Smith   ierr = SNESRegister(SNESFAS,              SNESCreate_FAS);CHKERRQ(ierr);
66bdf89e91SBarry Smith   ierr = SNESRegister(SNESMS,               SNESCreate_MS);CHKERRQ(ierr);
67bdf89e91SBarry Smith   ierr = SNESRegister(SNESNASM,             SNESCreate_NASM);CHKERRQ(ierr);
68bdf89e91SBarry Smith   ierr = SNESRegister(SNESANDERSON,         SNESCreate_Anderson);CHKERRQ(ierr);
69bdf89e91SBarry Smith   ierr = SNESRegister(SNESASPIN,            SNESCreate_ASPIN);CHKERRQ(ierr);
70eed5f15bSPeter Brune   ierr = SNESRegister(SNESCOMPOSITE,        SNESCreate_Composite);CHKERRQ(ierr);
71561742edSMatthew G. Knepley   ierr = SNESRegister(SNESPATCH,            SNESCreate_Patch);CHKERRQ(ierr);
723a40ed3dSBarry Smith   PetscFunctionReturn(0);
73eaa2832dSBarry Smith }
74