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