Sidechain Lennard-Jones potential kernel

class mdk::SidechainLJ

Sidechain version of the L-J potential (for a single pair of depth and sink_max). In the CPC14.pdf it’s described as an L-J potential with a well bounded from both ends; in practice this is implemented as a one-sided well, i.e. for r < sink_max, V = - depth and the other side of the well is handled by the Pauli exclusion.

Public Functions

SidechainLJ() = default
inline SidechainLJ(double depth, double sink_max)
inline double cutoff() const
inline void computeV(double norm, double &V, double &dV_dn) const

Compute the potential energy of the force field.

Parameters
  • norm – Distance between the residues.

  • V – Variable to add the potential to.

  • dV_dn – Variable to add the derivative to.

template<typename T1, typename T2>
inline void computeF(VRef unit, double norm, double &V, T1 F1, T2 F2) const

Compute and add the L-J force between two residues. The templates are here in order for us to be able to pass Eigen expressions to it.

Template Parameters
  • T1 – Type of an lvalue to add the force on the first residue to.

  • T2 – Type of an lvalue to add the force on the second residue to.

Parameters
  • unit – Normalized vector between the residues.

  • norm – Distance between the residues.

  • V – Variable to add the potential to.

  • F1 – Lvalue to add the force on the first residue to.

  • F2 – Lvalue to add the force on the second residue to.

Public Members

double depth = 1.0 * eps
double sink_max = 10.0 * angstrom