xref: /petsc/src/snes/interface/snesregi.c (revision 5b6bfdb9644f185dbf5e5a09b808ec241507e1e7)
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_NRichardson(SNES);
7 PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES);
8 PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES);
9 PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES);
10 PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES);
11 PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES);
12 PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES);
13 PETSC_EXTERN PetscErrorCode SNESCreate_NGS(SNES);
14 PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES);
15 PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES);
16 PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES);
17 PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES);
18 PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES);
19 PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES);
20 PETSC_EXTERN PetscErrorCode SNESCreate_Composite(SNES);
21 
22 const char *SNESConvergedReasons_Shifted[] = {" ","DIVERGED_DTOL","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
23                                               "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
24                                               "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
25                                               "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
26 const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
27 
28 const char *SNESNormSchedules_Shifted[]    = {"DEFAULT","NONE","ALWAYS","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormSchedule","SNES_NORM_",0};
29 const char *const *const SNESNormSchedules = SNESNormSchedules_Shifted + 1;
30 
31 const char *SNESFunctionTypes_Shifted[]    = {"DEFAULT","UNPRECONDITIONED","PRECONDITIONED","SNESFunctionType","SNES_FUNCTION_",0};
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 .keywords: SNES, register, all
42 
43 .seealso:  SNESRegisterDestroy()
44 @*/
45 PetscErrorCode  SNESRegisterAll(void)
46 {
47   PetscErrorCode ierr;
48 
49   PetscFunctionBegin;
50   if (SNESRegisterAllCalled) PetscFunctionReturn(0);
51   SNESRegisterAllCalled = PETSC_TRUE;
52 
53   ierr = SNESRegister(SNESNEWTONLS,     SNESCreate_NEWTONLS);CHKERRQ(ierr);
54   ierr = SNESRegister(SNESNEWTONTR,     SNESCreate_NEWTONTR);CHKERRQ(ierr);
55   ierr = SNESRegister(SNESNRICHARDSON,  SNESCreate_NRichardson);CHKERRQ(ierr);
56   ierr = SNESRegister(SNESKSPONLY,      SNESCreate_KSPONLY);CHKERRQ(ierr);
57   ierr = SNESRegister(SNESVINEWTONRSLS, SNESCreate_VINEWTONRSLS);CHKERRQ(ierr);
58   ierr = SNESRegister(SNESVINEWTONSSLS, SNESCreate_VINEWTONSSLS);CHKERRQ(ierr);
59   ierr = SNESRegister(SNESNGMRES,       SNESCreate_NGMRES);CHKERRQ(ierr);
60   ierr = SNESRegister(SNESQN,           SNESCreate_QN);CHKERRQ(ierr);
61   ierr = SNESRegister(SNESSHELL,        SNESCreate_Shell);CHKERRQ(ierr);
62   ierr = SNESRegister(SNESNGS,          SNESCreate_NGS);CHKERRQ(ierr);
63   ierr = SNESRegister(SNESNCG,          SNESCreate_NCG);CHKERRQ(ierr);
64   ierr = SNESRegister(SNESFAS,          SNESCreate_FAS);CHKERRQ(ierr);
65   ierr = SNESRegister(SNESMS,           SNESCreate_MS);CHKERRQ(ierr);
66   ierr = SNESRegister(SNESNASM,         SNESCreate_NASM);CHKERRQ(ierr);
67   ierr = SNESRegister(SNESANDERSON,     SNESCreate_Anderson);CHKERRQ(ierr);
68   ierr = SNESRegister(SNESASPIN,        SNESCreate_ASPIN);CHKERRQ(ierr);
69   ierr = SNESRegister(SNESCOMPOSITE,    SNESCreate_Composite);CHKERRQ(ierr);
70   PetscFunctionReturn(0);
71 }
72