Skip to content

Commit 2c21fd5

Browse files
author
Jon Drobny
committed
Fixes to polynomial coefficients in LJ rootfinders.
1 parent 06aa267 commit 2c21fd5

File tree

1 file changed

+8
-7
lines changed

1 file changed

+8
-7
lines changed

src/interactions.rs

Lines changed: 8 additions & 7 deletions
Original file line numberDiff line numberDiff line change
@@ -280,26 +280,27 @@ pub fn screening_length(Za: f64, Zb: f64, interaction_potential: InteractionPote
280280
pub fn polynomial_coefficients(relative_energy: f64, impact_parameter: f64, interaction_potential: InteractionPotential) -> Vec<f64> {
281281
match interaction_potential {
282282
InteractionPotential::LENNARD_JONES_12_6{sigma, epsilon} => {
283-
let impact_parameteter_angstroms = impact_parameter/ANGSTROM;
283+
let impact_parameter_angstroms = impact_parameter/ANGSTROM;
284284
let epsilon_ev = epsilon/EV;
285285
let sigma_angstroms = sigma/ANGSTROM;
286286
let relative_energy_ev = relative_energy/EV;
287-
vec![1., 0., -impact_parameteter_angstroms.powi(2), 0., 0., 0., 4.*epsilon_ev*sigma_angstroms.powf(6.)/relative_energy_ev, 0., 0., 0., 0., 0., -4.*epsilon_ev*sigma_angstroms.powf(12.)/relative_energy_ev]
287+
//vec![1., 0., -impact_parameter.powi(2), 0., 0., 0., 4.*epsilon_ev*sigma.powf(6.)/relative_energy_ev, 0., 0., 0., 0., 0., -4.*epsilon_ev*sigma.powf(12.)/relative_energy_ev]
288+
vec![1.0, -impact_parameter.powi(2), 0.0, 4.*epsilon_ev*sigma.powf(6.)/relative_energy_ev, 0.0, 0.0, -4.*epsilon_ev*sigma.powf(12.)/relative_energy_ev]
288289
},
289290
InteractionPotential::LENNARD_JONES_65_6{sigma, epsilon} => {
290-
let impact_parameteter_angstroms = impact_parameter/ANGSTROM;
291+
let impact_parameter_angstroms = impact_parameter/ANGSTROM;
291292
let epsilon_ev = epsilon/EV;
292293
let sigma_angstroms = sigma/ANGSTROM;
293294
let relative_energy_ev = relative_energy/EV;
294-
vec![1., 0., 0., 0., -impact_parameteter_angstroms.powi(2), 0., 0., 0., 0., 0., 0., 0., 4.*epsilon_ev*sigma_angstroms.powf(6.)/relative_energy, -4.*epsilon_ev*sigma_angstroms.powf(6.5)/relative_energy_ev]
295+
vec![1., 0., 0., 0., -impact_parameter.powi(2), 0., 0., 0., 0., 0., 0., 0., 4.*epsilon_ev*sigma.powf(6.)/relative_energy_ev, -4.*epsilon_ev*sigma.powf(6.5)/relative_energy_ev]
295296
},
296297
InteractionPotential::FOUR_EIGHT{alpha, beta} => {
297298
//Note: I've transformed to angstroms here to help the rootfinder with numerical issues.
298299
//The units on alpha [m^4 J] and beta [m^8 J] make them unreasonably small to use numerically.
299300
let alpha_angstroms4_joule = alpha/ANGSTROM.powi(4);
300301
let beta_angstroms8_joule = beta/ANGSTROM.powi(8);
301302
let impact_parameteter_angstroms = impact_parameter/ANGSTROM;
302-
vec![1., 0., -(impact_parameteter_angstroms).powi(2), 0., alpha_angstroms4_joule/relative_energy, 0., 0., 0., -beta_angstroms8_joule/relative_energy,]
303+
vec![1., -(impact_parameteter_angstroms).powi(2), alpha_angstroms4_joule/relative_energy, 0., -beta_angstroms8_joule/relative_energy,]
303304
}
304305
_ => panic!("Input error: non-polynomial interaction potential used with polynomial root-finder.")
305306
}
@@ -311,13 +312,13 @@ pub fn polynomial_coefficients(relative_energy: f64, impact_parameter: f64, inte
311312
pub fn inverse_transform(x: f64, interaction_potential: InteractionPotential) -> f64 {
312313
match interaction_potential {
313314
InteractionPotential::LENNARD_JONES_12_6{..} => {
314-
x*ANGSTROM
315+
x.sqrt()
315316
},
316317
InteractionPotential::LENNARD_JONES_65_6{..} => {
317318
x*x
318319
},
319320
| InteractionPotential::FOUR_EIGHT{..} => {
320-
x*ANGSTROM
321+
x.sqrt()*ANGSTROM
321322
}
322323
_ => panic!("Input error: non-polynomial interaction potential used with polynomial root-finder transformation.")
323324
}

0 commit comments

Comments
 (0)