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