Actual source code: tao_reg.c
1: /*$Id$*/
3: #include "src/tao_impl.h" /*I "tao_solver.h" I*/
34: /* #undef USE_DYNAMIC_LIBRARIES */
37: /*
38: This routine is used by TaoSetType() to make sure that
39: TaoRegisterAll() is called at least once. In general, if
40: there is more than one DLL, then TaoRegisterAll() may be
41: called several times.
42: */
43: static int TaoRegisterAllCalled=0;
45: int TaoStandardRegisterAll(){
46: int info;
47: char path[PETSC_MAX_PATH_LEN];
48: info = PetscStrcpy(path,TAO_LIB_DIR); CHKERRQ(info);
49: info = PetscStrcat(path,"/libtao");
50: TaoFunctionBegin;
51: if (TaoRegisterAllCalled){
52: TaoFunctionReturn(0);
53: }
54: #ifdef PETSC_USE_DYNAMIC_LIBRARIES
55: info = PetscDLLibraryAppend(PETSC_COMM_WORLD,&DLLibrariesLoaded,path);CHKERRQ(info);
56: #endif
57: info=TaoRegisterAll(path); CHKERRQ(info);
58: TaoFunctionReturn(0);
59: }
63: /*@C
64: TaoRegisterAll - Registers all of the minimization methods in the TAO_SOLVER package.
66: Not Collective
68: Level: advanced
70: .keywords: TAO_SOLVER, register, all
72: .seealso: TaoRegisterDestroy()
73: @*/
74: int TaoRegisterAll(const char *path)
75: {
76: int info;
77: TaoFunctionBegin;
78: TaoRegisterAllCalled = 1;
80: info = TaoRegisterDynamic("tao_lmvm",path,"TaoCreate_LMVM",TaoCreate_LMVM); CHKERRQ(info);
81: info = TaoRegisterDynamic("tao_nls",path,"TaoCreate_NLS",TaoCreate_NLS); CHKERRQ(info);
82: info = TaoRegisterDynamic("tao_cg",path,"TaoCreate_CG",TaoCreate_CG); CHKERRQ(info);
83: info = TaoRegisterDynamic("tao_bqpip",path,"TaoCreate_BQPIP",TaoCreate_BQPIP); CHKERRQ(info);
84: info = TaoRegisterDynamic("tao_blmvm",path,"TaoCreate_BLMVM",TaoCreate_BLMVM); CHKERRQ(info);
85: info = TaoRegisterDynamic("tao_bnls",path,"TaoCreate_BNLS",TaoCreate_BNLS); CHKERRQ(info);
86: info = TaoRegisterDynamic("tao_tron",path,"TaoCreate_TRON",TaoCreate_TRON); CHKERRQ(info);
87: info = TaoRegisterDynamic("tao_nm",path,"TaoCreate_NelderMead",TaoCreate_NelderMead); CHKERRQ(info);
88: #ifdef TAO_USE_PETSC
89: info = TaoRegisterDynamic("tao_ntl",path,"TaoCreate_NTL",TaoCreate_NTL); CHKERRQ(info);
90: info = TaoRegisterDynamic("tao_ntr",path,"TaoCreate_NTR",TaoCreate_NTR); CHKERRQ(info);
91: #endif
92: info = TaoRegisterDynamic("tao_gpcg",path,"TaoCreate_GPCG",TaoCreate_GPCG); CHKERRQ(info);
93: info = TaoRegisterDynamic("tao_nm",path,"TaoCreate_NelderMead",TaoCreate_NelderMead); CHKERRQ(info);
95: // info = TaoRegisterDynamic("tao_nlsq",path,"TaoCreate_NLSQ",TaoCreate_NLSQ); CHKERRQ(info);
97: /* Add registration for the semismooth code using a linesearch. */
98: info = TaoRegisterDynamic("tao_ssils",path,"TaoCreate_SSILS",TaoCreate_SSILS); CHKERRQ(info);
99: info = TaoRegisterDynamic("tao_ssfls",path,"TaoCreate_SSFLS",TaoCreate_SSFLS); CHKERRQ(info);
100: info = TaoRegisterDynamic("tao_asils",path,"TaoCreate_ASILS",TaoCreate_ASILS); CHKERRQ(info);
101: info = TaoRegisterDynamic("tao_asfls",path,"TaoCreate_ASFLS",TaoCreate_ASFLS); CHKERRQ(info);
102: info = TaoRegisterDynamic("tao_isils",path,"TaoCreate_ISILS",TaoCreate_ISILS); CHKERRQ(info);
103: info = TaoRegisterDynamic("tao_kt",path,"TaoCreate_KT",TaoCreate_KT); CHKERRQ(info);
104: info = TaoRegisterDynamic("tao_rscs",path,"TaoCreate_RSCS",TaoCreate_RSCS); CHKERRQ(info);
105: info = TaoRegisterDynamic("tao_icp",path,"TaoCreate_ICP",TaoCreate_ICP); CHKERRQ(info);
106: info = TaoRegisterDynamic("tao_fd_test",path,"TaoCreate_FD",TaoCreate_FD); CHKERRQ(info);
107: /*
108: info = TaoRegisterDynamic("tao_bcg",path,"TaoCreate_BCG",TaoCreate_BCG); CHKERRQ(info);
109: info = TaoRegisterDynamic("tao_qpip",path,"TaoCreate_QPIP",TaoCreate_QPIP); CHKERRQ(info);
110: */
111:
112: TaoFunctionReturn(0);
113: }