class PerturbDistanceAngle : public feasst::PerturbDistance

Put first site in selection, i, in a truncated conical shell that is formed by the intersection of a spherical shell about the first site in the anchor, and a conical shell with axis of symmetry along the vector connecting the first anchor site to the second anchor site. For angle potentials, the equilibrium angle and spring constant are as described in Random::bond_angle Currently implemented for harmonic bonds (exponent: 2), but could add an optional exponent model parameter to generalize this in the future.

Subclassed by feasst::PerturbDihedral, feasst::PerturbDistanceAngleConnector

Public Functions

void precompute(TrialSelect *select, System *system)

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

double angle_type() const

Return the angle.

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

Return the current energy of the existing, old angle.

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

Return the randomly selected angle from the potential.

void place_in_circle(const double distance, const double angle, System *system, TrialSelect *select, Random *random)

Place mobile site randomly in the circle about the anchors.