xref: /petsc/src/snes/interface/snesregi.c (revision b45d2f2cb7e031d9c0de5873eca80614ca7b863b)
1eaa2832dSBarry Smith 
2*b45d2f2cSJed Brown #include <petsc-private/snesimpl.h>     /*I  "petscsnes.h"  I*/
3fb2e594dSBarry Smith 
4fb2e594dSBarry Smith EXTERN_C_BEGIN
57087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_LS(SNES);
67087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_TR(SNES);
77087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_Test(SNES);
8d5c3842bSBarry Smith extern PetscErrorCode  SNESCreate_NRichardson(SNES);
97087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_KSPONLY(SNES);
10c2fc9fa9SBarry Smith extern PetscErrorCode  SNESCreate_VIRS(SNES);
11c2fc9fa9SBarry Smith extern PetscErrorCode  SNESCreate_VISS(SNES);
124a0c5b0cSMatthew G Knepley extern PetscErrorCode  SNESCreate_NGMRES(SNES);
139261d27aSPeter Brune extern PetscErrorCode  SNESCreate_SORQN(SNES);
144b11644fSPeter Brune extern PetscErrorCode  SNESCreate_QN(SNES);
15c5ae4b9aSBarry Smith extern PetscErrorCode  SNESCreate_Shell(SNES);
163542a6bcSPeter Brune extern PetscErrorCode  SNESCreate_GS(SNES);
17fef7b6d8SPeter Brune extern PetscErrorCode  SNESCreate_NCG(SNES);
18421d9b32SPeter Brune extern PetscErrorCode  SNESCreate_FAS(SNES);
1937e1895aSJed Brown extern PetscErrorCode  SNESCreate_MS(SNES);
20fb2e594dSBarry Smith EXTERN_C_END
21eaa2832dSBarry Smith 
221e633543SBarry Smith const char *SNESConvergedReasons_Shifted[]  = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
2364075487SBarry Smith                                                "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
249dcbbd2bSBarry Smith                                                "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
25c60f73f4SPeter Brune                                                "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
267935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
279dcbbd2bSBarry Smith 
2882bf6240SBarry Smith /*
2982bf6240SBarry Smith       This is used by SNESSetType() to make sure that at least one
3082bf6240SBarry Smith     SNESRegisterAll() is called. In general, if there is more than one
3182bf6240SBarry Smith     DLL then SNESRegisterAll() may be called several times.
3282bf6240SBarry Smith */
33ace3abfcSBarry Smith extern PetscBool  SNESRegisterAllCalled;
3482bf6240SBarry Smith 
354a2ae208SSatish Balay #undef __FUNCT__
364a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll"
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 
4482bf6240SBarry Smith .keywords: SNES, register, all
45eaa2832dSBarry Smith 
4682bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
47eaa2832dSBarry Smith @*/
487087cfbeSBarry Smith PetscErrorCode  SNESRegisterAll(const char path[])
49eaa2832dSBarry Smith {
50dfbe8321SBarry Smith   PetscErrorCode ierr;
5182bf6240SBarry Smith 
523a40ed3dSBarry Smith   PetscFunctionBegin;
534c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
5482bf6240SBarry Smith 
55b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESLS,          path,"SNESCreate_LS",          SNESCreate_LS);CHKERRQ(ierr);
56b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTR,          path,"SNESCreate_TR",          SNESCreate_TR);CHKERRQ(ierr);
57b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTEST,        path,"SNESCreate_Test",        SNESCreate_Test);CHKERRQ(ierr);
58d5c3842bSBarry Smith   ierr = SNESRegisterDynamic(SNESNRICHARDSON, path,"SNESCreate_NRichardson", SNESCreate_NRichardson);CHKERRQ(ierr);
59b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESKSPONLY,     path,"SNESCreate_KSPONLY",     SNESCreate_KSPONLY);CHKERRQ(ierr);
60c2fc9fa9SBarry Smith   ierr = SNESRegisterDynamic(SNESVIRS,        path,"SNESCreate_VIRS",        SNESCreate_VIRS);CHKERRQ(ierr);
61c2fc9fa9SBarry Smith   ierr = SNESRegisterDynamic(SNESVISS,        path,"SNESCreate_VISS",        SNESCreate_VISS);CHKERRQ(ierr);
624a0c5b0cSMatthew G Knepley   ierr = SNESRegisterDynamic(SNESNGMRES,      path,"SNESCreate_NGMRES",      SNESCreate_NGMRES);CHKERRQ(ierr);
634b11644fSPeter Brune   ierr = SNESRegisterDynamic(SNESQN,          path,"SNESCreate_QN",          SNESCreate_QN);CHKERRQ(ierr);
64c5ae4b9aSBarry Smith   ierr = SNESRegisterDynamic(SNESSHELL,       path,"SNESCreate_Shell",       SNESCreate_Shell);CHKERRQ(ierr);
653542a6bcSPeter Brune   ierr = SNESRegisterDynamic(SNESGS,          path,"SNESCreate_GS",          SNESCreate_GS);CHKERRQ(ierr);
66d5c3842bSBarry Smith   ierr = SNESRegisterDynamic(SNESSORQN,       path,"SNESCreate_SORQN",       SNESCreate_SORQN);CHKERRQ(ierr);
67fef7b6d8SPeter Brune   ierr = SNESRegisterDynamic(SNESNCG,         path,"SNESCreate_NCG",         SNESCreate_NCG);CHKERRQ(ierr);
68421d9b32SPeter Brune   ierr = SNESRegisterDynamic(SNESFAS,         path,"SNESCreate_FAS",         SNESCreate_FAS);CHKERRQ(ierr);
6937e1895aSJed Brown   ierr = SNESRegisterDynamic(SNESMS,          path,"SNESCreate_MS",          SNESCreate_MS);CHKERRQ(ierr);
703a40ed3dSBarry Smith   PetscFunctionReturn(0);
71eaa2832dSBarry Smith }
72