1eaa2832dSBarry Smith 2b45d2f2cSJed Brown #include <petsc-private/snesimpl.h> /*I "petscsnes.h" I*/ 3fb2e594dSBarry Smith 48cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONLS(SNES); 58cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTR(SNES); 68cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Test(SNES); 78cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NRichardson(SNES); 88cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES); 98cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES); 108cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES); 118cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES); 128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES); 138cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES); 148cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_GS(SNES); 158cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES); 168cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES); 178cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES); 188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES); 198cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES); 208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES); 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 28365a6726SPeter Brune const char *SNESNormSchedules_Shifted[] = {"DEFAULT","NONE","ALWAYS","INITIALONLY","FINALONLY","INITIALFINALONLY","SNESNormSchedule","SNES_NORM_",0}; 29365a6726SPeter Brune const char *const *const SNESNormSchedules = SNESNormSchedules_Shifted + 1; 30fdacfa88SPeter Brune 31*47073ea2SPeter Brune const char *SNESFunctionTypes_Shifted[] = {"DEFAULT","UNPRECONDITIONED","PRECONDITIONED","SNESFunctionType","SNES_FUNCTION_",0}; 32*47073ea2SPeter Brune const char *const *const SNESFunctionTypes = SNESFunctionTypes_Shifted + 1; 33*47073ea2SPeter Brune 3482bf6240SBarry Smith /* 3582bf6240SBarry Smith This is used by SNESSetType() to make sure that at least one 3682bf6240SBarry Smith SNESRegisterAll() is called. In general, if there is more than one 3782bf6240SBarry Smith DLL then SNESRegisterAll() may be called several times. 3882bf6240SBarry Smith */ 39ace3abfcSBarry Smith extern PetscBool SNESRegisterAllCalled; 4082bf6240SBarry Smith 414a2ae208SSatish Balay #undef __FUNCT__ 424a2ae208SSatish Balay #define __FUNCT__ "SNESRegisterAll" 4383f0b094SBarry Smith /*@C 4482bf6240SBarry Smith SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package. 45eaa2832dSBarry Smith 46fee21e36SBarry Smith Not Collective 47fee21e36SBarry Smith 4836851e7fSLois Curfman McInnes Level: advanced 4936851e7fSLois Curfman McInnes 5082bf6240SBarry Smith .keywords: SNES, register, all 51eaa2832dSBarry Smith 5282bf6240SBarry Smith .seealso: SNESRegisterDestroy() 53eaa2832dSBarry Smith @*/ 54607a6623SBarry Smith PetscErrorCode SNESRegisterAll(void) 55eaa2832dSBarry Smith { 56dfbe8321SBarry Smith PetscErrorCode ierr; 5782bf6240SBarry Smith 583a40ed3dSBarry Smith PetscFunctionBegin; 594c49b128SBarry Smith SNESRegisterAllCalled = PETSC_TRUE; 6082bf6240SBarry Smith 61bdf89e91SBarry Smith ierr = SNESRegister(SNESNEWTONLS, SNESCreate_NEWTONLS);CHKERRQ(ierr); 62bdf89e91SBarry Smith ierr = SNESRegister(SNESNEWTONTR, SNESCreate_NEWTONTR);CHKERRQ(ierr); 63bdf89e91SBarry Smith ierr = SNESRegister(SNESTEST, SNESCreate_Test);CHKERRQ(ierr); 64bdf89e91SBarry Smith ierr = SNESRegister(SNESNRICHARDSON, SNESCreate_NRichardson);CHKERRQ(ierr); 65bdf89e91SBarry Smith ierr = SNESRegister(SNESKSPONLY, SNESCreate_KSPONLY);CHKERRQ(ierr); 66bdf89e91SBarry Smith ierr = SNESRegister(SNESVINEWTONRSLS, SNESCreate_VINEWTONRSLS);CHKERRQ(ierr); 67bdf89e91SBarry Smith ierr = SNESRegister(SNESVINEWTONSSLS, SNESCreate_VINEWTONSSLS);CHKERRQ(ierr); 68bdf89e91SBarry Smith ierr = SNESRegister(SNESNGMRES, SNESCreate_NGMRES);CHKERRQ(ierr); 69bdf89e91SBarry Smith ierr = SNESRegister(SNESQN, SNESCreate_QN);CHKERRQ(ierr); 70bdf89e91SBarry Smith ierr = SNESRegister(SNESSHELL, SNESCreate_Shell);CHKERRQ(ierr); 71bdf89e91SBarry Smith ierr = SNESRegister(SNESGS, SNESCreate_GS);CHKERRQ(ierr); 72bdf89e91SBarry Smith ierr = SNESRegister(SNESNCG, SNESCreate_NCG);CHKERRQ(ierr); 73bdf89e91SBarry Smith ierr = SNESRegister(SNESFAS, SNESCreate_FAS);CHKERRQ(ierr); 74bdf89e91SBarry Smith ierr = SNESRegister(SNESMS, SNESCreate_MS);CHKERRQ(ierr); 75bdf89e91SBarry Smith ierr = SNESRegister(SNESNASM, SNESCreate_NASM);CHKERRQ(ierr); 76bdf89e91SBarry Smith ierr = SNESRegister(SNESANDERSON, SNESCreate_Anderson);CHKERRQ(ierr); 77bdf89e91SBarry Smith ierr = SNESRegister(SNESASPIN, SNESCreate_ASPIN);CHKERRQ(ierr); 783a40ed3dSBarry Smith PetscFunctionReturn(0); 79eaa2832dSBarry Smith } 80