xref: /petsc/src/tao/interface/taosolverregi.c (revision a7e14dcfba0d07adf6226a919460249440ec94c7)
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