Actual source code: snesregi.c

  2: #include <private/snesimpl.h>     /*I  "petscsnes.h"  I*/

  4: EXTERN_C_BEGIN
  5: extern PetscErrorCode  SNESCreate_LS(SNES);
  6: extern PetscErrorCode  SNESCreate_TR(SNES);
  7: extern PetscErrorCode  SNESCreate_Test(SNES);
  8: extern PetscErrorCode  SNESCreate_Picard(SNES);
  9: extern PetscErrorCode  SNESCreate_KSPONLY(SNES);
 10: extern PetscErrorCode  SNESCreate_VI(SNES);
 11: extern PetscErrorCode  SNESCreate_NGMRES(SNES);
 12: extern PetscErrorCode  SNESCreate_SORQN(SNES);
 13: EXTERN_C_END

 15: const char *SNESConvergedReasons_Shifted[]  = {" "," ","DIVERGED_LOCAL_MIN"," ","DIVERGED_LINE_SEARCH","DIVERGED_MAX_IT",
 16:                                                "DIVERGED_FNORM_NAN","DIVERGED_LINEAR_SOLVE","DIVERGED_FUNCTION_COUNT","DIVERGED_FUNCTION_DOMAIN",
 17:                                                "CONVERGED_ITERATING"," ","CONVERGED_FNORM_ABS","CONVERGED_FNORM_RELATIVE",
 18:                                                "CONVERGED_PNORM_RELATIVE","CONVERGED_ITS"," ","CONVERGED_TR_DELTA","SNESConvergedReason","",0};
 19: const char *const*SNESConvergedReasons = SNESConvergedReasons_Shifted + 10;

 21: /*
 22:       This is used by SNESSetType() to make sure that at least one 
 23:     SNESRegisterAll() is called. In general, if there is more than one
 24:     DLL then SNESRegisterAll() may be called several times.
 25: */
 26: extern PetscBool  SNESRegisterAllCalled;

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

 33:    Not Collective

 35:    Level: advanced

 37: .keywords: SNES, register, all

 39: .seealso:  SNESRegisterDestroy()
 40: @*/
 41: PetscErrorCode  SNESRegisterAll(const char path[])
 42: {

 46:   SNESRegisterAllCalled = PETSC_TRUE;

 48:   SNESRegisterDynamic(SNESLS,     path,"SNESCreate_LS",     SNESCreate_LS);
 49:   SNESRegisterDynamic(SNESTR,     path,"SNESCreate_TR",     SNESCreate_TR);
 50:   SNESRegisterDynamic(SNESTEST,   path,"SNESCreate_Test",   SNESCreate_Test);
 51:   SNESRegisterDynamic(SNESPICARD, path,"SNESCreate_Picard", SNESCreate_Picard);
 52:   SNESRegisterDynamic(SNESKSPONLY,path,"SNESCreate_KSPONLY",SNESCreate_KSPONLY);
 53:   SNESRegisterDynamic(SNESVI,     path,"SNESCreate_VI",     SNESCreate_VI);
 54:   SNESRegisterDynamic(SNESNGMRES, path,"SNESCreate_NGMRES", SNESCreate_NGMRES);
 55:   SNESRegisterDynamic(SNESSORQN,  path,"SNESCreate_SORQN", SNESCreate_SORQN);
 56:   return(0);
 57: }