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