Actual source code: dlregis_taolinesearch.c
1: #include <petsc/private/taolinesearchimpl.h>
3: PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_Unit(TaoLineSearch);
4: PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_MT(TaoLineSearch);
5: PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_GPCG(TaoLineSearch);
6: PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_Armijo(TaoLineSearch);
7: PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_OWArmijo(TaoLineSearch);
8: static PetscBool TaoLineSearchPackageInitialized = PETSC_FALSE;
10: /*@C
11: TaoLineSearchFinalizePackage - This function destroys everything in the `TaoLineSearch` package. It is called from `PetscFinalize()`.
13: Level: developer
15: .seealso: `Tao`, `TaoLineSearch`
16: @*/
17: PetscErrorCode TaoLineSearchFinalizePackage(void)
18: {
19: PetscFunctionBegin;
20: PetscCall(PetscFunctionListDestroy(&TaoLineSearchList));
21: TaoLineSearchPackageInitialized = PETSC_FALSE;
22: PetscFunctionReturn(PETSC_SUCCESS);
23: }
25: /*@C
26: TaoLineSearchInitializePackage - This function registers the line-search
27: algorithms in `Tao`. When using shared or static libraries, this function is called from the
28: first entry to `TaoCreate()`; when using dynamic, it is called
29: from PetscDLLibraryRegister_tao()
31: Level: developer
33: .seealso: `Tao`, `TaoLineSearch`, `TaoLineSearchCreate()`
34: @*/
35: PetscErrorCode TaoLineSearchInitializePackage(void)
36: {
37: PetscFunctionBegin;
38: if (TaoLineSearchPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
39: TaoLineSearchPackageInitialized = PETSC_TRUE;
40: #if !defined(PETSC_USE_COMPLEX)
41: PetscCall(PetscClassIdRegister("TaoLineSearch", &TAOLINESEARCH_CLASSID));
42: PetscCall(PetscInfoProcessClass("taolinesearch", 1, &TAOLINESEARCH_CLASSID));
43: PetscCall(TaoLineSearchRegister("unit", TaoLineSearchCreate_Unit));
44: PetscCall(TaoLineSearchRegister("more-thuente", TaoLineSearchCreate_MT));
45: PetscCall(TaoLineSearchRegister("gpcg", TaoLineSearchCreate_GPCG));
46: PetscCall(TaoLineSearchRegister("armijo", TaoLineSearchCreate_Armijo));
47: PetscCall(TaoLineSearchRegister("owarmijo", TaoLineSearchCreate_OWArmijo));
48: PetscCall(PetscLogEventRegister("TaoLSApply", TAOLINESEARCH_CLASSID, &TAOLINESEARCH_Apply));
49: PetscCall(PetscLogEventRegister("TaoLSEval", TAOLINESEARCH_CLASSID, &TAOLINESEARCH_Eval));
50: #endif
51: PetscCall(PetscRegisterFinalize(TaoLineSearchFinalizePackage));
52: PetscFunctionReturn(PETSC_SUCCESS);
53: }