xref: /petsc/src/snes/interface/snesregi.c (revision 9261d27a1399e9c1f856dd2f45e8d4ae7c60f685)
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);
12*9261d27aSPeter Brune extern PetscErrorCode  SNESCreate_SORQN(SNES);
13fb2e594dSBarry Smith EXTERN_C_END
14eaa2832dSBarry Smith 
15647a2e1fSBarry Smith const char *SNESConvergedReasons_Shifted[]  = {" "," ","DIVERGED_LOCAL_MIN"," ","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
1664075487SBarry Smith                                                "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
179dcbbd2bSBarry Smith                                                "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
183f149594SLisandro Dalcin                                                "CONVERGED_PNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
197935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
209dcbbd2bSBarry Smith 
2182bf6240SBarry Smith /*
2282bf6240SBarry Smith       This is used by SNESSetType() to make sure that at least one
2382bf6240SBarry Smith     SNESRegisterAll() is called. In general, if there is more than one
2482bf6240SBarry Smith     DLL then SNESRegisterAll() may be called several times.
2582bf6240SBarry Smith */
26ace3abfcSBarry Smith extern PetscBool  SNESRegisterAllCalled;
2782bf6240SBarry Smith 
284a2ae208SSatish Balay #undef __FUNCT__
294a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll"
3083f0b094SBarry Smith /*@C
3182bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
32eaa2832dSBarry Smith 
33fee21e36SBarry Smith    Not Collective
34fee21e36SBarry Smith 
3536851e7fSLois Curfman McInnes    Level: advanced
3636851e7fSLois Curfman McInnes 
3782bf6240SBarry Smith .keywords: SNES, register, all
38eaa2832dSBarry Smith 
3982bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
40eaa2832dSBarry Smith @*/
417087cfbeSBarry Smith PetscErrorCode  SNESRegisterAll(const char path[])
42eaa2832dSBarry Smith {
43dfbe8321SBarry Smith   PetscErrorCode ierr;
4482bf6240SBarry Smith 
453a40ed3dSBarry Smith   PetscFunctionBegin;
464c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
4782bf6240SBarry Smith 
48b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESLS,     path,"SNESCreate_LS",     SNESCreate_LS);CHKERRQ(ierr);
49b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTR,     path,"SNESCreate_TR",     SNESCreate_TR);CHKERRQ(ierr);
50b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTEST,   path,"SNESCreate_Test",   SNESCreate_Test);CHKERRQ(ierr);
51b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESPICARD, path,"SNESCreate_Picard", SNESCreate_Picard);CHKERRQ(ierr);
52b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESKSPONLY,path,"SNESCreate_KSPONLY",SNESCreate_KSPONLY);CHKERRQ(ierr);
532b4ed282SShri Abhyankar   ierr = SNESRegisterDynamic(SNESVI,     path,"SNESCreate_VI",     SNESCreate_VI);CHKERRQ(ierr);
544a0c5b0cSMatthew G Knepley   ierr = SNESRegisterDynamic(SNESNGMRES, path,"SNESCreate_NGMRES", SNESCreate_NGMRES);CHKERRQ(ierr);
55*9261d27aSPeter Brune   ierr = SNESRegisterDynamic(SNESSORQN, path,"SNESCreate_SORQN", SNESCreate_SORQN);CHKERRQ(ierr);
563a40ed3dSBarry Smith   PetscFunctionReturn(0);
57eaa2832dSBarry Smith }
58