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