xref: /petsc/src/snes/interface/snesregi.c (revision f31c9d25cdd72681fc05eb3c724f19c48e234dd7)
1eaa2832dSBarry Smith 
2b45d2f2cSJed Brown #include <petsc-private/snesimpl.h>     /*I  "petscsnes.h"  I*/
3fb2e594dSBarry Smith 
4fb2e594dSBarry Smith EXTERN_C_BEGIN
504d7464bSBarry Smith extern PetscErrorCode  SNESCreate_NEWTONLS(SNES);
604d7464bSBarry Smith extern PetscErrorCode  SNESCreate_NEWTONTR(SNES);
77087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_Test(SNES);
8d5c3842bSBarry Smith extern PetscErrorCode  SNESCreate_NRichardson(SNES);
97087cfbeSBarry Smith extern PetscErrorCode  SNESCreate_KSPONLY(SNES);
10f450aa47SBarry Smith extern PetscErrorCode  SNESCreate_VINEWTONRSLS(SNES);
11f450aa47SBarry Smith extern PetscErrorCode  SNESCreate_VINEWTONSSLS(SNES);
124a0c5b0cSMatthew G Knepley extern PetscErrorCode  SNESCreate_NGMRES(SNES);
134b11644fSPeter Brune extern PetscErrorCode  SNESCreate_QN(SNES);
14c5ae4b9aSBarry Smith extern PetscErrorCode  SNESCreate_Shell(SNES);
153542a6bcSPeter Brune extern PetscErrorCode  SNESCreate_GS(SNES);
16fef7b6d8SPeter Brune extern PetscErrorCode  SNESCreate_NCG(SNES);
17421d9b32SPeter Brune extern PetscErrorCode  SNESCreate_FAS(SNES);
1837e1895aSJed Brown extern PetscErrorCode  SNESCreate_MS(SNES);
19eaedb033SPeter Brune extern PetscErrorCode  SNESCreate_NASM(SNES);
20*f31c9d25SPeter Brune extern PetscErrorCode  SNESCreate_Anderson(SNES);
21fb2e594dSBarry Smith EXTERN_C_END
22eaa2832dSBarry Smith 
231e633543SBarry Smith const char *SNESConvergedReasons_Shifted[]  = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
2464075487SBarry Smith                                                "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
259dcbbd2bSBarry Smith                                                "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
26c60f73f4SPeter Brune                                                "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
277935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
289dcbbd2bSBarry Smith 
29fdacfa88SPeter Brune const char *SNESNormTypes_Shifted[]        = {"DEFAULT","NONE","FUNCTION","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormType","SNES_NORM_",0};
30fdacfa88SPeter Brune const char *const*const SNESNormTypes = SNESNormTypes_Shifted + 1;
31fdacfa88SPeter Brune 
3282bf6240SBarry Smith /*
3382bf6240SBarry Smith       This is used by SNESSetType() to make sure that at least one
3482bf6240SBarry Smith     SNESRegisterAll() is called. In general, if there is more than one
3582bf6240SBarry Smith     DLL then SNESRegisterAll() may be called several times.
3682bf6240SBarry Smith */
37ace3abfcSBarry Smith extern PetscBool  SNESRegisterAllCalled;
3882bf6240SBarry Smith 
394a2ae208SSatish Balay #undef __FUNCT__
404a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll"
4183f0b094SBarry Smith /*@C
4282bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
43eaa2832dSBarry Smith 
44fee21e36SBarry Smith    Not Collective
45fee21e36SBarry Smith 
4636851e7fSLois Curfman McInnes    Level: advanced
4736851e7fSLois Curfman McInnes 
4882bf6240SBarry Smith .keywords: SNES, register, all
49eaa2832dSBarry Smith 
5082bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
51eaa2832dSBarry Smith @*/
527087cfbeSBarry Smith PetscErrorCode  SNESRegisterAll(const char path[])
53eaa2832dSBarry Smith {
54dfbe8321SBarry Smith   PetscErrorCode ierr;
5582bf6240SBarry Smith 
563a40ed3dSBarry Smith   PetscFunctionBegin;
574c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
5882bf6240SBarry Smith 
5904d7464bSBarry Smith   ierr = SNESRegisterDynamic(SNESNEWTONLS,     path,"SNESCreate_NEWTONLS",     SNESCreate_NEWTONLS);CHKERRQ(ierr);
6004d7464bSBarry Smith   ierr = SNESRegisterDynamic(SNESNEWTONTR,     path,"SNESCreate_NEWTONTR",     SNESCreate_NEWTONTR);CHKERRQ(ierr);
61b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTEST,         path,"SNESCreate_Test",         SNESCreate_Test);CHKERRQ(ierr);
62d5c3842bSBarry Smith   ierr = SNESRegisterDynamic(SNESNRICHARDSON,  path,"SNESCreate_NRichardson",  SNESCreate_NRichardson);CHKERRQ(ierr);
63b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESKSPONLY,      path,"SNESCreate_KSPONLY",      SNESCreate_KSPONLY);CHKERRQ(ierr);
64f450aa47SBarry Smith   ierr = SNESRegisterDynamic(SNESVINEWTONRSLS, path,"SNESCreate_VINEWTONRSLS", SNESCreate_VINEWTONRSLS);CHKERRQ(ierr);
65f450aa47SBarry Smith   ierr = SNESRegisterDynamic(SNESVINEWTONSSLS, path,"SNESCreate_VINEWTONSSLS", SNESCreate_VINEWTONSSLS);CHKERRQ(ierr);
664a0c5b0cSMatthew G Knepley   ierr = SNESRegisterDynamic(SNESNGMRES,       path,"SNESCreate_NGMRES",       SNESCreate_NGMRES);CHKERRQ(ierr);
674b11644fSPeter Brune   ierr = SNESRegisterDynamic(SNESQN,           path,"SNESCreate_QN",           SNESCreate_QN);CHKERRQ(ierr);
68c5ae4b9aSBarry Smith   ierr = SNESRegisterDynamic(SNESSHELL,        path,"SNESCreate_Shell",        SNESCreate_Shell);CHKERRQ(ierr);
693542a6bcSPeter Brune   ierr = SNESRegisterDynamic(SNESGS,           path,"SNESCreate_GS",           SNESCreate_GS);CHKERRQ(ierr);
70fef7b6d8SPeter Brune   ierr = SNESRegisterDynamic(SNESNCG,          path,"SNESCreate_NCG",          SNESCreate_NCG);CHKERRQ(ierr);
71421d9b32SPeter Brune   ierr = SNESRegisterDynamic(SNESFAS,          path,"SNESCreate_FAS",          SNESCreate_FAS);CHKERRQ(ierr);
7237e1895aSJed Brown   ierr = SNESRegisterDynamic(SNESMS,           path,"SNESCreate_MS",           SNESCreate_MS);CHKERRQ(ierr);
73eaedb033SPeter Brune   ierr = SNESRegisterDynamic(SNESNASM,         path,"SNESCreate_NASM",         SNESCreate_NASM);CHKERRQ(ierr);
74*f31c9d25SPeter Brune   ierr = SNESRegisterDynamic(SNESANDERSON,     path,"SNESCreate_Anderson",     SNESCreate_Anderson);CHKERRQ(ierr);
753a40ed3dSBarry Smith   PetscFunctionReturn(0);
76eaa2832dSBarry Smith }
77