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:   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: `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(TaoLineSearchRegister("unit", TaoLineSearchCreate_Unit));
 43:   PetscCall(TaoLineSearchRegister("more-thuente", TaoLineSearchCreate_MT));
 44:   PetscCall(TaoLineSearchRegister("gpcg", TaoLineSearchCreate_GPCG));
 45:   PetscCall(TaoLineSearchRegister("armijo", TaoLineSearchCreate_Armijo));
 46:   PetscCall(TaoLineSearchRegister("owarmijo", TaoLineSearchCreate_OWArmijo));
 47:   PetscCall(PetscLogEventRegister("TaoLSApply", TAOLINESEARCH_CLASSID, &TAOLINESEARCH_Apply));
 48:   PetscCall(PetscLogEventRegister("TaoLSEval", TAOLINESEARCH_CLASSID, &TAOLINESEARCH_Eval));
 49: #endif
 50:   PetscCall(PetscRegisterFinalize(TaoLineSearchFinalizePackage));
 51:   PetscFunctionReturn(PETSC_SUCCESS);
 52: }