xref: /petsc/include/petsctaolinesearch.h (revision d21efd2e5d911db017a545648c4fa4838359bb2d)
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