EnergyMapAll: public feasst::EnergyMap¶
Map energies with an inefficient but simple data structure. All pairwise interactions between particles and sites are stored, even when the interaction is zero.
This implementation stores two versions of the map, the current map and the new map. Updates from perturbations change only the new map. If the perturbation is accepted, the updates are finalized into the current map. Otherwise, the new map is synchronized to the old map.
Subclassed by feasst::EnergyMapAllCriteria
select_cluster(const NeighborCriteria &cluster_criteria, const Configuration &config, const int particle_node, Select *cluster, const Position &frame_of_reference) const¶
Add neighboring particles to selection which interact with node based on an energy less than or equal to the tolerance. The cluster also has positions taking into account periodic boundary conditions, which is why frame of reference is used recurisvely.
is_cluster_changed(const NeighborCriteria &cluster_criteria, const Select &select, const Configuration &config) const¶
Compare old and new maps to see if cluster has changed. This is useful for detailed balance with rigid cluster moves.
neighbors(const NeighborCriteria &neighbor_criteria, const Configuration &config, const int target_particle, const int target_site, const int given_site_index, Select *neighbors, const int new_map = 0) const¶
neighbors: Return of the neighbors
new_map: If 1, use newly computed map.
Return the neighbors of target particle and site that are of given site index.