class PerturbDihedral : public feasst::PerturbDistanceAngle

Similar to PerturbDistanceAngle, except that the truncated conical shell has the additional constraint from the dihedral angle formed from the mobile site and its three anchors. Currently implemented for harmonic bonds (exponent: 2), but could add an optional exponent model parameter to generalize this.

Public Functions

void precompute(TrialSelect *select, System *system)

Same as PerturbDistance. If 2D, angles are positive when clockwise. Thus, when 2D and reverse (e.g., kji instead of ijk), angle = 2pi - angle.

double dihedral_type() const

Return the dihedral angle type.

double old_dihedral_energy(const System &system, const TrialSelect *select)

Return the current energy of the existing, old dihedral.

double random_dihedral_radians(const System &system, const TrialSelect *select, Random *random, double *bond_energy)

Return the randomly selected angle from the potential. If the spring constant is -1 (rigid), simply return the angle.

void place_dihedral(const double distance, const double angle, const double dihedral, System *system, TrialSelect *select)

Place mobile site with given bond distance, angle and dihedral.