xref: /petsc/src/snes/interface/snesregi.c (revision 8cc058d9cd56c1ccb3be12a47760ddfc446aaffc)
1eaa2832dSBarry Smith 
2b45d2f2cSJed Brown #include <petsc-private/snesimpl.h>     /*I  "petscsnes.h"  I*/
3fb2e594dSBarry Smith 
4*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONLS(SNES);
5*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTR(SNES);
6*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Test(SNES);
7*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NRichardson(SNES);
8*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES);
9*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES);
10*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES);
11*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES);
12*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES);
13*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES);
14*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_GS(SNES);
15*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES);
16*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES);
17*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES);
18*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES);
19*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES);
20*8cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES);
21eaa2832dSBarry Smith 
221e633543SBarry Smith const char *SNESConvergedReasons_Shifted[] = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
2364075487SBarry Smith                                               "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
249dcbbd2bSBarry Smith                                               "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
25c60f73f4SPeter Brune                                               "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
267935a769SJed Brown const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;
279dcbbd2bSBarry Smith 
28fdacfa88SPeter Brune const char *SNESNormTypes_Shifted[]    = {"DEFAULT","NONE","FUNCTION","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormType","SNES_NORM_",0};
29fdacfa88SPeter Brune const char *const *const SNESNormTypes = SNESNormTypes_Shifted + 1;
30fdacfa88SPeter Brune 
3182bf6240SBarry Smith /*
3282bf6240SBarry Smith       This is used by SNESSetType() to make sure that at least one
3382bf6240SBarry Smith     SNESRegisterAll() is called. In general, if there is more than one
3482bf6240SBarry Smith     DLL then SNESRegisterAll() may be called several times.
3582bf6240SBarry Smith */
36ace3abfcSBarry Smith extern PetscBool SNESRegisterAllCalled;
3782bf6240SBarry Smith 
384a2ae208SSatish Balay #undef __FUNCT__
394a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll"
4083f0b094SBarry Smith /*@C
4182bf6240SBarry Smith    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.
42eaa2832dSBarry Smith 
43fee21e36SBarry Smith    Not Collective
44fee21e36SBarry Smith 
4536851e7fSLois Curfman McInnes    Level: advanced
4636851e7fSLois Curfman McInnes 
4782bf6240SBarry Smith .keywords: SNES, register, all
48eaa2832dSBarry Smith 
4982bf6240SBarry Smith .seealso:  SNESRegisterDestroy()
50eaa2832dSBarry Smith @*/
517087cfbeSBarry Smith PetscErrorCode  SNESRegisterAll(const char path[])
52eaa2832dSBarry Smith {
53dfbe8321SBarry Smith   PetscErrorCode ierr;
5482bf6240SBarry Smith 
553a40ed3dSBarry Smith   PetscFunctionBegin;
564c49b128SBarry Smith   SNESRegisterAllCalled = PETSC_TRUE;
5782bf6240SBarry Smith 
5804d7464bSBarry Smith   ierr = SNESRegisterDynamic(SNESNEWTONLS,     path,"SNESCreate_NEWTONLS",     SNESCreate_NEWTONLS);CHKERRQ(ierr);
5904d7464bSBarry Smith   ierr = SNESRegisterDynamic(SNESNEWTONTR,     path,"SNESCreate_NEWTONTR",     SNESCreate_NEWTONTR);CHKERRQ(ierr);
60b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESTEST,         path,"SNESCreate_Test",         SNESCreate_Test);CHKERRQ(ierr);
61d5c3842bSBarry Smith   ierr = SNESRegisterDynamic(SNESNRICHARDSON,  path,"SNESCreate_NRichardson",  SNESCreate_NRichardson);CHKERRQ(ierr);
62b79b07cfSJed Brown   ierr = SNESRegisterDynamic(SNESKSPONLY,      path,"SNESCreate_KSPONLY",      SNESCreate_KSPONLY);CHKERRQ(ierr);
63f450aa47SBarry Smith   ierr = SNESRegisterDynamic(SNESVINEWTONRSLS, path,"SNESCreate_VINEWTONRSLS", SNESCreate_VINEWTONRSLS);CHKERRQ(ierr);
64f450aa47SBarry Smith   ierr = SNESRegisterDynamic(SNESVINEWTONSSLS, path,"SNESCreate_VINEWTONSSLS", SNESCreate_VINEWTONSSLS);CHKERRQ(ierr);
654a0c5b0cSMatthew G Knepley   ierr = SNESRegisterDynamic(SNESNGMRES,       path,"SNESCreate_NGMRES",       SNESCreate_NGMRES);CHKERRQ(ierr);
664b11644fSPeter Brune   ierr = SNESRegisterDynamic(SNESQN,           path,"SNESCreate_QN",           SNESCreate_QN);CHKERRQ(ierr);
67c5ae4b9aSBarry Smith   ierr = SNESRegisterDynamic(SNESSHELL,        path,"SNESCreate_Shell",        SNESCreate_Shell);CHKERRQ(ierr);
683542a6bcSPeter Brune   ierr = SNESRegisterDynamic(SNESGS,           path,"SNESCreate_GS",           SNESCreate_GS);CHKERRQ(ierr);
69fef7b6d8SPeter Brune   ierr = SNESRegisterDynamic(SNESNCG,          path,"SNESCreate_NCG",          SNESCreate_NCG);CHKERRQ(ierr);
70421d9b32SPeter Brune   ierr = SNESRegisterDynamic(SNESFAS,          path,"SNESCreate_FAS",          SNESCreate_FAS);CHKERRQ(ierr);
7137e1895aSJed Brown   ierr = SNESRegisterDynamic(SNESMS,           path,"SNESCreate_MS",           SNESCreate_MS);CHKERRQ(ierr);
72eaedb033SPeter Brune   ierr = SNESRegisterDynamic(SNESNASM,         path,"SNESCreate_NASM",         SNESCreate_NASM);CHKERRQ(ierr);
73f31c9d25SPeter Brune   ierr = SNESRegisterDynamic(SNESANDERSON,     path,"SNESCreate_Anderson",     SNESCreate_Anderson);CHKERRQ(ierr);
74d728fb7dSPeter Brune   ierr = SNESRegisterDynamic(SNESASPIN,        path,"SNESCreate_ASPIN",        SNESCreate_ASPIN);CHKERRQ(ierr);
753a40ed3dSBarry Smith   PetscFunctionReturn(0);
76eaa2832dSBarry Smith }
77