Actual source code: tao_reg.c

  1: /*$Id: tao_reg.c 1.57 04/04/15 18:50:44-05:00 benson@rockies.mcs.anl.gov $*/

  3: #include "src/tao_impl.h"     /*I  "tao_solver.h"  I*/


 33: /* #undef USE_DYNAMIC_LIBRARIES */
 34: 
 35: /*
 36:     This routine is used by TaoSetType() to make sure that 
 37:     TaoRegisterAll() is called at least once. In general, if 
 38:     there is more than one DLL, then TaoRegisterAll() may be
 39:     called several times.
 40: */
 41: static int TaoRegisterAllCalled=0;

 43: int TaoStandardRegisterAll(){
 44:   int info;
 45:   char path[PETSC_MAX_PATH_LEN];
 46:   info = PetscStrcpy(path,TAO_LIB_DIR); CHKERRQ(info);
 47:   info = PetscStrcat(path,"/libtao.so");
 48:   TaoFunctionBegin;
 49:   if (TaoRegisterAllCalled){
 50:     TaoFunctionReturn(0);
 51:   }
 52:   info=TaoRegisterAll(path); CHKERRQ(info);
 53:   TaoFunctionReturn(0);
 54: }

 58: /*@C
 59:    TaoRegisterAll - Registers all of the minimization methods in the TAO_SOLVER package.

 61:    Not Collective

 63:    Level: advanced

 65: .keywords: TAO_SOLVER, register, all

 67: .seealso:  TaoRegisterDestroy()
 68: @*/
 69: int TaoRegisterAll(const char *path)
 70: {
 71:   int info;
 72:   TaoFunctionBegin;
 73:   TaoRegisterAllCalled = 1;

 75:   info = TaoRegisterDynamic("tao_lmvm",path,"TaoCreate_LMVM",TaoCreate_LMVM); CHKERRQ(info);
 76:   info = TaoRegisterDynamic("tao_nlmvm",path,"TaoCreate_NLMVM",TaoCreate_NLMVM); CHKERRQ(info);
 77:   info = TaoRegisterDynamic("tao_nls",path,"TaoCreate_NLS",TaoCreate_NLS); CHKERRQ(info);
 78:   info = TaoRegisterDynamic("tao_cg_fr",path,"TaoCreate_CG_FR",TaoCreate_CG_FR); CHKERRQ(info);
 79:   info = TaoRegisterDynamic("tao_cg_prp",path,"TaoCreate_CG_PRP",TaoCreate_CG_PRP); CHKERRQ(info);
 80:   info = TaoRegisterDynamic("tao_cg_pr",path,"TaoCreate_CG_PR",TaoCreate_CG_PR); CHKERRQ(info);
 81:   info = TaoRegisterDynamic("tao_bqpip",path,"TaoCreate_BQPIP",TaoCreate_BQPIP); CHKERRQ(info);
 82:   info = TaoRegisterDynamic("tao_blmvm",path,"TaoCreate_BLMVM",TaoCreate_BLMVM); CHKERRQ(info);
 83:   info = TaoRegisterDynamic("tao_bnls",path,"TaoCreate_BNLS",TaoCreate_BNLS); CHKERRQ(info);
 84:   info = TaoRegisterDynamic("tao_tron",path,"TaoCreate_TRON",TaoCreate_TRON); CHKERRQ(info);
 85: #ifdef TAO_USE_PETSC
 86:   info = TaoRegisterDynamic("tao_ntr",path,"TaoCreate_NTR",TaoCreate_NTR); CHKERRQ(info);
 87: #endif
 88:   info = TaoRegisterDynamic("tao_gpcg",path,"TaoCreate_GPCG",TaoCreate_GPCG); CHKERRQ(info);

 90:   //  info = TaoRegisterDynamic("tao_nlsq",path,"TaoCreate_NLSQ",TaoCreate_NLSQ); CHKERRQ(info);

 92:   /* Add registration for the semismooth code using a linesearch. */
 93:   info = TaoRegisterDynamic("tao_ssils",path,"TaoCreate_SSILS",TaoCreate_SSILS); CHKERRQ(info);
 94:   info = TaoRegisterDynamic("tao_ssfls",path,"TaoCreate_SSFLS",TaoCreate_SSFLS); CHKERRQ(info);
 95:   info = TaoRegisterDynamic("tao_asils",path,"TaoCreate_ASILS",TaoCreate_ASILS); CHKERRQ(info);
 96:   info = TaoRegisterDynamic("tao_asfls",path,"TaoCreate_ASFLS",TaoCreate_ASFLS); CHKERRQ(info);
 97:   info = TaoRegisterDynamic("tao_isils",path,"TaoCreate_ISILS",TaoCreate_ISILS); CHKERRQ(info);
 98:   info = TaoRegisterDynamic("tao_kt",path,"TaoCreate_KT",TaoCreate_KT); CHKERRQ(info);
 99:   info = TaoRegisterDynamic("tao_rscs",path,"TaoCreate_RSCS",TaoCreate_RSCS); CHKERRQ(info);
100:   info = TaoRegisterDynamic("tao_icp",path,"TaoCreate_ICP",TaoCreate_ICP); CHKERRQ(info);
101:   /*
102:   info = TaoRegisterDynamic("tao_bcg",path,"TaoCreate_BCG",TaoCreate_BCG); CHKERRQ(info);
103:   info = TaoRegisterDynamic("tao_qpip",path,"TaoCreate_QPIP",TaoCreate_QPIP); CHKERRQ(info);
104:   */

106:   TaoFunctionReturn(0);
107: }