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); 8d5c3842bSBarry Smith extern PetscErrorCode SNESCreate_NRichardson(SNES); 97087cfbeSBarry Smith extern PetscErrorCode SNESCreate_KSPONLY(SNES); 10*c2fc9fa9SBarry Smith extern PetscErrorCode SNESCreate_VIRS(SNES); 11*c2fc9fa9SBarry Smith extern PetscErrorCode SNESCreate_VISS(SNES); 124a0c5b0cSMatthew G Knepley extern PetscErrorCode SNESCreate_NGMRES(SNES); 139261d27aSPeter Brune extern PetscErrorCode SNESCreate_SORQN(SNES); 144b11644fSPeter Brune extern PetscErrorCode SNESCreate_QN(SNES); 15c5ae4b9aSBarry Smith extern PetscErrorCode SNESCreate_Shell(SNES); 16fef7b6d8SPeter Brune extern PetscErrorCode SNESCreate_NCG(SNES); 17421d9b32SPeter Brune extern PetscErrorCode SNESCreate_FAS(SNES); 18fb2e594dSBarry Smith EXTERN_C_END 19eaa2832dSBarry Smith 201e633543SBarry Smith const char *SNESConvergedReasons_Shifted[] = {" "," ","DIVERGED_LOCAL_MIN","DIVERGED_INNER","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT", 2164075487SBarry Smith "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN", 229dcbbd2bSBarry Smith "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE", 233f149594SLisandro Dalcin "CONVERGED_PNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0}; 247935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10; 259dcbbd2bSBarry Smith 2682bf6240SBarry Smith /* 2782bf6240SBarry Smith This is used by SNESSetType() to make sure that at least one 2882bf6240SBarry Smith SNESRegisterAll() is called. In general, if there is more than one 2982bf6240SBarry Smith DLL then SNESRegisterAll() may be called several times. 3082bf6240SBarry Smith */ 31ace3abfcSBarry Smith extern PetscBool SNESRegisterAllCalled; 3282bf6240SBarry Smith 334a2ae208SSatish Balay #undef __FUNCT__ 344a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll" 3583f0b094SBarry Smith /*@C 3682bf6240SBarry Smith SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package. 37eaa2832dSBarry Smith 38fee21e36SBarry Smith Not Collective 39fee21e36SBarry Smith 4036851e7fSLois Curfman McInnes Level: advanced 4136851e7fSLois Curfman McInnes 4282bf6240SBarry Smith .keywords: SNES, register, all 43eaa2832dSBarry Smith 4482bf6240SBarry Smith .seealso: SNESRegisterDestroy() 45eaa2832dSBarry Smith @*/ 467087cfbeSBarry Smith PetscErrorCode SNESRegisterAll(const char path[]) 47eaa2832dSBarry Smith { 48dfbe8321SBarry Smith PetscErrorCode ierr; 4982bf6240SBarry Smith 503a40ed3dSBarry Smith PetscFunctionBegin; 514c49b128SBarry Smith SNESRegisterAllCalled = PETSC_TRUE; 5282bf6240SBarry Smith 53b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESLS, path,"SNESCreate_LS", SNESCreate_LS);CHKERRQ(ierr); 54b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESTR, path,"SNESCreate_TR", SNESCreate_TR);CHKERRQ(ierr); 55b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESTEST, path,"SNESCreate_Test", SNESCreate_Test);CHKERRQ(ierr); 56d5c3842bSBarry Smith ierr = SNESRegisterDynamic(SNESNRICHARDSON, path,"SNESCreate_NRichardson", SNESCreate_NRichardson);CHKERRQ(ierr); 57b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESKSPONLY, path,"SNESCreate_KSPONLY", SNESCreate_KSPONLY);CHKERRQ(ierr); 58*c2fc9fa9SBarry Smith ierr = SNESRegisterDynamic(SNESVIRS, path,"SNESCreate_VIRS", SNESCreate_VIRS);CHKERRQ(ierr); 59*c2fc9fa9SBarry Smith ierr = SNESRegisterDynamic(SNESVISS, path,"SNESCreate_VISS", SNESCreate_VISS);CHKERRQ(ierr); 604a0c5b0cSMatthew G Knepley ierr = SNESRegisterDynamic(SNESNGMRES, path,"SNESCreate_NGMRES", SNESCreate_NGMRES);CHKERRQ(ierr); 614b11644fSPeter Brune ierr = SNESRegisterDynamic(SNESQN, path,"SNESCreate_QN", SNESCreate_QN);CHKERRQ(ierr); 62c5ae4b9aSBarry Smith ierr = SNESRegisterDynamic(SNESSHELL, path,"SNESCreate_Shell", SNESCreate_Shell);CHKERRQ(ierr); 63d5c3842bSBarry Smith ierr = SNESRegisterDynamic(SNESSORQN, path,"SNESCreate_SORQN", SNESCreate_SORQN);CHKERRQ(ierr); 64fef7b6d8SPeter Brune ierr = SNESRegisterDynamic(SNESNCG, path,"SNESCreate_NCG", SNESCreate_NCG);CHKERRQ(ierr); 65421d9b32SPeter Brune ierr = SNESRegisterDynamic(SNESFAS, path,"SNESCreate_FAS", SNESCreate_FAS);CHKERRQ(ierr); 663a40ed3dSBarry Smith PetscFunctionReturn(0); 67eaa2832dSBarry Smith } 68