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 PETSc/TAO
 13:   interface to the TaoLineSearch package. It is called from PetscFinalize().

 15:   Level: developer
 16: @*/
 17: PetscErrorCode TaoLineSearchFinalizePackage(void)
 18: {
 19:   PetscFunctionListDestroy(&TaoLineSearchList);
 20:   TaoLineSearchPackageInitialized = PETSC_FALSE;
 21:   return 0;
 22: }

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

 30:   Level: developer

 32: .seealso: `TaoLineSearchCreate()`
 33: @*/
 34: PetscErrorCode TaoLineSearchInitializePackage(void)
 35: {
 36:   if (TaoLineSearchPackageInitialized) return 0;
 37:   TaoLineSearchPackageInitialized = PETSC_TRUE;
 38: #if !defined(PETSC_USE_COMPLEX)
 39:   PetscClassIdRegister("TaoLineSearch", &TAOLINESEARCH_CLASSID);
 40:   TaoLineSearchRegister("unit", TaoLineSearchCreate_Unit);
 41:   TaoLineSearchRegister("more-thuente", TaoLineSearchCreate_MT);
 42:   TaoLineSearchRegister("gpcg", TaoLineSearchCreate_GPCG);
 43:   TaoLineSearchRegister("armijo", TaoLineSearchCreate_Armijo);
 44:   TaoLineSearchRegister("owarmijo", TaoLineSearchCreate_OWArmijo);
 45:   PetscLogEventRegister("TaoLSApply", TAOLINESEARCH_CLASSID, &TAOLINESEARCH_Apply);
 46:   PetscLogEventRegister("TaoLSEval", TAOLINESEARCH_CLASSID, &TAOLINESEARCH_Eval);
 47: #endif
 48:   PetscRegisterFinalize(TaoLineSearchFinalizePackage);
 49:   return 0;
 50: }