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); 11*4a0c5b0cSMatthew G Knepley extern PetscErrorCode SNESCreate_NGMRES(SNES); 12fb2e594dSBarry Smith EXTERN_C_END 13eaa2832dSBarry Smith 14647a2e1fSBarry Smith const char *SNESConvergedReasons_Shifted[] = {" "," ","DIVERGED_LOCAL_MIN"," ","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT", 1564075487SBarry Smith "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN", 169dcbbd2bSBarry Smith "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE", 173f149594SLisandro Dalcin "CONVERGED_PNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0}; 187935a769SJed Brown const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10; 199dcbbd2bSBarry Smith 2082bf6240SBarry Smith /* 2182bf6240SBarry Smith This is used by SNESSetType() to make sure that at least one 2282bf6240SBarry Smith SNESRegisterAll() is called. In general, if there is more than one 2382bf6240SBarry Smith DLL then SNESRegisterAll() may be called several times. 2482bf6240SBarry Smith */ 25ace3abfcSBarry Smith extern PetscBool SNESRegisterAllCalled; 2682bf6240SBarry Smith 274a2ae208SSatish Balay #undef __FUNCT__ 284a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll" 2983f0b094SBarry Smith /*@C 3082bf6240SBarry Smith SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package. 31eaa2832dSBarry Smith 32fee21e36SBarry Smith Not Collective 33fee21e36SBarry Smith 3436851e7fSLois Curfman McInnes Level: advanced 3536851e7fSLois Curfman McInnes 3682bf6240SBarry Smith .keywords: SNES, register, all 37eaa2832dSBarry Smith 3882bf6240SBarry Smith .seealso: SNESRegisterDestroy() 39eaa2832dSBarry Smith @*/ 407087cfbeSBarry Smith PetscErrorCode SNESRegisterAll(const char path[]) 41eaa2832dSBarry Smith { 42dfbe8321SBarry Smith PetscErrorCode ierr; 4382bf6240SBarry Smith 443a40ed3dSBarry Smith PetscFunctionBegin; 454c49b128SBarry Smith SNESRegisterAllCalled = PETSC_TRUE; 4682bf6240SBarry Smith 47b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESLS, path,"SNESCreate_LS", SNESCreate_LS);CHKERRQ(ierr); 48b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESTR, path,"SNESCreate_TR", SNESCreate_TR);CHKERRQ(ierr); 49b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESTEST, path,"SNESCreate_Test", SNESCreate_Test);CHKERRQ(ierr); 50b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESPICARD, path,"SNESCreate_Picard", SNESCreate_Picard);CHKERRQ(ierr); 51b79b07cfSJed Brown ierr = SNESRegisterDynamic(SNESKSPONLY,path,"SNESCreate_KSPONLY",SNESCreate_KSPONLY);CHKERRQ(ierr); 522b4ed282SShri Abhyankar ierr = SNESRegisterDynamic(SNESVI, path,"SNESCreate_VI", SNESCreate_VI);CHKERRQ(ierr); 53*4a0c5b0cSMatthew G Knepley ierr = SNESRegisterDynamic(SNESNGMRES, path,"SNESCreate_NGMRES", SNESCreate_NGMRES);CHKERRQ(ierr); 543a40ed3dSBarry Smith PetscFunctionReturn(0); 55eaa2832dSBarry Smith } 56