24 #include <basic/Tracer.hh>
27 #include <utility/excn/Exceptions.hh>
31 #include <utility/vector1.hh>
32 #include <ObjexxFCL/FArray1A.hh>
39 namespace interaction_graph {
41 static basic::Tracer
T(
"core.pack.interaction_graph.symm_symmin_ig", basic::t_error );
44 bool const debug = {
false };
55 curr_state_one_body_energy_( 0.0f ),
56 curr_state_total_energy_( 0.0f ),
57 alternate_state_( 0 ),
58 alternate_state_one_body_energy_( 0 ),
59 alternate_state_total_energy_( 0 ),
60 alternate_state_is_being_considered_( false ),
61 already_prepped_for_simA_( false )
83 T <<
"Curr Two Body Energies:";
92 T <<
"Alt Two Body Energies:";
97 T << std::endl <<
"-----------------" << std::endl;
182 if (new_state == 0 ) {
208 get_energy_following_partial_state_assignment();
221 alternate_state_is_being_considered_ =
true;
223 alternate_state_ = alternate_state;
225 alternate_state_one_body_energy_ = get_one_body_energy( alternate_state );
226 alternate_state_total_energy_ = alternate_state_one_body_energy_;
227 prev_node_energy = curr_state_total_energy_;
230 for (
int ii = 1; ii <= get_num_incident_edges(); ++ii ) {
231 if ( neighbors_curr_state_[ ii ] != 0 ) {
232 alternate_state_two_body_energies_[ ii ] = get_incident_symmin_edge( ii )->get_energy_for_alt_state( get_node_index() );
234 alternate_state_two_body_energies_[ ii ] = 0;
237 alternate_state_total_energy_ += alternate_state_two_body_energies_[ ii ];
496 return alternate_state_total_energy_ - curr_state_total_energy_;
546 int edge_making_energy_request
550 edge_making_energy_request,
558 int edge_making_energy_request
562 edge_making_energy_request,
570 int edge_to_altered_neighbor,
571 int other_node_new_state
583 T <<
"curr_state_one_body_energy_ ";
626 curr_state_energy_( 0.0f ),
627 partial_state_assignment_( false ),
628 preped_for_sim_annealing_( false )
636 throw utility::excn::EXCN_Msg_Exception(
"Method unimplemented: SymmMinimalistEdge::get_two_body_energy" );
687 int node_not_substituted = ! node_substituted;
690 compute_pair_energy_for_current_state(
707 int node_not_substituted = ! node_substituted;
726 int node_not_substituted = ! node_substituted;
745 compute_pair_energy_for_current_state(
754 int changing_node_index
757 int const node_changing = changing_node_index ==
get_node_index( 0 ) ? 0 : 1;
759 compute_pair_energy_for_alternate_state(
784 first_time_prepping_for_simA_( true ),
785 num_commits_since_last_update_( 0 ),
786 total_energy_current_state_assignment_( 0.0 ),
787 total_energy_alternate_state_assignment_( 0.0 ),
788 node_considering_alt_state_( 0 ),
789 have_not_committed_last_substitution_( false )
820 ObjexxFCL::FArray1_int & node_states
902 T <<
"State Assignment: " << std::endl;
933 int first_node_ind = (*edge_iter)->get_first_node_ind();
934 int second_node_ind = (*edge_iter)->get_second_node_ind();
988 get_one_body_energy_current_state();