1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
//! # Angle Bending Potentials
//!
//! Three-body potentials for bond angle deformation.
//!
//! ## Included Potentials
//!
//! | Potential | Description | Common Use |
//! |-----------|-------------|------------|
//! | [`Harm`] | Harmonic k(theta-theta0)^2 | AMBER, OPLS |
//! | [`Cos`] | Cosine k(cos-cos0)^2 | GROMOS, DREIDING |
//! | [`Linear`] | Linear k(1+cos) | Linear molecules |
//! | [`Urey`] | Urey-Bradley (angle + 1-3 bond) | CHARMM |
//! | [`Cross`] | Bond-bond cross term | Class II |
//!
//! ## Coordinate Convention
//!
//! For angle i-j-k:
//! - j is the central (vertex) atom
//! - theta is the angle between vectors j->i and j->k
//! - cos(theta) = (r_ji ยท r_jk) / (|r_ji| |r_jk|)
//!
//! ## Example
//!
//! ```
//! use potentials::angle::{Cos, Potential3};
//!
//! // Water H-O-H angle: k = 100 kcal/mol, theta0 = 104.5 deg
//! let theta0_rad = 104.5 * std::f64::consts::PI / 180.0;
//! let angle = Cos::new(100.0, theta0_rad.cos());
//!
//! let cos_theta = 0.0; // 90 degrees
//! let deriv = angle.derivative(1.0, 1.0, cos_theta);
//! ```
pub use Cos;
pub use Cross;
pub use Harm;
pub use Linear;
pub use Urey;
// Re-export base trait for convenience
pub use cratePotential3;