Actual source code: snesregi.c


  2: #include <petsc/private/snesimpl.h>

  4: PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONLS(SNES);
  5: PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTR(SNES);
  6: PETSC_EXTERN PetscErrorCode SNESCreate_NEWTONTRDC(SNES);
  7: PETSC_EXTERN PetscErrorCode SNESCreate_NRichardson(SNES);
  8: PETSC_EXTERN PetscErrorCode SNESCreate_KSPONLY(SNES);
  9: PETSC_EXTERN PetscErrorCode SNESCreate_KSPTRANSPOSEONLY(SNES);
 10: PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONRSLS(SNES);
 11: PETSC_EXTERN PetscErrorCode SNESCreate_VINEWTONSSLS(SNES);
 12: PETSC_EXTERN PetscErrorCode SNESCreate_NGMRES(SNES);
 13: PETSC_EXTERN PetscErrorCode SNESCreate_QN(SNES);
 14: PETSC_EXTERN PetscErrorCode SNESCreate_Shell(SNES);
 15: PETSC_EXTERN PetscErrorCode SNESCreate_NGS(SNES);
 16: PETSC_EXTERN PetscErrorCode SNESCreate_NCG(SNES);
 17: PETSC_EXTERN PetscErrorCode SNESCreate_FAS(SNES);
 18: PETSC_EXTERN PetscErrorCode SNESCreate_MS(SNES);
 19: PETSC_EXTERN PetscErrorCode SNESCreate_NASM(SNES);
 20: PETSC_EXTERN PetscErrorCode SNESCreate_Anderson(SNES);
 21: PETSC_EXTERN PetscErrorCode SNESCreate_ASPIN(SNES);
 22: PETSC_EXTERN PetscErrorCode SNESCreate_Composite(SNES);
 23: PETSC_EXTERN PetscErrorCode SNESCreate_Patch(SNES);

 25: 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};
 26: const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 12;

 28: const char              *SNESNormSchedules_Shifted[] = {"DEFAULT", "NONE", "ALWAYS", "INITIALONLY", "FINALONLY", "INITIALFINALONLY", "SNESNormSchedule", "SNES_NORM_", NULL};
 29: const char *const *const SNESNormSchedules           = SNESNormSchedules_Shifted + 1;

 31: const char              *SNESFunctionTypes_Shifted[] = {"DEFAULT", "UNPRECONDITIONED", "PRECONDITIONED", "SNESFunctionType", "SNES_FUNCTION_", NULL};
 32: const char *const *const SNESFunctionTypes           = SNESFunctionTypes_Shifted + 1;

 34: /*@C
 35:    SNESRegisterAll - Registers all of the nonlinear solver methods in the `SNES` package.

 37:    Not Collective

 39:    Level: advanced

 41: .seealso: `SNESRegisterDestroy()`
 42: @*/
 43: PetscErrorCode SNESRegisterAll(void)
 44: {
 45:   if (SNESRegisterAllCalled) return 0;
 46:   SNESRegisterAllCalled = PETSC_TRUE;

 48:   SNESRegister(SNESNEWTONLS, SNESCreate_NEWTONLS);
 49:   SNESRegister(SNESNEWTONTR, SNESCreate_NEWTONTR);
 50:   SNESRegister(SNESNEWTONTRDC, SNESCreate_NEWTONTRDC);
 51:   SNESRegister(SNESNRICHARDSON, SNESCreate_NRichardson);
 52:   SNESRegister(SNESKSPONLY, SNESCreate_KSPONLY);
 53:   SNESRegister(SNESKSPTRANSPOSEONLY, SNESCreate_KSPTRANSPOSEONLY);
 54:   SNESRegister(SNESVINEWTONRSLS, SNESCreate_VINEWTONRSLS);
 55:   SNESRegister(SNESVINEWTONSSLS, SNESCreate_VINEWTONSSLS);
 56:   SNESRegister(SNESNGMRES, SNESCreate_NGMRES);
 57:   SNESRegister(SNESQN, SNESCreate_QN);
 58:   SNESRegister(SNESSHELL, SNESCreate_Shell);
 59:   SNESRegister(SNESNGS, SNESCreate_NGS);
 60:   SNESRegister(SNESNCG, SNESCreate_NCG);
 61:   SNESRegister(SNESFAS, SNESCreate_FAS);
 62:   SNESRegister(SNESMS, SNESCreate_MS);
 63:   SNESRegister(SNESNASM, SNESCreate_NASM);
 64:   SNESRegister(SNESANDERSON, SNESCreate_Anderson);
 65:   SNESRegister(SNESASPIN, SNESCreate_ASPIN);
 66:   SNESRegister(SNESCOMPOSITE, SNESCreate_Composite);
 67:   SNESRegister(SNESPATCH, SNESCreate_Patch);

 69:   KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSNESResidual, NULL, NULL);
 70:   KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERDRAW, PETSC_VIEWER_DRAW_LG, KSPMonitorSNESResidualDrawLG, KSPMonitorSNESResidualDrawLGCreate, NULL);
 71:   return 0;
 72: }