24 #include <basic/Tracer.hh>
27 #include <utility/exit.hh>
28 #include <utility/tag/Tag.hh>
34 #include <utility/vector0.hh>
35 #include <utility/vector1.hh>
41 static basic::Tracer
TR(
"protocols.moves.IteratedConvergenceMover");
57 return "IteratedConvergence";
61 Mover(
"IteratedConvergenceMover"),
68 Mover(
"IteratedConvergenceMover"),
82 submover_(other.submover_),
83 filter_(other.filter_),
85 cycles_(other.cycles_),
86 maxcycles_(other.maxcycles_)
100 if ( (trialval < refval -
delta_) || ( trialval > refval +
delta_ ) ) {
102 TR <<
"After "<<ii<<
" applications, reseting reference to "<<trialval<<
" which is "<<(trialval-refval)<<
" away from previous reference."<<std::endl;
110 TR <<
"Exiting IteratedConvergence with convergence after "<<ii<<
" applications of mover."<<std::endl;
113 TR<<
"After "<<ii<<
" applications, at cycle "<<ncyc<<
" of "<<
cycles_<<
", filter delta in range at "<<(trialval-refval)<<std::endl;
115 TR <<
"Exiting IteratedConvergence WITHOUT convergence after "<<
maxcycles_<<
" applications of mover."<<std::endl;
139 if ( tag->hasOption(
"mover") ) mover_name = tag->getOption<
std::string >(
"mover" );
140 if ( tag->hasOption(
"mover_name") ) mover_name = tag->getOption<
std::string >(
"mover_name" );
141 if ( tag->hasOption(
"filter") ) filter_name = tag->getOption<
std::string >(
"filter" );
142 if ( tag->hasOption(
"filter_name") ) filter_name = tag->getOption<
std::string >(
"filter_name" );
144 Movers_map::const_iterator find_mover ( movers.find( mover_name ));
145 Filters_map::const_iterator find_filter( filters.find( filter_name ));
147 if( find_mover == movers.end() ) {
148 TR.Error <<
"ERROR !! mover not found in map: \n" << tag << std::endl;
149 runtime_assert( find_mover != movers.end() );
151 if( find_filter == filters.end() ) {
152 TR.Error <<
"ERROR !! filter not found in map: \n" << tag << std::endl;
153 runtime_assert( find_filter != filters.end() );
156 filter(find_filter->second);
158 TR <<
"Setting IteratedConvergence for "<<
cycles()<<
" cycles (max "<<
maxcycles()<<
") with mover '"<<mover_name<<
"' and filter '"<<filter_name<<
"' and delta tolerance "<<
delta()<<std::endl;
178 runtime_assert( mover );
184 runtime_assert( filter );
190 utility_exit_with_message(
"Delta value given to IteratedConvergenceMover must be non-negative");