1*b54963c9SStefano Zampini #if !defined(PETSCTAOLINESEARCH_H) 23028902dSLisandro Dalcin #define PETSCTAOLINESEARCH_H 321ec2d5cSBarry Smith 421ec2d5cSBarry Smith typedef struct _p_TaoLineSearch* TaoLineSearch; 5*b54963c9SStefano Zampini 6*b54963c9SStefano Zampini #include <petsctao.h> 7*b54963c9SStefano Zampini 821ec2d5cSBarry Smith typedef enum { 921ec2d5cSBarry Smith TAOLINESEARCH_FAILED_INFORNAN = -1, 1021ec2d5cSBarry Smith TAOLINESEARCH_FAILED_BADPARAMETER = -2, 1121ec2d5cSBarry Smith TAOLINESEARCH_FAILED_ASCENT = -3, 1221ec2d5cSBarry Smith TAOLINESEARCH_CONTINUE_ITERATING = 0, 1321ec2d5cSBarry Smith TAOLINESEARCH_SUCCESS = 1, 1421ec2d5cSBarry Smith TAOLINESEARCH_SUCCESS_USER = 2, 1521ec2d5cSBarry Smith TAOLINESEARCH_HALTED_OTHER = 3, 1621ec2d5cSBarry Smith TAOLINESEARCH_HALTED_MAXFCN = 4, 1721ec2d5cSBarry Smith TAOLINESEARCH_HALTED_UPPERBOUND = 5, 1821ec2d5cSBarry Smith TAOLINESEARCH_HALTED_LOWERBOUND = 6, 1921ec2d5cSBarry Smith TAOLINESEARCH_HALTED_RTOL = 7, 2021ec2d5cSBarry Smith TAOLINESEARCH_HALTED_USER = 8 21e4cb33bbSBarry Smith } TaoLineSearchConvergedReason; 2221ec2d5cSBarry Smith 23dedfbcbeSJed Brown typedef const char *TaoLineSearchType; 248caf6e8cSBarry Smith #define TAOLINESEARCHUNIT "unit" 258caf6e8cSBarry Smith #define TAOLINESEARCHMT "more-thuente" 268caf6e8cSBarry Smith #define TAOLINESEARCHGPCG "gpcg" 278caf6e8cSBarry Smith #define TAOLINESEARCHARMIJO "armijo" 288caf6e8cSBarry Smith #define TAOLINESEARCHOWARMIJO "owarmijo" 298caf6e8cSBarry Smith #define TAOLINESEARCHIPM "ipm" 3021ec2d5cSBarry Smith 3121ec2d5cSBarry Smith PETSC_EXTERN PetscClassId TAOLINESEARCH_CLASSID; 3221ec2d5cSBarry Smith PETSC_EXTERN PetscFunctionList TaoLineSearchList; 3321ec2d5cSBarry Smith 3421ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchCreate(MPI_Comm,TaoLineSearch*); 3521ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetFromOptions(TaoLineSearch); 3621ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetUp(TaoLineSearch); 3721ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchDestroy(TaoLineSearch*); 382a0dac07SAlp Dener PETSC_EXTERN PetscErrorCode TaoLineSearchMonitor(TaoLineSearch,PetscInt,PetscReal,PetscReal); 3921ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchView(TaoLineSearch,PetscViewer); 40fe2efc57SMark PETSC_EXTERN PetscErrorCode TaoLineSearchViewFromOptions(TaoLineSearch,PetscObject,const char[]); 41fbe0838dSJason Sarich 4221ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetOptionsPrefix(TaoLineSearch,const char prefix[]); 4321ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchReset(TaoLineSearch); 44*b54963c9SStefano Zampini PETSC_EXTERN PetscErrorCode TaoLineSearchAppendOptionsPrefix(TaoLineSearch,const char[]); 45*b54963c9SStefano Zampini PETSC_EXTERN PetscErrorCode TaoLineSearchGetOptionsPrefix(TaoLineSearch,const char*[]); 46e4cb33bbSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchApply(TaoLineSearch,Vec,PetscReal*,Vec,Vec,PetscReal*,TaoLineSearchConvergedReason*); 4721ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchGetStepLength(TaoLineSearch,PetscReal*); 4821ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchGetStartingVector(TaoLineSearch,Vec*); 4921ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchGetStepDirection(TaoLineSearch,Vec*); 5021ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetInitialStepLength(TaoLineSearch,PetscReal); 51e4cb33bbSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchGetSolution(TaoLineSearch,Vec,PetscReal*,Vec,PetscReal*,TaoLineSearchConvergedReason*); 5221ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchGetFullStepObjective(TaoLineSearch,PetscReal*); 5321ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchGetNumberFunctionEvaluations(TaoLineSearch,PetscInt*,PetscInt*,PetscInt*); 5421ec2d5cSBarry Smith 55dedfbcbeSJed Brown PETSC_EXTERN PetscErrorCode TaoLineSearchGetType(TaoLineSearch,TaoLineSearchType*); 56dedfbcbeSJed Brown PETSC_EXTERN PetscErrorCode TaoLineSearchSetType(TaoLineSearch,TaoLineSearchType); 5721ec2d5cSBarry Smith 58441846f8SBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchIsUsingTaoRoutines(TaoLineSearch,PetscBool*); 5921ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetObjectiveAndGTSRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,Vec,PetscReal*,PetscReal*,void*),void*); 6021ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetObjectiveRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,PetscReal*,void*),void*); 6121ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetGradientRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,Vec,void*),void*); 6221ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetObjectiveAndGradientRoutine(TaoLineSearch,PetscErrorCode(*)(TaoLineSearch,Vec,PetscReal*,Vec,void*),void*); 6321ec2d5cSBarry Smith 6421ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchComputeObjective(TaoLineSearch,Vec,PetscReal*); 6521ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchComputeGradient(TaoLineSearch,Vec,Vec); 6621ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchComputeObjectiveAndGradient(TaoLineSearch,Vec,PetscReal*,Vec); 6721ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchComputeObjectiveAndGTS(TaoLineSearch,Vec,PetscReal*,PetscReal*); 6821ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchSetVariableBounds(TaoLineSearch,Vec,Vec); 6921ec2d5cSBarry Smith 7021ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchInitializePackage(void); 7121ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchFinalizePackage(void); 7221ec2d5cSBarry Smith 7321ec2d5cSBarry Smith PETSC_EXTERN PetscErrorCode TaoLineSearchRegister(const char[],PetscErrorCode (*)(TaoLineSearch)); 74*b54963c9SStefano Zampini PETSC_EXTERN PetscErrorCode TaoLineSearchUseTaoRoutines(TaoLineSearch,Tao); 7521ec2d5cSBarry Smith 7621ec2d5cSBarry Smith #endif 77