1use uff_relax::{System, Atom, Bond, UnitCell, UffOptimizer};
2use glam::DVec3;
3
4fn main() {
5 let mut atoms = Vec::new();
7
8 for i in 0..6 {
10 let angle = (i as f64) * 60.0f64.to_radians();
11 let pos = DVec3::new(angle.cos() * 1.4, angle.sin() * 1.4, 0.0);
12 atoms.push(Atom::new(6, pos)); }
14
15 for i in 0..6 {
17 let angle = (i as f64) * 60.0f64.to_radians();
18 let pos = DVec3::new(angle.cos() * 2.4, angle.sin() * 2.4, 0.0);
19 atoms.push(Atom::new(1, pos)); }
21
22 let mut bonds = Vec::new();
24 for i in 0..6 {
25 bonds.push(Bond { atom_indices: (i, (i + 1) % 6), order: 1.5 });
27 bonds.push(Bond { atom_indices: (i, i + 6), order: 1.0 });
29 }
30
31 let cell = UnitCell::new_none();
33 let mut system = System::new(atoms, bonds, cell);
34
35 let optimizer = UffOptimizer::new(1000, 1e-3)
38 .with_verbose(true); println!("Starting optimization of Benzene...");
41
42 optimizer.optimize(&mut system);
44
45 println!("Optimization complete!");
46
47 let d01 = (system.atoms[0].position - system.atoms[1].position).length();
49 println!("Final C-C bond length: {:.4} Å", d01);
50}