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