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 }