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