1*a7e14dcfSSatish Balay #define TAOSOLVER_DLL 2*a7e14dcfSSatish Balay 3*a7e14dcfSSatish Balay #include "tao-private/taosolver_impl.h" /*I "taosolver.h" I*/ 4*a7e14dcfSSatish Balay 5*a7e14dcfSSatish Balay 6*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_LMVM(TaoSolver); 7*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_NLS(TaoSolver); 8*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_NTR(TaoSolver); 9*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_NTL(TaoSolver); 10*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_NM(TaoSolver); 11*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_CG(TaoSolver); 12*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_TRON(TaoSolver); 13*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_OWLQN(TaoSolver); 14*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_BMRM(TaoSolver); 15*a7e14dcfSSatish Balay 16*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_BLMVM(TaoSolver); 17*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_GPCG(TaoSolver); 18*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_BQPIP(TaoSolver); 19*a7e14dcfSSatish Balay 20*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_POUNDERS(TaoSolver); 21*a7e14dcfSSatish Balay 22*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_FD(TaoSolver); 23*a7e14dcfSSatish Balay 24*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_LCL(TaoSolver); 25*a7e14dcfSSatish Balay 26*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_SSILS(TaoSolver); 27*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_SSFLS(TaoSolver); 28*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_ASILS(TaoSolver); 29*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_ASFLS(TaoSolver); 30*a7e14dcfSSatish Balay 31*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoCreate_IPM(TaoSolver); 32*a7e14dcfSSatish Balay 33*a7e14dcfSSatish Balay /* 34*a7e14dcfSSatish Balay Offset the convergence reasons so negative number represent diverged and 35*a7e14dcfSSatish Balay positive represent converged. 36*a7e14dcfSSatish Balay */ 37*a7e14dcfSSatish Balay const char *TaoSolverTerminationReasons_Shifted[] = { 38*a7e14dcfSSatish Balay "DIVERGED_USER", 39*a7e14dcfSSatish Balay "DIVERGED_TR_REDUCTION", 40*a7e14dcfSSatish Balay "DIVERGED_LS_FAILURE", 41*a7e14dcfSSatish Balay "DIVERGED_MAXFCN", 42*a7e14dcfSSatish Balay "DIVERGED_NAN", 43*a7e14dcfSSatish Balay "DIVERGED_MAXITS", 44*a7e14dcfSSatish Balay "DIVERGED_FUNCTION_DOMAIN", 45*a7e14dcfSSatish Balay 46*a7e14dcfSSatish Balay "CONTINUE_ITERATING", 47*a7e14dcfSSatish Balay 48*a7e14dcfSSatish Balay "CONVERGED_FATOL", 49*a7e14dcfSSatish Balay "CONVERGED_FRTOL", 50*a7e14dcfSSatish Balay "CONVERGED_GATOL", 51*a7e14dcfSSatish Balay "CONVERGED_GRTOL", 52*a7e14dcfSSatish Balay "CONVERGED_GTTOL", 53*a7e14dcfSSatish Balay "CONVERGED_STEPTOL", 54*a7e14dcfSSatish Balay "CONVERGED_MINF", 55*a7e14dcfSSatish Balay "CONVERGED_USER" }; 56*a7e14dcfSSatish Balay const char **TaoSolverTerminationReasons = TaoSolverTerminationReasons_Shifted + 7; 57*a7e14dcfSSatish Balay 58*a7e14dcfSSatish Balay 59*a7e14dcfSSatish Balay 60*a7e14dcfSSatish Balay 61*a7e14dcfSSatish Balay extern PetscBool TaoSolverRegisterAllCalled; 62*a7e14dcfSSatish Balay 63*a7e14dcfSSatish Balay #undef __FUNCT__ 64*a7e14dcfSSatish Balay #define __FUNCT__ "TaoSolverRegisterAll" 65*a7e14dcfSSatish Balay /*@C 66*a7e14dcfSSatish Balay TaoSolverRegisterAll - Registers all of the minimization methods in the TAO 67*a7e14dcfSSatish Balay package. 68*a7e14dcfSSatish Balay 69*a7e14dcfSSatish Balay Not Collective 70*a7e14dcfSSatish Balay 71*a7e14dcfSSatish Balay Level: developer 72*a7e14dcfSSatish Balay 73*a7e14dcfSSatish Balay .seealso TaoSolverRegister(), TaoSolverRegisterDestroy() 74*a7e14dcfSSatish Balay @*/ 75*a7e14dcfSSatish Balay PetscErrorCode TaoSolverRegisterAll() 76*a7e14dcfSSatish Balay { 77*a7e14dcfSSatish Balay PetscErrorCode ierr; 78*a7e14dcfSSatish Balay 79*a7e14dcfSSatish Balay PetscFunctionBegin; 80*a7e14dcfSSatish Balay TaoSolverRegisterAllCalled = PETSC_TRUE; 81*a7e14dcfSSatish Balay 82*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_lmvm",TaoCreate_LMVM); CHKERRQ(ierr); 83*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_nls",TaoCreate_NLS); CHKERRQ(ierr); 84*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_ntr",TaoCreate_NTR); CHKERRQ(ierr); 85*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_ntl",TaoCreate_NTL); CHKERRQ(ierr); 86*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_cg",TaoCreate_CG); CHKERRQ(ierr); 87*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_tron",TaoCreate_TRON); CHKERRQ(ierr); 88*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_owlqn",TaoCreate_OWLQN); CHKERRQ(ierr); 89*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_bmrm",TaoCreate_BMRM); CHKERRQ(ierr); 90*a7e14dcfSSatish Balay 91*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_blmvm",TaoCreate_BLMVM); CHKERRQ(ierr); 92*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_bqpip",TaoCreate_BQPIP); CHKERRQ(ierr); 93*a7e14dcfSSatish Balay 94*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_gpcg",TaoCreate_GPCG); CHKERRQ(ierr); 95*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_nm",TaoCreate_NM); CHKERRQ(ierr); 96*a7e14dcfSSatish Balay 97*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_pounders",TaoCreate_POUNDERS); CHKERRQ(ierr); 98*a7e14dcfSSatish Balay 99*a7e14dcfSSatish Balay 100*a7e14dcfSSatish Balay 101*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_lcl",TaoCreate_LCL); CHKERRQ(ierr); 102*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_ssils",TaoCreate_SSILS); CHKERRQ(ierr); 103*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_ssfls",TaoCreate_SSFLS); CHKERRQ(ierr); 104*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_asils",TaoCreate_ASILS); CHKERRQ(ierr); 105*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_asfls",TaoCreate_ASFLS); CHKERRQ(ierr); 106*a7e14dcfSSatish Balay 107*a7e14dcfSSatish Balay 108*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_ipm",TaoCreate_IPM); CHKERRQ(ierr); 109*a7e14dcfSSatish Balay 110*a7e14dcfSSatish Balay 111*a7e14dcfSSatish Balay 112*a7e14dcfSSatish Balay ierr = TaoSolverRegister("tao_fd_test",TaoCreate_FD); CHKERRQ(ierr); 113*a7e14dcfSSatish Balay 114*a7e14dcfSSatish Balay 115*a7e14dcfSSatish Balay 116*a7e14dcfSSatish Balay PetscFunctionReturn(0); 117*a7e14dcfSSatish Balay } 118*a7e14dcfSSatish Balay 119*a7e14dcfSSatish Balay 120