xref: /petsc/src/tao/linesearch/interface/dlregis_taolinesearch.c (revision a7e14dcfba0d07adf6226a919460249440ec94c7)
1*a7e14dcfSSatish Balay #define TAOLINESEARCH_DLL
2*a7e14dcfSSatish Balay #include "tao-private/taolinesearch_impl.h"
3*a7e14dcfSSatish Balay 
4*a7e14dcfSSatish Balay 
5*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_Unit(TaoLineSearch);
6*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_MT(TaoLineSearch);
7*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_GPCG(TaoLineSearch);
8*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_Armijo(TaoLineSearch);
9*a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_OWArmijo(TaoLineSearch);
10*a7e14dcfSSatish Balay 
11*a7e14dcfSSatish Balay 
12*a7e14dcfSSatish Balay static PetscBool TaoLineSearchPackageInitialized = PETSC_FALSE;
13*a7e14dcfSSatish Balay 
14*a7e14dcfSSatish Balay 
15*a7e14dcfSSatish Balay 
16*a7e14dcfSSatish Balay 
17*a7e14dcfSSatish Balay 
18*a7e14dcfSSatish Balay #undef __FUNCT__
19*a7e14dcfSSatish Balay #define __FUNCT__ "TaoLineSearchFinalizePackage"
20*a7e14dcfSSatish Balay /*@C
21*a7e14dcfSSatish Balay   TaoLineSearchFinalizePackage - This function destroys everything in the PETSc/TAO
22*a7e14dcfSSatish Balay   interface to the TaoLineSearch package. It is called from PetscFinalize().
23*a7e14dcfSSatish Balay 
24*a7e14dcfSSatish Balay   Level: developer
25*a7e14dcfSSatish Balay @*/
26*a7e14dcfSSatish Balay PetscErrorCode TaoLineSearchFinalizePackage(void)
27*a7e14dcfSSatish Balay {
28*a7e14dcfSSatish Balay   PetscErrorCode ierr;
29*a7e14dcfSSatish Balay 
30*a7e14dcfSSatish Balay   PetscFunctionBegin;
31*a7e14dcfSSatish Balay   ierr = PetscFunctionListDestroy(&TaoLineSearchList); CHKERRQ(ierr);
32*a7e14dcfSSatish Balay   TaoLineSearchPackageInitialized = PETSC_FALSE;
33*a7e14dcfSSatish Balay   PetscFunctionReturn(0);
34*a7e14dcfSSatish Balay }
35*a7e14dcfSSatish Balay 
36*a7e14dcfSSatish Balay 
37*a7e14dcfSSatish Balay #undef __FUNCT__
38*a7e14dcfSSatish Balay #define __FUNCT__ "TaoLineSearchInitializePackage"
39*a7e14dcfSSatish Balay /*@C
40*a7e14dcfSSatish Balay   TaoLineSearchInitializePackage - This function registers the line-search
41*a7e14dcfSSatish Balay   algorithms in TAO.
42*a7e14dcfSSatish Balay   When using static libraries, this function is called from the
43*a7e14dcfSSatish Balay   first entry to TaoCreate(); when using shared libraries, it is called
44*a7e14dcfSSatish Balay   from PetscDLLibraryRegister()
45*a7e14dcfSSatish Balay 
46*a7e14dcfSSatish Balay   Level: developer
47*a7e14dcfSSatish Balay 
48*a7e14dcfSSatish Balay .seealso: TaoLineSearchCreate()
49*a7e14dcfSSatish Balay @*/
50*a7e14dcfSSatish Balay PetscErrorCode TaoLineSearchInitializePackage()
51*a7e14dcfSSatish Balay {
52*a7e14dcfSSatish Balay     PetscErrorCode ierr;
53*a7e14dcfSSatish Balay 
54*a7e14dcfSSatish Balay     PetscFunctionBegin;
55*a7e14dcfSSatish Balay     if (TaoLineSearchPackageInitialized) PetscFunctionReturn(0);
56*a7e14dcfSSatish Balay     TaoLineSearchPackageInitialized=PETSC_TRUE;
57*a7e14dcfSSatish Balay 
58*a7e14dcfSSatish Balay     ierr = PetscClassIdRegister("TaoLineSearch",&TAOLINESEARCH_CLASSID); CHKERRQ(ierr);
59*a7e14dcfSSatish Balay 
60*a7e14dcfSSatish Balay 
61*a7e14dcfSSatish Balay     ierr = TaoLineSearchRegister("unit",TaoLineSearchCreate_Unit); CHKERRQ(ierr);
62*a7e14dcfSSatish Balay     ierr = TaoLineSearchRegister("more-thuente",TaoLineSearchCreate_MT); CHKERRQ(ierr);
63*a7e14dcfSSatish Balay     ierr = TaoLineSearchRegister("gpcg",TaoLineSearchCreate_GPCG); CHKERRQ(ierr);
64*a7e14dcfSSatish Balay     ierr = TaoLineSearchRegister("armijo",TaoLineSearchCreate_Armijo); CHKERRQ(ierr);
65*a7e14dcfSSatish Balay     ierr = TaoLineSearchRegister("owarmijo",TaoLineSearchCreate_OWArmijo); CHKERRQ(ierr);
66*a7e14dcfSSatish Balay 
67*a7e14dcfSSatish Balay     ierr = PetscLogEventRegister(  "TaoLineSearchApply",TAOLINESEARCH_CLASSID,&TaoLineSearch_ApplyEvent); CHKERRQ(ierr);
68*a7e14dcfSSatish Balay     ierr = PetscLogEventRegister("TaoLineSearchComputeObjective[Gradient]",TAOLINESEARCH_CLASSID,&TaoLineSearch_EvalEvent); CHKERRQ(ierr);
69*a7e14dcfSSatish Balay     ierr = PetscRegisterFinalize(TaoLineSearchFinalizePackage); CHKERRQ(ierr);
70*a7e14dcfSSatish Balay     PetscFunctionReturn(0);
71*a7e14dcfSSatish Balay }
72*a7e14dcfSSatish Balay 
73*a7e14dcfSSatish Balay 
74*a7e14dcfSSatish Balay 
75