Skip to content

Commit d436ebf

Browse files
committed
test(potentials): Refactor Torsion tests to use precomputed parameters
1 parent 3e80bc0 commit d436ebf

1 file changed

Lines changed: 12 additions & 15 deletions

File tree

src/potentials/bonded/torsion.rs

Lines changed: 12 additions & 15 deletions
Original file line numberDiff line numberDiff line change
@@ -57,7 +57,7 @@ impl Torsion {
5757
/// # Computation
5858
///
5959
/// $$ V_{half} = V / 2, \quad n\phi_0 = n \cdot \phi_0 \cdot \pi / 180 $$
60-
/// $$ \cos(n\phi_0) = \cos(n\phi_0), \quad \sin(n\phi_0) = \sin(n\phi_0) $$
60+
/// $$ \cos_{n\phi_0} = \cos(n\phi_0), \quad \sin_{n\phi_0} = \sin(n\phi_0) $$
6161
#[inline(always)]
6262
pub fn precompute<T: Real>(v_barrier: T, n: u8, phi0_deg: T) -> (T, u8, T, T) {
6363
let deg_to_rad = T::pi() / T::from(180.0);
@@ -218,26 +218,23 @@ mod tests {
218218
mod torsion {
219219
use super::*;
220220

221-
const V_HALF: f64 = 2.5; // V/2 = 2.5 kcal/mol
221+
const V: f64 = 5.0;
222+
const V_HALF: f64 = V / 2.0;
222223

223224
fn params_n1() -> (f64, u8, f64, f64) {
224-
// n=1, phi0=0 => cos(0)=1, sin(0)=0
225-
(V_HALF, 1, 1.0, 0.0)
225+
Torsion::precompute(V, 1, 0.0)
226226
}
227227

228228
fn params_n2() -> (f64, u8, f64, f64) {
229-
// n=2, phi0=π => cos(2π)=1, sin(2π)=0
230-
(V_HALF, 2, 1.0, 0.0)
229+
Torsion::precompute(V, 2, 0.0)
231230
}
232231

233232
fn params_n3() -> (f64, u8, f64, f64) {
234-
// n=3, phi0=0 => cos(0)=1, sin(0)=0
235-
(V_HALF, 3, 1.0, 0.0)
233+
Torsion::precompute(V, 3, 0.0)
236234
}
237235

238236
fn params_n4() -> (f64, u8, f64, f64) {
239-
// n=4, phi0=0 => cos(0)=1, sin(0)=0
240-
(V_HALF, 4, 1.0, 0.0)
237+
Torsion::precompute(V, 4, 0.0)
241238
}
242239

243240
// --------------------------------------------------------------------
@@ -263,7 +260,7 @@ mod tests {
263260
let phi = PI / 3.0;
264261
let (cos_phi, sin_phi) = (phi.cos(), phi.sin());
265262
let p64 = params_n2();
266-
let p32 = (V_HALF as f32, 2u8, 1.0f32, 0.0f32);
263+
let p32 = Torsion::precompute(V as f32, 2, 0.0f32);
267264

268265
let e64 = Torsion::energy(cos_phi, sin_phi, p64);
269266
let e32 = Torsion::energy(cos_phi as f32, sin_phi as f32, p32);
@@ -302,7 +299,7 @@ mod tests {
302299

303300
#[test]
304301
fn stability_high_periodicity() {
305-
let p = (V_HALF, 6u8, 1.0, 0.0);
302+
let p = Torsion::precompute(V, 6, 0.0);
306303
let phi = PI / 5.0;
307304
let result = Torsion::compute(phi.cos(), phi.sin(), p);
308305

@@ -398,7 +395,7 @@ mod tests {
398395

399396
#[test]
400397
fn precompute_values_n3() {
401-
let (v_half, n, cos_n_phi0, sin_n_phi0) = Torsion::precompute(V_HALF * 2.0, 3, 0.0);
398+
let (v_half, n, cos_n_phi0, sin_n_phi0) = Torsion::precompute(V, 3, 0.0);
402399
assert_relative_eq!(v_half, V_HALF, epsilon = 1e-14);
403400
assert_eq!(n, 3);
404401
assert_relative_eq!(cos_n_phi0, 1.0, epsilon = 1e-10);
@@ -407,8 +404,8 @@ mod tests {
407404

408405
#[test]
409406
fn precompute_round_trip() {
410-
let p = Torsion::precompute(10.0, 3, 180.0);
411-
let e = Torsion::energy(-1.0, 0.0, p);
407+
let p = Torsion::precompute(V, 3, 0.0);
408+
let e = Torsion::energy(1.0, 0.0, p);
412409
assert_relative_eq!(e, 0.0, epsilon = 1e-10);
413410
}
414411
}

0 commit comments

Comments
 (0)