PlayaLineSearchBuilder.cpp
00001 #include "PlayaLineSearchBuilder.hpp"
00002 #include "Teuchos_ParameterList.hpp"
00003 #include "PlayaTabs.hpp"
00004 #include "PlayaOut.hpp"
00005 #include "PlayaSimpleBacktracking.hpp"
00006
00007 namespace Playa
00008 {
00009
00010 RCP<LineSearchBase>
00011 LineSearchBuilder::createLineSearch(const ParameterList& params,
00012 int verb)
00013 {
00014 Tabs tab(0);
00015 PLAYA_MSG1(verb, tab << "LineSearchBuilder::createLineSearch()");
00016 Tabs tab1;
00017 PLAYA_MSG2(verb, tab1 << "params=" << params);
00018
00019 TEUCHOS_TEST_FOR_EXCEPTION(params.name() != "Line Search",
00020 std::runtime_error,
00021 "LineSearchBuilder::getLineSearch() expected parameter list named "
00022 "\"Line Search\", got name [" << params.name() << "]");
00023
00024 const std::string& lsType = getParameter<string>(params, "Type");
00025
00026 RCP<LineSearchBase> ls;
00027
00028 if (lsType=="Simple Backtracking")
00029 {
00030 PLAYA_MSG2(verb, tab1 << "found Simple Backtracking LS");
00031 ls = rcp(new SimpleBacktracking(params));
00032 }
00033
00034 TEUCHOS_TEST_FOR_EXCEPTION(ls.get()==0,
00035 std::runtime_error,
00036 "LineSearchBuilder::getLineSearch() could not construct a valid line "
00037 "search object from parameter list " << params);
00038
00039 return ls;
00040 }
00041
00042 }