1eaa2832dSBarry Smith 2af0996ceSBarry Smith #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); 641ba4c6cSHeeho Park PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTRDC(SNES); 78cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NRichardson(SNES); 88cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES); 91ef27442SStefano Zampini PETSC_EXTERN PetscErrorCode SNESCreate_KSPTRANSPOSEONLY(SNES); 108cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES); 118cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES); 128cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES); 138cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES); 148cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES); 15be95d8f1SBarry Smith PETSC_EXTERN PetscErrorCode SNESCreate_NGS(SNES); 168cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES); 178cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES); 188cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES); 198cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES); 208cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES); 218cc058d9SJed Brown PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES); 22eed5f15bSPeter Brune PETSC_EXTERN PetscErrorCode SNESCreate_Composite(SNES); 23561742edSMatthew G. Knepley PETSC_EXTERN PetscErrorCode SNESCreate_Patch(SNES); 24eaa2832dSBarry Smith 259371c9d4SSatish Balay const char *SNESConvergedReasons_Shifted[] = {" ", "DIVERGED_TR_DELTA", "DIVERGED_JACOBIAN_DOMAIN", "DIVERGED_DTOL", "DIVERGED_LOCAL_MIN", "DIVERGED_INNER", "DIVERGED_LINE_SEARCH", "DIVERGED_MAX_IT", "DIVERGED_FNORM_NAN", "DIVERGED_LINEAR_SOLVE", "DIVERGED_FUNCTION_COUNT", "DIVERGED_FUNCTION_DOMAIN", "CONVERGED_ITERATING", " ", "CONVERGED_FNORM_ABS", "CONVERGED_FNORM_RELATIVE", "CONVERGED_SNORM_RELATIVE", "CONVERGED_ITS", " ", "SNESConvergedReason", "", NULL}; 261c6b2ff8SBarry Smith const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 12; 279dcbbd2bSBarry Smith 289e5d0892SLisandro Dalcin const char *SNESNormSchedules_Shifted[] = {"DEFAULT", "NONE", "ALWAYS", "INITIALONLY", "FINALONLY", "INITIALFINALONLY", "SNESNormSchedule", "SNES_NORM_", NULL}; 29365a6726SPeter Brune const char *const *const SNESNormSchedules = SNESNormSchedules_Shifted + 1; 30fdacfa88SPeter Brune 319e5d0892SLisandro Dalcin const char *SNESFunctionTypes_Shifted[] = {"DEFAULT", "UNPRECONDITIONED", "PRECONDITIONED", "SNESFunctionType", "SNES_FUNCTION_", NULL}; 3247073ea2SPeter Brune const char *const *const SNESFunctionTypes = SNESFunctionTypes_Shifted + 1; 3347073ea2SPeter Brune 3483f0b094SBarry Smith /*@C 35*f6dfbefdSBarry Smith SNESRegisterAll - Registers all of the nonlinear solver methods in the `SNES` package. 36eaa2832dSBarry Smith 37fee21e36SBarry Smith Not Collective 38fee21e36SBarry Smith 3936851e7fSLois Curfman McInnes Level: advanced 4036851e7fSLois Curfman McInnes 41db781477SPatrick Sanan .seealso: `SNESRegisterDestroy()` 42eaa2832dSBarry Smith @*/ 439371c9d4SSatish Balay PetscErrorCode SNESRegisterAll(void) { 443a40ed3dSBarry Smith PetscFunctionBegin; 450f51fdf8SToby Isaac if (SNESRegisterAllCalled) PetscFunctionReturn(0); 464c49b128SBarry Smith SNESRegisterAllCalled = PETSC_TRUE; 4782bf6240SBarry Smith 489566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNEWTONLS, SNESCreate_NEWTONLS)); 499566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNEWTONTR, SNESCreate_NEWTONTR)); 509566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNEWTONTRDC, SNESCreate_NEWTONTRDC)); 519566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNRICHARDSON, SNESCreate_NRichardson)); 529566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESKSPONLY, SNESCreate_KSPONLY)); 539566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESKSPTRANSPOSEONLY, SNESCreate_KSPTRANSPOSEONLY)); 549566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESVINEWTONRSLS, SNESCreate_VINEWTONRSLS)); 559566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESVINEWTONSSLS, SNESCreate_VINEWTONSSLS)); 569566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNGMRES, SNESCreate_NGMRES)); 579566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESQN, SNESCreate_QN)); 589566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESSHELL, SNESCreate_Shell)); 599566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNGS, SNESCreate_NGS)); 609566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNCG, SNESCreate_NCG)); 619566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESFAS, SNESCreate_FAS)); 629566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESMS, SNESCreate_MS)); 639566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESNASM, SNESCreate_NASM)); 649566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESANDERSON, SNESCreate_Anderson)); 659566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESASPIN, SNESCreate_ASPIN)); 669566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESCOMPOSITE, SNESCreate_Composite)); 679566063dSJacob Faibussowitsch PetscCall(SNESRegister(SNESPATCH, SNESCreate_Patch)); 68798534f6SMatthew G. Knepley 699566063dSJacob Faibussowitsch PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSNESResidual, NULL, NULL)); 709566063dSJacob Faibussowitsch PetscCall(KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorSNESResidualDrawLG, KSPMonitorSNESResidualDrawLGCreate, NULL)); 713a40ed3dSBarry Smith PetscFunctionReturn(0); 72eaa2832dSBarry Smith } 73