EnergyMapAll

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

Public Functions

double energy(const int part1_index, const int site1_index) const

Return the interaction energy of given site.

void revert(const Select &select)

Revert any changes from perturbation of selection.

void finalize(const Select &select)

Finalize any changes from perturbation of selection.

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.