Angle potential - 1412chen/potentialPack GitHub Wiki
- Harmonic angle potential
- Harmonic cosine angle potential
- Cosine angle potential
- Quartic potential
- Stillinger-Weber potential (angle term)
- Screened harmonic potential
- Compass potential
Angle potential calculates the interaction relation of an angle, which was constructed by three atoms. The angle potential is defined as:
where
totally three independent parameters at most.
The force (first derivative of potential) and hessian (second derivative of potential) are also provided in the angle potential. By simple call the Force() and Hessian interfaces directly, they will return the (fj, fk) and (Hij, Hik, Hjk). The other force (fi) and sub-hessian matrixes (Hii, Hji, Hjj, Hki, Hkj and Hkk) can be constructed by the outputs. See more in the derivative section.
The base class of the angle potential (PotentialAngle) provides an exact derivative interface and a finite difference version interface. For the given implemented angle potentials, all of them have implemented the exact derivative relations and well tested (test_angle.cpp). If user needs to implement user defined angle potential, complete the ObjectiveFunction() interface at least, the derivative relations will use the finite difference version interface automatically.
The force acting on atom i, j ,k are:
where
Integrate the above formulas together, we finally have:
The sub-hessian matrices are:
where
The implemented angle potentials are referenced from LAMMPS and DL-Poly manual.