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