pub mod builder;
pub mod energy;
pub mod gradient;
pub mod optimizer;
pub use builder::*;
pub use energy::*;
pub use gradient::*;
pub use optimizer::*;
const KNOWN_DIST_TOL: f64 = 0.01;
const KNOWN_DIST_K: f64 = 100.0;
#[derive(Clone)]
pub struct DistConstraint {
pub i: usize,
pub j: usize,
pub min_len: f64,
pub max_len: f64,
pub k: f64,
}
#[derive(Clone)]
pub struct M6TorsionContrib {
pub i: usize,
pub j: usize,
pub k: usize,
pub l: usize,
pub signs: [f64; 6],
pub v: [f64; 6],
}
#[derive(Clone)]
pub struct UFFInversionContrib {
pub at1: usize,
pub at2: usize,
pub at3: usize,
pub at4: usize,
pub force_constant: f64,
pub c0: f64,
pub c1: f64,
pub c2: f64,
}
#[derive(Clone)]
pub struct AngleConstraint {
pub i: usize, pub j: usize, pub k: usize, pub min_deg: f64,
pub max_deg: f64,
pub force_k: f64,
}
pub struct Etkdg3DFF {
pub dist_12: Vec<DistConstraint>,
pub dist_13: Vec<DistConstraint>,
pub dist_long: Vec<DistConstraint>,
pub angle_constraints: Vec<AngleConstraint>,
pub torsion_contribs: Vec<M6TorsionContrib>,
pub inversion_contribs: Vec<UFFInversionContrib>,
pub oop_k: f64,
pub torsion_k_omega: f64,
pub bounds_force_scaling: f64,
pub use_m6_torsions: bool,
}