xref: /petsc/src/snes/interface/snesregi.c (revision fef7b6d8e45eee5b2327135157d7cc4a059fd396)
1eaa2832dSBarry Smith 
2c6db04a5SJed Brown #include <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);
107087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_VI(SNES);
114a0c5b0cSMatthew G Knepley extern PetscErrorCode  SNESCreate_NGMRES(SNES);
129261d27aSPeter Brune extern PetscErrorCode  SNESCreate_SORQN(SNES);
134b11644fSPeter Brune extern PetscErrorCode  SNESCreate_QN(SNES);
14c5ae4b9aSBarry Smith extern PetscErrorCode  SNESCreate_Shell(SNES);
15*fef7b6d8SPeter Brune extern PetscErrorCode  SNESCreate_NCG(SNES);
16fb2e594dSBarry Smith EXTERN_C_END
17eaa2832dSBarry Smith 
181e633543SBarry Smith const char *SNESConvergedReasons_Shifted[]  = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
1964075487SBarry Smith                                                "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
209dcbbd2bSBarry Smith                                                "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
213f149594SLisandro Dalcin                                                "CONVERGED_PNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
227935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
239dcbbd2bSBarry Smith 
2482bf6240SBarry Smith /*
2582bf6240SBarry Smith       This is used by SNESSetType() to make sure that at least one
2682bf6240SBarry Smith     SNESRegisterAll() is called. In general, if there is more than one
2782bf6240SBarry Smith     DLL then SNESRegisterAll() may be called several times.
2882bf6240SBarry Smith */
29ace3abfcSBarry Smith extern PetscBool  SNESRegisterAllCalled;
3082bf6240SBarry Smith 
314a2ae208SSatish Balay #undef __FUNCT__
324a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll"
3383f0b094SBarry Smith /*@C
3482bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
35eaa2832dSBarry Smith 
36fee21e36SBarry Smith    Not Collective
37fee21e36SBarry Smith 
3836851e7fSLois Curfman McInnes    Level: advanced
3936851e7fSLois Curfman McInnes 
4082bf6240SBarry Smith .keywords: SNES, register, all
41eaa2832dSBarry Smith 
4282bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
43eaa2832dSBarry Smith @*/
447087cfbeSBarry Smith PetscErrorCode  SNESRegisterAll(const char path[])
45eaa2832dSBarry Smith {
46dfbe8321SBarry Smith   PetscErrorCode ierr;
4782bf6240SBarry Smith 
483a40ed3dSBarry Smith   PetscFunctionBegin;
494c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
5082bf6240SBarry Smith 
51b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESLS,          path,"SNESCreate_LS",          SNESCreate_LS);CHKERRQ(ierr);
52b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTR,          path,"SNESCreate_TR",          SNESCreate_TR);CHKERRQ(ierr);
53b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTEST,        path,"SNESCreate_Test",        SNESCreate_Test);CHKERRQ(ierr);
54d5c3842bSBarry Smith   ierr = SNESRegisterDynamic(SNESNRICHARDSON, path,"SNESCreate_NRichardson", SNESCreate_NRichardson);CHKERRQ(ierr);
55b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESKSPONLY,     path,"SNESCreate_KSPONLY",     SNESCreate_KSPONLY);CHKERRQ(ierr);
562b4ed282SShri Abhyankar   ierr = SNESRegisterDynamic(SNESVI,          path,"SNESCreate_VI",          SNESCreate_VI);CHKERRQ(ierr);
574a0c5b0cSMatthew G Knepley   ierr = SNESRegisterDynamic(SNESNGMRES,      path,"SNESCreate_NGMRES",      SNESCreate_NGMRES);CHKERRQ(ierr);
584b11644fSPeter Brune   ierr = SNESRegisterDynamic(SNESQN,          path,"SNESCreate_QN",          SNESCreate_QN);CHKERRQ(ierr);
59c5ae4b9aSBarry Smith   ierr = SNESRegisterDynamic(SNESSHELL,       path,"SNESCreate_Shell",       SNESCreate_Shell);CHKERRQ(ierr);
60d5c3842bSBarry Smith   ierr = SNESRegisterDynamic(SNESSORQN,       path,"SNESCreate_SORQN",       SNESCreate_SORQN);CHKERRQ(ierr);
61*fef7b6d8SPeter Brune   ierr = SNESRegisterDynamic(SNESNCG,         path,"SNESCreate_NCG",         SNESCreate_NCG);CHKERRQ(ierr);
623a40ed3dSBarry Smith   PetscFunctionReturn(0);
63eaa2832dSBarry Smith }
64