xref: /petsc/include/petsctaolinesearch.h (revision 6524c165f7ddaf30fd7457737f668f984c8ababf)
1*6524c165SJacob Faibussowitsch #ifndef PETSCTAOLINESEARCH_H
23028902dSLisandro Dalcin #define PETSCTAOLINESEARCH_H
321ec2d5cSBarry Smith 
421ec2d5cSBarry Smith typedef struct _p_TaoLineSearch *TaoLineSearch;
5b54963c9SStefano Zampini 
6b54963c9SStefano Zampini #include <petsctao.h>
7b54963c9SStefano 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);
44b54963c9SStefano Zampini PETSC_EXTERN PetscErrorCode TaoLineSearchAppendOptionsPrefix(TaoLineSearch, const char[]);
45b54963c9SStefano 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));
74b54963c9SStefano Zampini PETSC_EXTERN PetscErrorCode TaoLineSearchUseTaoRoutines(TaoLineSearch, Tao);
7521ec2d5cSBarry Smith 
7621ec2d5cSBarry Smith #endif
77