Class PairwisePotentialInterface#

Inheritance Relationships#

Base Type#

Derived Types#

Class Documentation#

class PairwisePotentialInterface : public pele::BasePotential#

Subclassed by pele::AtomListPotential< harmonic_interaction, cartesian_distance< 3 > >, pele::AtomListPotential< lj_interaction_cut_smooth, cartesian_distance< 3 > >, pele::AtomListPotential< lj_interaction_cut_smooth, periodic_distance< 3 > >, pele::AtomListPotential< WCA_interaction, cartesian_distance< 3 > >, pele::CellListPotential< frenkel_interaction, periodic_distance< ndim > >, pele::CellListPotential< HS_halfint_pairwise_power_interaction< POW2 >, periodic_distance< ndim > >, pele::CellListPotential< sf_HS_WCA_interaction< 6 >, cartesian_distance< ndim > >, pele::CellListPotential< sf_HS_WCA_interaction< 6 >, leesedwards_distance< ndim > >, pele::CellListPotential< sf_HS_WCA_interaction< 6 >, periodic_distance< ndim > >, pele::CellListPotential< InverseHalfIntPowerHS_interaction< POW2 >, periodic_distance< ndim > >, pele::CellListPotential< InverseHalfIntPower_interaction< POW2 >, periodic_distance< ndim > >, pele::CellListPotential< InverseIntPowerHS_interaction< POW >, periodic_distance< ndim > >, pele::CellListPotential< InverseIntPower_interaction< POW >, periodic_distance< ndim > >, pele::CellListPotential< InversePowerHS_interaction, periodic_distance< ndim > >, pele::CellListPotential< InversePower_interaction, periodic_distance< ndim > >, pele::CellListPotential< InversePowerStillinger_cut_interaction, periodic_distance< ndim > >, pele::CellListPotential< InversePowerStillingerQuadCutInteractionInt< POW >, periodic_distance< ndim > >, pele::CellListPotential< InversePowerStillingerQuadCutInteraction, periodic_distance< ndim > >, pele::CellListPotential< lj_interaction_cut_smooth, periodic_distance< ndim > >, pele::SimplePairwiseNeighborList< sf_HS_WCA_interaction< 6 > >, pele::SimplePairwiseNeighborList< harmonic_interaction >, pele::SimplePairwiseNeighborList< lj_interaction >, pele::SimplePairwiseNeighborList< WCA_interaction >, pele::SimplePairwisePotential< frenkel_interaction >, pele::SimplePairwisePotential< frenkel_interaction, periodic_distance< 3 > >, pele::SimplePairwisePotential< HS_halfint_pairwise_power_interaction< POW2 >, cartesian_distance< ndim > >, pele::SimplePairwisePotential< HS_halfint_pairwise_power_interaction< POW2 >, periodic_distance< ndim > >, pele::SimplePairwisePotential< sf_HS_WCA_interaction< 6 >, cartesian_distance< ndim > >, pele::SimplePairwisePotential< sf_HS_WCA_interaction< 6 >, leesedwards_distance< ndim > >, pele::SimplePairwisePotential< sf_HS_WCA_interaction< 6 >, periodic_distance< ndim > >, pele::SimplePairwisePotential< InverseHalfIntPower_interaction< POW2 >, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InverseHalfIntPowerHS_interaction< POW2 >, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InverseHalfIntPowerHS_interaction< POW2 >, periodic_distance< ndim > >, pele::SimplePairwisePotential< InverseHalfIntPower_interaction< POW2 >, periodic_distance< ndim > >, pele::SimplePairwisePotential< InverseIntPower_interaction< POW >, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InverseIntPowerHS_interaction< POW >, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InverseIntPowerHS_interaction< POW >, periodic_distance< ndim > >, pele::SimplePairwisePotential< InverseIntPower_interaction< POW >, periodic_distance< ndim > >, pele::SimplePairwisePotential< InversePower_interaction, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InversePowerHS_interaction, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InversePowerHS_interaction, periodic_distance< ndim > >, pele::SimplePairwisePotential< InversePower_interaction, periodic_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillinger_interaction, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillinger_cut_interaction, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillinger_cut_interaction, periodic_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillingerQuadCutInteraction, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillingerQuadCutInteractionInt< POW >, cartesian_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillingerQuadCutInteractionInt< POW >, periodic_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillingerQuadCutInteraction, periodic_distance< ndim > >, pele::SimplePairwisePotential< InversePowerStillinger_interaction, periodic_distance< ndim > >, pele::SimplePairwisePotential< lj_interaction >, pele::SimplePairwisePotential< lj_interaction_cut_smooth >, pele::SimplePairwisePotential< lj_interaction_cut_smooth, periodic_distance< 3 > >, pele::SimplePairwisePotential< lj_interaction, periodic_distance< 3 > >, pele::SimplePairwisePotential< morse_interaction >, pele::SimplePairwisePotential< WCA_interaction, cartesian_distance< 3 > >, pele::SimplePairwisePotential< WCA_interaction, cartesian_distance< 2 > >, pele::SimplePairwisePotential< WCA_interaction, periodic_distance< 3 > >, pele::SimplePairwisePotential< WCA_interaction, periodic_distance< 2 > >, pele::AtomListPotential< pairwise_interaction, distance_policy >, pele::CellListPotential< pairwise_interaction, distance_policy >, pele::SimplePairwiseNeighborList< pairwise_interaction, distance_policy >, pele::SimplePairwisePotential< pairwise_interaction, distance_policy >

