BondThreeBody
-
class BondThreeBody
A three body bond is defined by three sites, 0 - 1 - 2. The relative vector r01 = r0 - r1 points from r1 to r0. The relative vector r21 = r2 - r1 points from r1 to r2.
Angle Property minimum_degrees sets the energy to NEAR_INFINITY at smaller angles.
Subclassed by feasst::AngleHarmonic, feasst::AngleSquareWell, feasst::RigidAngle
Public Functions
-
virtual double energy(const Position &ri, const Position &rj, const Position &rk, const Bond &angle) const
Return the energy of interaction between ri, rj and rk.
-
virtual double energy(const double radians, const Bond &angle) const = 0
Return the energy of interaction given an angle in radians.
-
virtual double random_angle_radians(const Angle &angle, const double beta, const int dimension, Random *random) const
Return a randomly selected bond angle.
In three dimensions, \(P(\theta) \propto \sin\theta\exp[-\beta U(\theta)]\)
In two dimensions, \(P(\theta) \propto \theta\exp[-\beta U(\theta)]\)
-
virtual void random_branch(const Angle &a2a1m1, const Angle &a2a1m2, const Angle &m1a1m2, const double beta, double *radians_a2a1m1, double *radians_a2a1m2, double *radians_m1a1m2, Random *random) const
Return three random angles to form a branch.
anchor2 -> 1 1(a2) mobile1 -> 2 | mobile2 -> 3 4(a1) t143(angle) anchor1 -> 4 / \L34(distance) 2(m1) 3(m2, the site to be placed in this function) t243(branch_angle)
-
virtual double energy(const Position &ri, const Position &rj, const Position &rk, const Bond &angle) const