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