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