xref: /petsc/src/snes/interface/snesregi.c (revision 1e633543be291cfcfe1cde705e1b44f9f92cb5cc)
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);
87087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_Picard(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);
15fb2e594dSBarry Smith EXTERN_C_END
16eaa2832dSBarry Smith 
17*1e633543SBarry Smith const char *SNESConvergedReasons_Shifted[]  = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
1864075487SBarry Smith                                                "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
199dcbbd2bSBarry Smith                                                "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
203f149594SLisandro Dalcin                                                "CONVERGED_PNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
217935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
229dcbbd2bSBarry Smith 
2382bf6240SBarry Smith /*
2482bf6240SBarry Smith       This is used by SNESSetType() to make sure that at least one
2582bf6240SBarry Smith     SNESRegisterAll() is called. In general, if there is more than one
2682bf6240SBarry Smith     DLL then SNESRegisterAll() may be called several times.
2782bf6240SBarry Smith */
28ace3abfcSBarry Smith extern PetscBool  SNESRegisterAllCalled;
2982bf6240SBarry Smith 
304a2ae208SSatish Balay #undef __FUNCT__
314a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll"
3283f0b094SBarry Smith /*@C
3382bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
34eaa2832dSBarry Smith 
35fee21e36SBarry Smith    Not Collective
36fee21e36SBarry Smith 
3736851e7fSLois Curfman McInnes    Level: advanced
3836851e7fSLois Curfman McInnes 
3982bf6240SBarry Smith .keywords: SNES, register, all
40eaa2832dSBarry Smith 
4182bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
42eaa2832dSBarry Smith @*/
437087cfbeSBarry Smith PetscErrorCode  SNESRegisterAll(const char path[])
44eaa2832dSBarry Smith {
45dfbe8321SBarry Smith   PetscErrorCode ierr;
4682bf6240SBarry Smith 
473a40ed3dSBarry Smith   PetscFunctionBegin;
484c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
4982bf6240SBarry Smith 
50b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESLS,     path,"SNESCreate_LS",     SNESCreate_LS);CHKERRQ(ierr);
51b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTR,     path,"SNESCreate_TR",     SNESCreate_TR);CHKERRQ(ierr);
52b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTEST,   path,"SNESCreate_Test",   SNESCreate_Test);CHKERRQ(ierr);
53b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESPICARD, path,"SNESCreate_Picard", SNESCreate_Picard);CHKERRQ(ierr);
54b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESKSPONLY,path,"SNESCreate_KSPONLY",SNESCreate_KSPONLY);CHKERRQ(ierr);
552b4ed282SShri Abhyankar   ierr = SNESRegisterDynamic(SNESVI,     path,"SNESCreate_VI",     SNESCreate_VI);CHKERRQ(ierr);
564a0c5b0cSMatthew G Knepley   ierr = SNESRegisterDynamic(SNESNGMRES, path,"SNESCreate_NGMRES", SNESCreate_NGMRES);CHKERRQ(ierr);
579261d27aSPeter Brune   ierr = SNESRegisterDynamic(SNESSORQN,  path,"SNESCreate_SORQN",  SNESCreate_SORQN);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);
603a40ed3dSBarry Smith   PetscFunctionReturn(0);
61eaa2832dSBarry Smith }
62