Public Functions

inline PairwisePotentialInterface()#
inline PairwisePotentialInterface(
pele::Array<double> const &radii,
double non_additivity = 0
)#
inline PairwisePotentialInterface(
pele::Array<double> const &radii,
NonAdditiveCutoffCalculator cutoff_calculator
)#
inline virtual ~PairwisePotentialInterface()#
inline virtual pele::Array<double> get_radii()#

Return the radii (if the interaction potential actually uses radii).

inline double get_non_additive_cutoff(
const std::size_t atom_i,
const std::size_t atom_j
) const#
inline double get_max_cutoff() const#
inline virtual size_t get_ndim() const#

Return the number of dimensions (box dimensions).

Ideally this should be overloaded.

inline virtual void get_rij(
double*const,
double const*const,
double const*const
) const#

Return the distance as measured by the distance policy.

inline virtual double get_interaction_energy_gradient(
double,
double*,
size_t,
size_t
) const#

Return energy_gradient of interaction.

inline virtual double get_interaction_energy_gradient_hessian(
double,
double*,
double*,
size_t,
size_t
) const#

Return gradient and Hessian of interaction.

inline virtual void get_neighbors_picky(
pele::Array<double> const&,
pele::Array<std::vector<size_t>>&,
pele::Array<std::vector<std::vector<double>>>&,
pele::Array<short> const&,
const double cutoff_factor = 1.0
)#

Return lists of neighbors considering only certain atoms.

inline void print_neighbor_index_and_displacements(
pele::Array<std::vector<size_t>> &neighbor_indss,
pele::Array<std::vector<std::vector<double>>> &neighbor_distss
)#

Prints neighbor lists and displacements.

inline virtual void get_neighbors(
pele::Array<double> const&,
pele::Array<std::vector<size_t>>&,
pele::Array<std::vector<std::vector<double>>>&,
const double cutoff_factor = 1
)#

Return lists of neighbors.

inline virtual std::vector<size_t> get_overlaps(Array<double> const &coords)#

Return linearized vector of overlapping atoms.

Every two entries in the resulting vector correspond to a pair of overlapping atoms.

inline virtual pele::Array<size_t> get_atom_order(Array<double> &coords)#

Return a computationally sensible order for sorting the atoms.

This is primarily used for better caching when using cell lists. If sorting atoms is not useful, it returns an empty Pele-Array.

inline virtual bool find_rattlers(
pele::Array<double> const &minimum_coords,
Array<uint8_t> not_rattlers,
bool &jammed
)#

Finds the rattlers in the found minimum and saves them.

Parameters:
  • coords – The coordinates of the found minimum. important: Needs to be at the minimum

  • not_rattlers – whether a particle is a rattler or not

  • jammed – whether the system is jammed or not To look at a readable implementation, see the julia code in check_same_structure.jl in the basinerrror library. (It’s also probably faster since this isn’t vectorized) @WARNING: This function segfaults at destructors when called from python.

Protected Functions

inline void initialize()#

Protected Attributes

const Array<double> m_radii#
const NonAdditiveCutoffCalculator m_cutoff_calculator#