Actual source code: taosolverregi.c

  1: #include <petsc/private/taoimpl.h>

  3: PETSC_EXTERN PetscErrorCode TaoCreate_LMVM(Tao);
  4: PETSC_EXTERN PetscErrorCode TaoCreate_NLS(Tao);
  5: PETSC_EXTERN PetscErrorCode TaoCreate_NTR(Tao);
  6: PETSC_EXTERN PetscErrorCode TaoCreate_NTL(Tao);
  7: PETSC_EXTERN PetscErrorCode TaoCreate_NM(Tao);
  8: PETSC_EXTERN PetscErrorCode TaoCreate_CG(Tao);
  9: PETSC_EXTERN PetscErrorCode TaoCreate_TRON(Tao);
 10: PETSC_EXTERN PetscErrorCode TaoCreate_OWLQN(Tao);
 11: PETSC_EXTERN PetscErrorCode TaoCreate_BMRM(Tao);
 12: PETSC_EXTERN PetscErrorCode TaoCreate_BLMVM(Tao);
 13: PETSC_EXTERN PetscErrorCode TaoCreate_BQNLS(Tao);
 14: PETSC_EXTERN PetscErrorCode TaoCreate_BNCG(Tao);
 15: PETSC_EXTERN PetscErrorCode TaoCreate_BNLS(Tao);
 16: PETSC_EXTERN PetscErrorCode TaoCreate_BNTR(Tao);
 17: PETSC_EXTERN PetscErrorCode TaoCreate_BNTL(Tao);
 18: PETSC_EXTERN PetscErrorCode TaoCreate_BQNKLS(Tao);
 19: PETSC_EXTERN PetscErrorCode TaoCreate_BQNKTR(Tao);
 20: PETSC_EXTERN PetscErrorCode TaoCreate_BQNKTL(Tao);
 21: PETSC_EXTERN PetscErrorCode TaoCreate_GPCG(Tao);
 22: PETSC_EXTERN PetscErrorCode TaoCreate_BQPIP(Tao);
 23: PETSC_EXTERN PetscErrorCode TaoCreate_POUNDERS(Tao);
 24: PETSC_EXTERN PetscErrorCode TaoCreate_BRGN(Tao);
 25: PETSC_EXTERN PetscErrorCode TaoCreate_LCL(Tao);
 26: PETSC_EXTERN PetscErrorCode TaoCreate_SSILS(Tao);
 27: PETSC_EXTERN PetscErrorCode TaoCreate_SSFLS(Tao);
 28: PETSC_EXTERN PetscErrorCode TaoCreate_ASILS(Tao);
 29: PETSC_EXTERN PetscErrorCode TaoCreate_ASFLS(Tao);
 30: PETSC_EXTERN PetscErrorCode TaoCreate_IPM(Tao);
 31: PETSC_EXTERN PetscErrorCode TaoCreate_PDIPM(Tao);
 32: PETSC_EXTERN PetscErrorCode TaoCreate_ADMM(Tao);
 33: PETSC_EXTERN PetscErrorCode TaoCreate_ALMM(Tao);
 34: PETSC_EXTERN PetscErrorCode TaoCreate_Shell(Tao);

 36: /*
 37:    Offset the convergence reasons so negative number represent diverged and
 38:    positive represent converged.
 39: */
 40: const char  *TaoConvergedReasons_Shifted[] = {"DIVERGED_USER",
 41:                                               "DIVERGED_TR_REDUCTION",
 42:                                               "DIVERGED_LS_FAILURE",
 43:                                               "DIVERGED_MAXFCN",
 44:                                               "DIVERGED_NAN",
 45:                                               "",
 46:                                               "DIVERGED_MAXITS",
 47:                                               "DIVERGED_FUNCTION_DOMAIN",

 49:                                               "CONTINUE_ITERATING",

 51:                                               "",
 52:                                               "",
 53:                                               "CONVERGED_GATOL",
 54:                                               "CONVERGED_GRTOL",
 55:                                               "CONVERGED_GTTOL",
 56:                                               "CONVERGED_STEPTOL",
 57:                                               "CONVERGED_MINF",
 58:                                               "CONVERGED_USER"};
 59: const char **TaoConvergedReasons           = TaoConvergedReasons_Shifted - TAO_DIVERGED_USER;

 61: /*@C
 62:   TaoRegisterAll - Registers all of the optimization methods in the Tao
 63:   package.

 65:   Not Collective

 67:   Level: developer

 69: .seealso: `Tao`, `TaoRegister()`, `TaoRegisterDestroy()`
 70: @*/
 71: PetscErrorCode TaoRegisterAll(void)
 72: {
 73: #if !defined(PETSC_USE_COMPLEX)
 74: #endif

 76:   if (TaoRegisterAllCalled) return 0;
 77:   TaoRegisterAllCalled = PETSC_TRUE;
 78: #if !defined(PETSC_USE_COMPLEX)
 79:   TaoRegister(TAOLMVM, TaoCreate_LMVM);
 80:   TaoRegister(TAONLS, TaoCreate_NLS);
 81:   TaoRegister(TAONTR, TaoCreate_NTR);
 82:   TaoRegister(TAONTL, TaoCreate_NTL);
 83:   TaoRegister(TAOCG, TaoCreate_CG);
 84:   TaoRegister(TAOTRON, TaoCreate_TRON);
 85:   TaoRegister(TAOOWLQN, TaoCreate_OWLQN);
 86:   TaoRegister(TAOBMRM, TaoCreate_BMRM);
 87:   TaoRegister(TAOBLMVM, TaoCreate_BLMVM);
 88:   TaoRegister(TAOBQNLS, TaoCreate_BQNLS);
 89:   TaoRegister(TAOBNCG, TaoCreate_BNCG);
 90:   TaoRegister(TAOBNLS, TaoCreate_BNLS);
 91:   TaoRegister(TAOBNTR, TaoCreate_BNTR);
 92:   TaoRegister(TAOBNTL, TaoCreate_BNTL);
 93:   TaoRegister(TAOBQNKLS, TaoCreate_BQNKLS);
 94:   TaoRegister(TAOBQNKTR, TaoCreate_BQNKTR);
 95:   TaoRegister(TAOBQNKTL, TaoCreate_BQNKTL);
 96:   TaoRegister(TAOBQPIP, TaoCreate_BQPIP);
 97:   TaoRegister(TAOGPCG, TaoCreate_GPCG);
 98:   TaoRegister(TAONM, TaoCreate_NM);
 99:   TaoRegister(TAOPOUNDERS, TaoCreate_POUNDERS);
100:   TaoRegister(TAOBRGN, TaoCreate_BRGN);
101:   TaoRegister(TAOLCL, TaoCreate_LCL);
102:   TaoRegister(TAOSSILS, TaoCreate_SSILS);
103:   TaoRegister(TAOSSFLS, TaoCreate_SSFLS);
104:   TaoRegister(TAOASILS, TaoCreate_ASILS);
105:   TaoRegister(TAOASFLS, TaoCreate_ASFLS);
106:   TaoRegister(TAOIPM, TaoCreate_IPM);
107:   TaoRegister(TAOPDIPM, TaoCreate_PDIPM);
108:   TaoRegister(TAOSHELL, TaoCreate_Shell);
109:   TaoRegister(TAOADMM, TaoCreate_ADMM);
110:   TaoRegister(TAOALMM, TaoCreate_ALMM);
111: #endif
112:   return 0;
113: }