Force Fields and Strain Energy (UFF)
sci-form implements the Universal Force Field (UFF) for molecular energy evaluation and geometry optimization. The force field describes the potential energy surface as a sum of bonded and non-bonded interaction terms.
UFF Energy Terms
Total Energy
1. Bond Stretch (Harmonic)
Force constant from UFF:
Natural bond length:
where
2. Angle Bend (Cosine Fourier)
The Fourier coefficients
| Hybridization | Notes | |
|---|---|---|
| sp³ | 109.47° | Tetrahedral |
| sp² | 120° | Trigonal planar |
| sp | 180° | Linear |
3. Torsion (Cosine)
| Central bond | ||
|---|---|---|
| sp³–sp³ | 3 | |
| sp²–sp² | 2 | 5.0 kcal/mol |
| sp²–sp³ | 6 | 1.0 kcal/mol |
4. Van der Waals (Lennard-Jones 12-6)
Geometric combining rules:
5. Inversion (Out-of-Plane)
For sp² centers with three neighbors:
where
6. Electrostatic (Coulomb)
where
Geometry Optimization
sci-form uses L-BFGS for energy minimization:
- Compute energy
and gradient - Approximate inverse Hessian from history of positions and gradients
- Line search along descent direction
- Repeat until
The gradient for each energy term is computed analytically, not numerically.
Strain Energy
The strain energy is the total potential energy of the molecule in its current geometry. Higher strain energy indicates a geometry further from the force field's ideal.
Distorting bonds, angles, or torsions from their equilibrium values increases strain energy. This is useful for:
- Conformer quality assessment (lower energy → better conformer)
- Ring strain analysis
- Post-embedding refinement
API
Rust
use sci_form::compute_uff_energy;
let energy = compute_uff_energy("CCO", None);
// energy: f64 in kcal/molCLI
sci-form energy "CCO"
# Output: total UFF energy in kcal/molPython
import sci_form
energy = sci_form.uff_energy("CCO")
print(energy) # kcal/molValidation
- Finite energies: All molecules produce finite (non-NaN, non-infinite) energies
- Distortion increases energy: Stretching bonds increases
- Finite gradients: All gradient components are finite
- Optimization convergence: L-BFGS converges within max iterations for well-formed molecules