1 #define TAOLINESEARCH_DLL 2 #include <petsc/private/taolinesearchimpl.h> 3 4 5 PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_Unit(TaoLineSearch); 6 PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_MT(TaoLineSearch); 7 PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_GPCG(TaoLineSearch); 8 PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_Armijo(TaoLineSearch); 9 PETSC_EXTERN PetscErrorCode TaoLineSearchCreate_OWArmijo(TaoLineSearch); 10 static PetscBool TaoLineSearchPackageInitialized = PETSC_FALSE; 11 12 /*@C 13 TaoLineSearchFinalizePackage - This function destroys everything in the PETSc/TAO 14 interface to the TaoLineSearch package. It is called from PetscFinalize(). 15 16 Level: developer 17 @*/ 18 PetscErrorCode TaoLineSearchFinalizePackage(void) 19 { 20 PetscErrorCode ierr; 21 22 PetscFunctionBegin; 23 ierr = PetscFunctionListDestroy(&TaoLineSearchList);CHKERRQ(ierr); 24 TaoLineSearchPackageInitialized = PETSC_FALSE; 25 PetscFunctionReturn(0); 26 } 27 28 /*@C 29 TaoLineSearchInitializePackage - This function registers the line-search 30 algorithms in TAO. 31 When using static libraries, this function is called from the 32 first entry to TaoCreate(); when using shared libraries, it is called 33 from PetscDLLibraryRegister() 34 35 Level: developer 36 37 .seealso: TaoLineSearchCreate() 38 @*/ 39 PetscErrorCode TaoLineSearchInitializePackage(void) 40 { 41 PetscErrorCode ierr; 42 43 PetscFunctionBegin; 44 if (TaoLineSearchPackageInitialized) PetscFunctionReturn(0); 45 TaoLineSearchPackageInitialized=PETSC_TRUE; 46 #if !defined(PETSC_USE_COMPLEX) 47 ierr = PetscClassIdRegister("TaoLineSearch",&TAOLINESEARCH_CLASSID);CHKERRQ(ierr); 48 ierr = TaoLineSearchRegister("unit",TaoLineSearchCreate_Unit);CHKERRQ(ierr); 49 ierr = TaoLineSearchRegister("more-thuente",TaoLineSearchCreate_MT);CHKERRQ(ierr); 50 ierr = TaoLineSearchRegister("gpcg",TaoLineSearchCreate_GPCG);CHKERRQ(ierr); 51 ierr = TaoLineSearchRegister("armijo",TaoLineSearchCreate_Armijo);CHKERRQ(ierr); 52 ierr = TaoLineSearchRegister("owarmijo",TaoLineSearchCreate_OWArmijo);CHKERRQ(ierr); 53 ierr = PetscLogEventRegister("TaoLineSearchApply",TAOLINESEARCH_CLASSID,&TaoLineSearch_ApplyEvent);CHKERRQ(ierr); 54 ierr = PetscLogEventRegister("TaoLineSearchComputeObjective[Gradient]",TAOLINESEARCH_CLASSID,&TaoLineSearch_EvalEvent);CHKERRQ(ierr); 55 #endif 56 ierr = PetscRegisterFinalize(TaoLineSearchFinalizePackage);CHKERRQ(ierr); 57 PetscFunctionReturn(0); 58 } 59 60 61 62