1441846f8SBarry Smith #define TAO_DLL 2a7e14dcfSSatish Balay 3*af0996ceSBarry Smith #include <petsc/private/taoimpl.h> 4a7e14dcfSSatish Balay 5a7e14dcfSSatish Balay static PetscBool TaoPackageInitialized = PETSC_FALSE; 6a7e14dcfSSatish Balay 7a7e14dcfSSatish Balay #undef __FUNCT__ 8a7e14dcfSSatish Balay #define __FUNCT__ "TaoFinalizePackage" 9a7e14dcfSSatish Balay /*@C 10a7e14dcfSSatish Balay TaoFinalizePackage - This function destroys everything in the PETSc/TAO 11441846f8SBarry Smith interface to the Tao package. It is called from PetscFinalize(). 12a7e14dcfSSatish Balay 13a7e14dcfSSatish Balay Level: developer 14a7e14dcfSSatish Balay @*/ 15a7e14dcfSSatish Balay PetscErrorCode TaoFinalizePackage(void) 16a7e14dcfSSatish Balay { 17a7e14dcfSSatish Balay PetscErrorCode ierr; 18a7e14dcfSSatish Balay 19a7e14dcfSSatish Balay PetscFunctionBegin; 20441846f8SBarry Smith ierr = PetscFunctionListDestroy(&TaoList);CHKERRQ(ierr); 21a7e14dcfSSatish Balay TaoPackageInitialized = PETSC_FALSE; 22a7e14dcfSSatish Balay PetscFunctionReturn(0); 23a7e14dcfSSatish Balay } 24a7e14dcfSSatish Balay 25a7e14dcfSSatish Balay #undef __FUNCT__ 26a7e14dcfSSatish Balay #define __FUNCT__ "TaoInitializePackage" 27a7e14dcfSSatish Balay /*@C 28441846f8SBarry Smith TaoInitializePackage - This function sets up PETSc to use the Tao 29a7e14dcfSSatish Balay package. When using static libraries, this function is called from the 30a7e14dcfSSatish Balay first entry to TaoCreate(); when using shared libraries, it is called 31a7e14dcfSSatish Balay from PetscDLLibraryRegister() 32a7e14dcfSSatish Balay 33a7e14dcfSSatish Balay Level: developer 34a7e14dcfSSatish Balay 35a7e14dcfSSatish Balay .seealso: TaoCreate() 36a7e14dcfSSatish Balay @*/ 37600047eeSSatish Balay PetscErrorCode TaoInitializePackage(void) 38a7e14dcfSSatish Balay { 39a7e14dcfSSatish Balay PetscErrorCode ierr; 40a7e14dcfSSatish Balay 41a7e14dcfSSatish Balay PetscFunctionBegin; 42a7e14dcfSSatish Balay 43a7e14dcfSSatish Balay if (TaoPackageInitialized) PetscFunctionReturn(0); 44a7e14dcfSSatish Balay TaoPackageInitialized = PETSC_TRUE; 45a7e14dcfSSatish Balay 46441846f8SBarry Smith ierr = PetscClassIdRegister("Tao",&TAO_CLASSID);CHKERRQ(ierr); 47a7e14dcfSSatish Balay 48a7e14dcfSSatish Balay /* Tell PETSc what solvers are available */ 49441846f8SBarry Smith ierr = TaoRegisterAll();CHKERRQ(ierr); 50a7e14dcfSSatish Balay 51441846f8SBarry Smith /* Tell PETSc what events are associated with Tao */ 52441846f8SBarry Smith ierr = PetscLogEventRegister("TaoSolve",TAO_CLASSID,&Tao_Solve);CHKERRQ(ierr); 53441846f8SBarry Smith ierr = PetscLogEventRegister("TaoObjectiveEval",TAO_CLASSID,&Tao_ObjectiveEval);CHKERRQ(ierr); 54441846f8SBarry Smith ierr = PetscLogEventRegister("TaoGradientEval",TAO_CLASSID,&Tao_GradientEval);CHKERRQ(ierr); 55441846f8SBarry Smith ierr = PetscLogEventRegister("TaoHessianEval",TAO_CLASSID,&Tao_HessianEval);CHKERRQ(ierr); 56441846f8SBarry Smith ierr = PetscLogEventRegister("TaoConstraintsEval",TAO_CLASSID,&Tao_ConstraintsEval);CHKERRQ(ierr); 57441846f8SBarry Smith ierr = PetscLogEventRegister("TaoJacobianEval",TAO_CLASSID,&Tao_JacobianEval);CHKERRQ(ierr); 58a7e14dcfSSatish Balay 59a7e14dcfSSatish Balay ierr = PetscRegisterFinalize(TaoFinalizePackage);CHKERRQ(ierr); 60a7e14dcfSSatish Balay PetscFunctionReturn(0); 61a7e14dcfSSatish Balay } 62a7e14dcfSSatish Balay 63a7e14dcfSSatish Balay #ifdef PETSC_USE_DYNAMIC_LIBRARIES 64a7e14dcfSSatish Balay #undef __FUNCT__ 65a7e14dcfSSatish Balay #define __FUNCT__ "PetscDLLibraryRegister_tao" 66a7e14dcfSSatish Balay /* 67a7e14dcfSSatish Balay PetscDLLibraryRegister - this function is called when the dynamic library it 68a7e14dcfSSatish Balay is in is opened. 69a7e14dcfSSatish Balay 70441846f8SBarry Smith This registers all of the Tao methods that are in the libtao 71a7e14dcfSSatish Balay library. 72a7e14dcfSSatish Balay 73a7e14dcfSSatish Balay Input Parameter: 74a7e14dcfSSatish Balay . path - library path 75a7e14dcfSSatish Balay */ 76a7e14dcfSSatish Balay 77a7e14dcfSSatish Balay PETSC_EXTERN PetscErrorCode PetscDLLibraryRegister_tao(void) 78a7e14dcfSSatish Balay { 79a7e14dcfSSatish Balay PetscErrorCode ierr; 80a7e14dcfSSatish Balay 81a7e14dcfSSatish Balay PetscFunctionBegin; 82a7e14dcfSSatish Balay ierr = TaoInitializePackage();CHKERRQ(ierr); 83a7e14dcfSSatish Balay ierr = TaoLineSearchInitializePackage();CHKERRQ(ierr); 84a7e14dcfSSatish Balay PetscFunctionReturn(0); 85a7e14dcfSSatish Balay } 86a7e14dcfSSatish Balay 87a7e14dcfSSatish Balay #endif /* PETSC_USE_DYNAMIC_LIBRARIES */ 88