1 #if !defined(PETSCTAOLINESEARCH_H) 2 #define PETSCTAOLINESEARCH_H 3 4 typedef struct _p_TaoLineSearch* TaoLineSearch; 5 6 #include <petsctao.h> 7 8 typedef enum { 9 TAOLINESEARCH_FAILED_INFORNAN = -1, 10 TAOLINESEARCH_FAILED_BADPARAMETER = -2, 11 TAOLINESEARCH_FAILED_ASCENT = -3, 12 TAOLINESEARCH_CONTINUE_ITERATING = 0, 13 TAOLINESEARCH_SUCCESS = 1, 14 TAOLINESEARCH_SUCCESS_USER = 2, 15 TAOLINESEARCH_HALTED_OTHER = 3, 16 TAOLINESEARCH_HALTED_MAXFCN = 4, 17 TAOLINESEARCH_HALTED_UPPERBOUND = 5, 18 TAOLINESEARCH_HALTED_LOWERBOUND = 6, 19 TAOLINESEARCH_HALTED_RTOL = 7, 20 TAOLINESEARCH_HALTED_USER = 8 21 } TaoLineSearchConvergedReason; 22 23 typedef const char *TaoLineSearchType; 24 #define TAOLINESEARCHUNIT "unit" 25 #define TAOLINESEARCHMT "more-thuente" 26 #define TAOLINESEARCHGPCG "gpcg" 27 #define TAOLINESEARCHARMIJO "armijo" 28 #define TAOLINESEARCHOWARMIJO "owarmijo" 29 #define TAOLINESEARCHIPM "ipm" 30 31 PETSC_EXTERN PetscClassId TAOLINESEARCH_CLASSID; 32 PETSC_EXTERN PetscFunctionList TaoLineSearchList; 33 34 PETSC_EXTERN PetscErrorCode TaoLineSearchCreate(MPI_Comm,TaoLineSearch*); 35 PETSC_EXTERN PetscErrorCode TaoLineSearchSetFromOptions(TaoLineSearch); 36 PETSC_EXTERN PetscErrorCode TaoLineSearchSetUp(TaoLineSearch); 37 PETSC_EXTERN PetscErrorCode TaoLineSearchDestroy(TaoLineSearch*); 38 PETSC_EXTERN PetscErrorCode TaoLineSearchMonitor(TaoLineSearch,PetscInt,PetscReal,PetscReal); 39 PETSC_EXTERN PetscErrorCode TaoLineSearchView(TaoLineSearch,PetscViewer); 40 PETSC_EXTERN PetscErrorCode TaoLineSearchViewFromOptions(TaoLineSearch,PetscObject,const char[]); 41 42 PETSC_EXTERN PetscErrorCode TaoLineSearchSetOptionsPrefix(TaoLineSearch,const char prefix[]); 43 PETSC_EXTERN PetscErrorCode TaoLineSearchReset(TaoLineSearch); 44 PETSC_EXTERN PetscErrorCode TaoLineSearchAppendOptionsPrefix(TaoLineSearch,const char[]); 45 PETSC_EXTERN PetscErrorCode TaoLineSearchGetOptionsPrefix(TaoLineSearch,const char*[]); 46 PETSC_EXTERN PetscErrorCode TaoLineSearchApply(TaoLineSearch,Vec,PetscReal*,Vec,Vec,PetscReal*,TaoLineSearchConvergedReason*); 47 PETSC_EXTERN PetscErrorCode TaoLineSearchGetStepLength(TaoLineSearch,PetscReal*); 48 PETSC_EXTERN PetscErrorCode TaoLineSearchGetStartingVector(TaoLineSearch,Vec*); 49 PETSC_EXTERN PetscErrorCode TaoLineSearchGetStepDirection(TaoLineSearch,Vec*); 50 PETSC_EXTERN PetscErrorCode TaoLineSearchSetInitialStepLength(TaoLineSearch,PetscReal); 51 PETSC_EXTERN PetscErrorCode TaoLineSearchGetSolution(TaoLineSearch,Vec,PetscReal*,Vec,PetscReal*,TaoLineSearchConvergedReason*); 52 PETSC_EXTERN PetscErrorCode TaoLineSearchGetFullStepObjective(TaoLineSearch,PetscReal*); 53 PETSC_EXTERN PetscErrorCode TaoLineSearchGetNumberFunctionEvaluations(TaoLineSearch,PetscInt*,PetscInt*,PetscInt*); 54 55 PETSC_EXTERN PetscErrorCode TaoLineSearchGetType(TaoLineSearch,TaoLineSearchType*); 56 PETSC_EXTERN PetscErrorCode TaoLineSearchSetType(TaoLineSearch,TaoLineSearchType); 57 58 PETSC_EXTERN PetscErrorCode TaoLineSearchIsUsingTaoRoutines(TaoLineSearch,PetscBool*); 59 PETSC_EXTERN PetscErrorCode TaoLineSearchSetObjectiveAndGTSRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,Vec,PetscReal*,PetscReal*,void*),void*); 60 PETSC_EXTERN PetscErrorCode TaoLineSearchSetObjectiveRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,PetscReal*,void*),void*); 61 PETSC_EXTERN PetscErrorCode TaoLineSearchSetGradientRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,Vec,void*),void*); 62 PETSC_EXTERN PetscErrorCode TaoLineSearchSetObjectiveAndGradientRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,PetscReal*,Vec,void*),void*); 63 64 PETSC_EXTERN PetscErrorCode TaoLineSearchComputeObjective(TaoLineSearch,Vec,PetscReal*); 65 PETSC_EXTERN PetscErrorCode TaoLineSearchComputeGradient(TaoLineSearch,Vec,Vec); 66 PETSC_EXTERN PetscErrorCode TaoLineSearchComputeObjectiveAndGradient(TaoLineSearch,Vec,PetscReal*,Vec); 67 PETSC_EXTERN PetscErrorCode TaoLineSearchComputeObjectiveAndGTS(TaoLineSearch,Vec,PetscReal*,PetscReal*); 68 PETSC_EXTERN PetscErrorCode TaoLineSearchSetVariableBounds(TaoLineSearch,Vec,Vec); 69 70 PETSC_EXTERN PetscErrorCode TaoLineSearchInitializePackage(void); 71 PETSC_EXTERN PetscErrorCode TaoLineSearchFinalizePackage(void); 72 73 PETSC_EXTERN PetscErrorCode TaoLineSearchRegister(const char[],PetscErrorCode (*)(TaoLineSearch)); 74 PETSC_EXTERN PetscErrorCode TaoLineSearchUseTaoRoutines(TaoLineSearch,Tao); 75 76 #endif 77