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