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",
     26:                                               "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
     27:                                               "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
     28:                                               "CONVERGED_SNORM_RELATIVE","CONVERGED_ITS"," ","SNESConvergedReason","",NULL};
     29: const char *const *SNESConvergedReasons = SNESConvergedReasons_Shifted + 12;

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

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

     37: /*@C
     38:    SNESRegisterAll - Registers all of the nonlinear solver methods in the SNES package.

     40:    Not Collective

     42:    Level: advanced

     44: .seealso:  SNESRegisterDestroy()
     45: @*/
     46: PetscErrorCode  SNESRegisterAll(void)
     47: {
     48:   if (SNESRegisterAllCalled) return 0;
     49:   SNESRegisterAllCalled = PETSC_TRUE;

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

     72:   KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERASCII, PETSC_VIEWER_DEFAULT, KSPMonitorSNESResidual,       NULL, NULL);
     73:   KSPMonitorRegister("snes_preconditioned_residual", PETSCVIEWERDRAW,  PETSC_VIEWER_DRAW_LG, KSPMonitorSNESResidualDrawLG, KSPMonitorSNESResidualDrawLGCreate, NULL);
     74:   return 0;
     75: }