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