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 }

doxygen