1eaa2832dSBarry Smith 2b45d2f2cSJed Brown #include <petsc-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); 10c2fc9fa9SBarry Smith extern PetscErrorCode SNESCreate_VIRS(SNES); 11c2fc9fa9SBarry 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); 163542a6bcSPeter Brune extern PetscErrorCode SNESCreate_GS(SNES); 17fef7b6d8SPeter Brune extern PetscErrorCode SNESCreate_NCG(SNES); 18421d9b32SPeter Brune extern PetscErrorCode SNESCreate_FAS(SNES); 1937e1895aSJed Brown extern PetscErrorCode SNESCreate_MS(SNES); 20fb2e594dSBarry Smith EXTERN_C_END 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 28*fdacfa88SPeter Brune const char *SNESNormTypes_Shifted[] = {"DEFAULT","NONE","FUNCTION","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormType","SNES_NORM_",0}; 29*fdacfa88SPeter Brune const char *const*const SNESNormTypes = SNESNormTypes_Shifted + 1; 30*fdacfa88SPeter 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 58b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESLS, path,"SNESCreate_LS", SNESCreate_LS);CHKERRQ(ierr); 59b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESTR, path,"SNESCreate_TR", SNESCreate_TR);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); 63c2fc9fa9SBarry Smith ierr = SNESRegisterDynamic(SNESVIRS, path,"SNESCreate_VIRS", SNESCreate_VIRS);CHKERRQ(ierr); 64c2fc9fa9SBarry Smith ierr = SNESRegisterDynamic(SNESVISS, path,"SNESCreate_VISS", SNESCreate_VISS);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); 69d5c3842bSBarry Smith ierr = SNESRegisterDynamic(SNESSORQN, path,"SNESCreate_SORQN", SNESCreate_SORQN);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); 733a40ed3dSBarry Smith PetscFunctionReturn(0); 74eaa2832dSBarry Smith } 75