xref: /petsc/src/snes/interface/snesregi.c (revision d728fb7dff1ad61d29df6dcab893bdd59c1da584)
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);
20f31c9d25SPeter Brune extern PetscErrorCode  SNESCreate_Anderson(SNES);
21*d728fb7dSPeter Brune extern PetscErrorCode  SNESCreate_ASPIN(SNES);
22fb2e594dSBarry Smith EXTERN_C_END
23eaa2832dSBarry Smith 
241e633543SBarry Smith const char *SNESConvergedReasons_Shifted[] = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
2564075487SBarry Smith                                               "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
269dcbbd2bSBarry Smith                                               "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
27c60f73f4SPeter Brune                                               "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
287935a769SJed Brown const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
299dcbbd2bSBarry Smith 
30fdacfa88SPeter Brune const char *SNESNormTypes_Shifted[]    = {"DEFAULT","NONE","FUNCTION","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormType","SNES_NORM_",0};
31fdacfa88SPeter Brune const char *const *const SNESNormTypes = SNESNormTypes_Shifted + 1;
32fdacfa88SPeter Brune 
3382bf6240SBarry Smith /*
3482bf6240SBarry Smith       This is used by SNESSetType() to make sure that at least one
3582bf6240SBarry Smith     SNESRegisterAll() is called. In general, if there is more than one
3682bf6240SBarry Smith     DLL then SNESRegisterAll() may be called several times.
3782bf6240SBarry Smith */
38ace3abfcSBarry Smith extern PetscBool SNESRegisterAllCalled;
3982bf6240SBarry Smith 
404a2ae208SSatish Balay #undef __FUNCT__
414a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll"
4283f0b094SBarry Smith /*@C
4382bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
44eaa2832dSBarry Smith 
45fee21e36SBarry Smith    Not Collective
46fee21e36SBarry Smith 
4736851e7fSLois Curfman McInnes    Level: advanced
4836851e7fSLois Curfman McInnes 
4982bf6240SBarry Smith .keywords: SNES, register, all
50eaa2832dSBarry Smith 
5182bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
52eaa2832dSBarry Smith @*/
537087cfbeSBarry Smith PetscErrorCode  SNESRegisterAll(const char path[])
54eaa2832dSBarry Smith {
55dfbe8321SBarry Smith   PetscErrorCode ierr;
5682bf6240SBarry Smith 
573a40ed3dSBarry Smith   PetscFunctionBegin;
584c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
5982bf6240SBarry Smith 
6004d7464bSBarry Smith   ierr = SNESRegisterDynamic(SNESNEWTONLS,     path,"SNESCreate_NEWTONLS",     SNESCreate_NEWTONLS);CHKERRQ(ierr);
6104d7464bSBarry Smith   ierr = SNESRegisterDynamic(SNESNEWTONTR,     path,"SNESCreate_NEWTONTR",     SNESCreate_NEWTONTR);CHKERRQ(ierr);
62b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTEST,         path,"SNESCreate_Test",         SNESCreate_Test);CHKERRQ(ierr);
63d5c3842bSBarry Smith   ierr = SNESRegisterDynamic(SNESNRICHARDSON,  path,"SNESCreate_NRichardson",  SNESCreate_NRichardson);CHKERRQ(ierr);
64b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESKSPONLY,      path,"SNESCreate_KSPONLY",      SNESCreate_KSPONLY);CHKERRQ(ierr);
65f450aa47SBarry Smith   ierr = SNESRegisterDynamic(SNESVINEWTONRSLS, path,"SNESCreate_VINEWTONRSLS", SNESCreate_VINEWTONRSLS);CHKERRQ(ierr);
66f450aa47SBarry Smith   ierr = SNESRegisterDynamic(SNESVINEWTONSSLS, path,"SNESCreate_VINEWTONSSLS", SNESCreate_VINEWTONSSLS);CHKERRQ(ierr);
674a0c5b0cSMatthew G Knepley   ierr = SNESRegisterDynamic(SNESNGMRES,       path,"SNESCreate_NGMRES",       SNESCreate_NGMRES);CHKERRQ(ierr);
684b11644fSPeter Brune   ierr = SNESRegisterDynamic(SNESQN,           path,"SNESCreate_QN",           SNESCreate_QN);CHKERRQ(ierr);
69c5ae4b9aSBarry Smith   ierr = SNESRegisterDynamic(SNESSHELL,        path,"SNESCreate_Shell",        SNESCreate_Shell);CHKERRQ(ierr);
703542a6bcSPeter Brune   ierr = SNESRegisterDynamic(SNESGS,           path,"SNESCreate_GS",           SNESCreate_GS);CHKERRQ(ierr);
71fef7b6d8SPeter Brune   ierr = SNESRegisterDynamic(SNESNCG,          path,"SNESCreate_NCG",          SNESCreate_NCG);CHKERRQ(ierr);
72421d9b32SPeter Brune   ierr = SNESRegisterDynamic(SNESFAS,          path,"SNESCreate_FAS",          SNESCreate_FAS);CHKERRQ(ierr);
7337e1895aSJed Brown   ierr = SNESRegisterDynamic(SNESMS,           path,"SNESCreate_MS",           SNESCreate_MS);CHKERRQ(ierr);
74eaedb033SPeter Brune   ierr = SNESRegisterDynamic(SNESNASM,         path,"SNESCreate_NASM",         SNESCreate_NASM);CHKERRQ(ierr);
75f31c9d25SPeter Brune   ierr = SNESRegisterDynamic(SNESANDERSON,     path,"SNESCreate_Anderson",     SNESCreate_Anderson);CHKERRQ(ierr);
76*d728fb7dSPeter Brune   ierr = SNESRegisterDynamic(SNESASPIN,        path,"SNESCreate_ASPIN",        SNESCreate_ASPIN);CHKERRQ(ierr);
773a40ed3dSBarry Smith   PetscFunctionReturn(0);
78eaa2832dSBarry Smith }
79