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); 129261d27aSPeter Brune extern PetscErrorCode SNESCreate_SORQN(SNES); 134b11644fSPeter Brune extern PetscErrorCode SNESCreate_QN(SNES); 14c5ae4b9aSBarry Smith extern PetscErrorCode SNESCreate_Shell(SNES); 15fb2e594dSBarry Smith EXTERN_C_END 16eaa2832dSBarry Smith 17*1e633543SBarry Smith const char *SNESConvergedReasons_Shifted[] = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT", 1864075487SBarry Smith "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN", 199dcbbd2bSBarry Smith "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE", 203f149594SLisandro Dalcin "CONVERGED_PNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0}; 217935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10; 229dcbbd2bSBarry Smith 2382bf6240SBarry Smith /* 2482bf6240SBarry Smith This is used by SNESSetType() to make sure that at least one 2582bf6240SBarry Smith SNESRegisterAll() is called. In general, if there is more than one 2682bf6240SBarry Smith DLL then SNESRegisterAll() may be called several times. 2782bf6240SBarry Smith */ 28ace3abfcSBarry Smith extern PetscBool SNESRegisterAllCalled; 2982bf6240SBarry Smith 304a2ae208SSatish Balay #undef __FUNCT__ 314a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll" 3283f0b094SBarry Smith /*@C 3382bf6240SBarry Smith SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package. 34eaa2832dSBarry Smith 35fee21e36SBarry Smith Not Collective 36fee21e36SBarry Smith 3736851e7fSLois Curfman McInnes Level: advanced 3836851e7fSLois Curfman McInnes 3982bf6240SBarry Smith .keywords: SNES, register, all 40eaa2832dSBarry Smith 4182bf6240SBarry Smith .seealso: SNESRegisterDestroy() 42eaa2832dSBarry Smith @*/ 437087cfbeSBarry Smith PetscErrorCode SNESRegisterAll(const char path[]) 44eaa2832dSBarry Smith { 45dfbe8321SBarry Smith PetscErrorCode ierr; 4682bf6240SBarry Smith 473a40ed3dSBarry Smith PetscFunctionBegin; 484c49b128SBarry Smith SNESRegisterAllCalled = PETSC_TRUE; 4982bf6240SBarry Smith 50b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESLS, path,"SNESCreate_LS", SNESCreate_LS);CHKERRQ(ierr); 51b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESTR, path,"SNESCreate_TR", SNESCreate_TR);CHKERRQ(ierr); 52b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESTEST, path,"SNESCreate_Test", SNESCreate_Test);CHKERRQ(ierr); 53b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESPICARD, path,"SNESCreate_Picard", SNESCreate_Picard);CHKERRQ(ierr); 54b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESKSPONLY,path,"SNESCreate_KSPONLY",SNESCreate_KSPONLY);CHKERRQ(ierr); 552b4ed282SShri Abhyankar ierr = SNESRegisterDynamic(SNESVI, path,"SNESCreate_VI", SNESCreate_VI);CHKERRQ(ierr); 564a0c5b0cSMatthew G Knepley ierr = SNESRegisterDynamic(SNESNGMRES, path,"SNESCreate_NGMRES", SNESCreate_NGMRES);CHKERRQ(ierr); 579261d27aSPeter Brune ierr = SNESRegisterDynamic(SNESSORQN, path,"SNESCreate_SORQN", SNESCreate_SORQN);CHKERRQ(ierr); 584b11644fSPeter Brune ierr = SNESRegisterDynamic(SNESQN, path,"SNESCreate_QN", SNESCreate_QN);CHKERRQ(ierr); 59c5ae4b9aSBarry Smith ierr = SNESRegisterDynamic(SNESSHELL, path,"SNESCreate_Shell", SNESCreate_Shell);CHKERRQ(ierr); 603a40ed3dSBarry Smith PetscFunctionReturn(0); 61eaa2832dSBarry Smith } 62