xref: /petsc/src/tao/linesearch/interface/dlregis_taolinesearch.c (revision 8a690491e6c6c591ad1bff5657f43271c38b9863)
1a7e14dcfSSatish Balay #define TAOLINESEARCH_DLL
2af0996ceSBarry 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 static PetscBool TaoLineSearchPackageInitialized = PETSC_FALSE;
11a7e14dcfSSatish Balay 
12a7e14dcfSSatish Balay /*@C
13a7e14dcfSSatish Balay   TaoLineSearchFinalizePackage - This function destroys everything in the PETSc/TAO
14a7e14dcfSSatish Balay   interface to the TaoLineSearch package. It is called from PetscFinalize().
15a7e14dcfSSatish Balay 
16a7e14dcfSSatish Balay   Level: developer
17a7e14dcfSSatish Balay @*/
18a7e14dcfSSatish Balay PetscErrorCode TaoLineSearchFinalizePackage(void)
19a7e14dcfSSatish Balay {
20a7e14dcfSSatish Balay   PetscErrorCode ierr;
21a7e14dcfSSatish Balay 
22a7e14dcfSSatish Balay   PetscFunctionBegin;
23a7e14dcfSSatish Balay   ierr = PetscFunctionListDestroy(&TaoLineSearchList);CHKERRQ(ierr);
24a7e14dcfSSatish Balay   TaoLineSearchPackageInitialized = PETSC_FALSE;
25a7e14dcfSSatish Balay   PetscFunctionReturn(0);
26a7e14dcfSSatish Balay }
27a7e14dcfSSatish Balay 
28a7e14dcfSSatish Balay /*@C
29a7e14dcfSSatish Balay   TaoLineSearchInitializePackage - This function registers the line-search
30*8a690491SBarry Smith   algorithms in TAO.  When using shared or static libraries, this function is called from the
31*8a690491SBarry Smith   first entry to TaoCreate(); when using dynamic, it is called
32*8a690491SBarry Smith   from PetscDLLibraryRegister_tao()
33a7e14dcfSSatish Balay 
34a7e14dcfSSatish Balay   Level: developer
35a7e14dcfSSatish Balay 
36a7e14dcfSSatish Balay .seealso: TaoLineSearchCreate()
37a7e14dcfSSatish Balay @*/
38600047eeSSatish Balay PetscErrorCode TaoLineSearchInitializePackage(void)
39a7e14dcfSSatish Balay {
40a7e14dcfSSatish Balay   PetscErrorCode ierr;
41a7e14dcfSSatish Balay 
42a7e14dcfSSatish Balay   PetscFunctionBegin;
43a7e14dcfSSatish Balay   if (TaoLineSearchPackageInitialized) PetscFunctionReturn(0);
44a7e14dcfSSatish Balay   TaoLineSearchPackageInitialized=PETSC_TRUE;
4546bdf8c8SLisandro Dalcin #if !defined(PETSC_USE_COMPLEX)
46a7e14dcfSSatish Balay   ierr = PetscClassIdRegister("TaoLineSearch",&TAOLINESEARCH_CLASSID);CHKERRQ(ierr);
47a7e14dcfSSatish Balay   ierr = TaoLineSearchRegister("unit",TaoLineSearchCreate_Unit);CHKERRQ(ierr);
48a7e14dcfSSatish Balay   ierr = TaoLineSearchRegister("more-thuente",TaoLineSearchCreate_MT);CHKERRQ(ierr);
49a7e14dcfSSatish Balay   ierr = TaoLineSearchRegister("gpcg",TaoLineSearchCreate_GPCG);CHKERRQ(ierr);
50a7e14dcfSSatish Balay   ierr = TaoLineSearchRegister("armijo",TaoLineSearchCreate_Armijo);CHKERRQ(ierr);
51a7e14dcfSSatish Balay   ierr = TaoLineSearchRegister("owarmijo",TaoLineSearchCreate_OWArmijo);CHKERRQ(ierr);
520ebee16dSLisandro Dalcin   ierr = PetscLogEventRegister("TaoLineSearchApply",TAOLINESEARCH_CLASSID,&TAOLINESEARCH_Apply);CHKERRQ(ierr);
530ebee16dSLisandro Dalcin   ierr = PetscLogEventRegister("TaoLineSearchEval", TAOLINESEARCH_CLASSID,&TAOLINESEARCH_Eval);CHKERRQ(ierr);
5446bdf8c8SLisandro Dalcin #endif
55a7e14dcfSSatish Balay   ierr = PetscRegisterFinalize(TaoLineSearchFinalizePackage);CHKERRQ(ierr);
56a7e14dcfSSatish Balay   PetscFunctionReturn(0);
57a7e14dcfSSatish Balay }
58a7e14dcfSSatish Balay 
59a7e14dcfSSatish Balay 
60a7e14dcfSSatish Balay 
61