Actual source code: dlregis_taolinesearch.c

  1: #define TAOLINESEARCH_DLL
  2: #include <petsc/private/taolinesearchimpl.h>

  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;

 11: /*@C
 12:   TaoLineSearchFinalizePackage - This function destroys everything in the `TaoLineSearch` package. It is called from `PetscFinalize()`.

 14:   Level: developer

 16: .seealso: `Tao`, `TaoLineSearch`
 17: @*/
 18: PetscErrorCode TaoLineSearchFinalizePackage(void)
 19: {
 20:   PetscFunctionBegin;
 21:   PetscCall(PetscFunctionListDestroy(&TaoLineSearchList));
 22:   TaoLineSearchPackageInitialized = PETSC_FALSE;
 23:   PetscFunctionReturn(PETSC_SUCCESS);
 24: }

 26: /*@C
 27:   TaoLineSearchInitializePackage - This function registers the line-search
 28:   algorithms in `Tao`.  When using shared or static libraries, this function is called from the
 29:   first entry to `TaoCreate()`; when using dynamic, it is called
 30:   from PetscDLLibraryRegister_tao()

 32:   Level: developer

 34: .seealso: `Tao`, `TaoLineSearch`, `TaoLineSearchCreate()`
 35: @*/
 36: PetscErrorCode TaoLineSearchInitializePackage(void)
 37: {
 38:   PetscFunctionBegin;
 39:   if (TaoLineSearchPackageInitialized) PetscFunctionReturn(PETSC_SUCCESS);
 40:   TaoLineSearchPackageInitialized = PETSC_TRUE;
 41: #if !defined(PETSC_USE_COMPLEX)
 42:   PetscCall(PetscClassIdRegister("TaoLineSearch", &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: }