44 #ifndef GLOBIPACK_BRENTS_LINE_SEARCH_DEF_HPP
45 #define GLOBIPACK_BRENTS_LINE_SEARCH_DEF_HPP
48 #include "GlobiPack_BrentsLineSearch_decl.hpp"
49 #include "Teuchos_TabularOutputter.hpp"
58 template<
typename Scalar>
63 template<
typename Scalar>
71 template<
typename Scalar>
82 template<
class Scalar>
88 namespace BLSU = BrentsLineSearchUtils;
89 using Teuchos::sublist;
91 bracket_.setParameterList(sublist(paramList, BLSU::bracket_name,
true));
92 brentsMin_.setParameterList(sublist(paramList, BLSU::minimize_name,
true));
93 setMyParamList(paramList);
97 template<
class Scalar>
101 namespace BLSU = BrentsLineSearchUtils;
107 *bracket_.getValidParameters()
108 ).disableRecursiveValidation();
110 *brentsMin_.getValidParameters()
111 ).disableRecursiveValidation();
121 template<
typename Scalar>
128 template<
typename Scalar>
135 template<
typename Scalar>
146 using Teuchos::outArg;
147 using Teuchos::inOutArg;
163 bracket_.setOStream(out);
164 brentsMin_.setOStream(out);
166 *out <<
"\nStarting bracketing and brents 1D minimization linesearch ...\n";
170 int totalNumIters = 0;
180 int numBracketIters = -1;
182 const bool bracketSuccess = bracket_.bracketMinimum(
183 phi, inOutArg(p_l), inOutArg(p_m), outArg(p_u), outArg(numBracketIters) );
185 if (!bracketSuccess) success =
false;
187 totalNumIters += numBracketIters;
191 if (bracketSuccess) {
193 int numBrentsIters = -1;
195 const bool brentsSuccess = brentsMin_.approxMinimize(
196 phi, p_l, inOutArg(p_m), p_u, outArg(numBrentsIters) );
198 if (!brentsSuccess) success =
false;
200 totalNumIters += numBrentsIters;
207 *numIters = totalNumIters;
217 #endif // GLOBIPACK_BRENTS_LINE_SEARCH_DEF_HPP