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