14 #ifndef INCLUDED_core_pack_interaction_graph_DoubleLazyInteractionGraph_hh
15 #define INCLUDED_core_pack_interaction_graph_DoubleLazyInteractionGraph_hh
27 #include <utility/in_place_list.fwd.hh>
28 #include <utility/vector0.hh>
31 #include <ObjexxFCL/FArray1D.hh>
33 #include <utility/vector1.hh>
46 namespace interaction_graph {
61 virtual void print()
const;
89 int edge_to_altered_neighbor,
91 int other_node_new_state,
97 int edge_to_altered_neighbor,
225 int const node1state,
226 int const node2state,
270 int substituted_node_index,
288 ObjexxFCL::FArray2D< core::PackerEnergy >
352 int nodes_states[ 2 ],
370 std::pair< int, int >
450 ObjexxFCL::FArray2D< core::PackerEnergy >
610 int substituted_node_index,
616 int node_substituted = substituted_node_index ==
get_node_index(0) ? 0 : 1;
617 int node_not_substituted = ! node_substituted;
625 nodes_new_state_sparse_info
660 alternate_state_is_being_considered_ =
true;
665 alternate_state_ = alternate_state;
667 alt_state_sparse_mat_info_ = get_sparse_mat_info_for_state( alternate_state );
668 alternate_state_one_body_energy_ = get_one_body_energy( alternate_state );
669 alternate_state_total_energy_ = alternate_state_one_body_energy_;
670 prev_node_energy = curr_state_total_energy_;
682 for (
int ii = 1; ii <= get_num_edges_to_smaller_indexed_nodes(); ++ii ) {
684 alternate_state_two_body_energies_[ ii ] = get_incident_dlazy_edge(ii)->
685 get_two_body_energy_smi(
686 neighbors_curr_state_[ ii ], alternate_state_,
687 neighbors_curr_state_sparse_info_[ ii ], alt_state_sparse_mat_info_ );
690 for (
int ii = get_num_edges_to_smaller_indexed_nodes() + 1; ii <= get_num_incident_edges(); ++ii) {
691 alternate_state_two_body_energies_[ ii ] = get_incident_dlazy_edge(ii)->
692 get_two_body_energy_smi(
693 alternate_state_, neighbors_curr_state_[ ii ],
694 alt_state_sparse_mat_info_, neighbors_curr_state_sparse_info_[ ii ] );
697 for (
int ii = 1; ii <= get_num_incident_edges(); ++ii ) {
698 alternate_state_total_energy_ += alternate_state_two_body_energies_[ ii ];
700 return alternate_state_total_energy_ - curr_state_total_energy_;
758 int edge_to_altered_neighbor,
760 int other_node_new_state,
766 curr_state_two_body_energies_[edge_to_altered_neighbor] = new_edge_energy;
769 other_node_new_state_sparse_info;