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