class 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
double energy(const int part1_index, const int site1_index) const
Return the interaction energy of given site.
void 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.
bool 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.
void 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
Return the neighbors of target particle and site that are of given site index.
- param neighbors:
Return of the neighbors
- param new_map:
If 1, use newly computed map.
- double energy(const int part1_index, const int site1_index) const