diff --git a/src/bca.rs b/src/bca.rs index 23b4be0..7ceaa15 100644 --- a/src/bca.rs +++ b/src/bca.rs @@ -189,7 +189,7 @@ pub fn single_ion_bca(particle: particle::Particle, material: &mate #[cfg(feature = "accelerated_ions")] let distance_traveled = particle::particle_advance(&mut particle_1, - binary_collision_geometries[0].mfp + distance_to_target, total_asymptotic_deflection); + binary_collision_geometries[0].mfp + distance_to_target - material.geometry.get_energy_barrier_thickness(), total_asymptotic_deflection); //Subtract total energy from all simultaneous collisions and electronic stopping bca::update_particle_energy(&mut particle_1, &material, distance_traveled, diff --git a/src/lib.rs b/src/lib.rs index 6a54c37..9fed4c5 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -79,6 +79,7 @@ pub struct OutputBCA { len: usize, pub particles: *mut [f64; 9], } + #[no_mangle] pub extern "C" fn simple_bca_c(x: f64, y: f64, z: f64, ux: f64, uy: f64, uz: f64, E1: f64, Z1: f64, m1: f64, Ec1: f64, Es1: f64, Z2: f64, m2: f64, Ec2: f64, Es2: f64, n2: f64, Eb2: f64) -> OutputBCA { let mut output = simple_bca(x, y, z, ux, uy, uz, E1, Z1, m1, Ec1, Es1, Z2, m2, Ec2, Es2, n2, Eb2); @@ -104,7 +105,7 @@ pub fn simple_bca_list_py(energies: Vec, usx: Vec, usy: Vec, usz: assert_eq!(energies.len(), usy.len()); assert_eq!(energies.len(), usz.len()); - let x = -2.*(n2*10E30).powf(-1./3.)/SQRTPI*2.; + let x = -2.*(n2*10E30).powf(-1./3.); let y = 0.0; let z = 0.0; @@ -120,6 +121,10 @@ pub fn simple_bca_list_py(energies: Vec, usx: Vec, usy: Vec, usz: pub fn simple_bca(x: f64, y: f64, z: f64, ux: f64, uy: f64, uz: f64, E1: f64, Z1: f64, m1: f64, Ec1: f64, Es1: f64, Z2: f64, m2: f64, Ec2: f64, Es2: f64, n2: f64, Eb2: f64) -> Vec<[f64; 9]> { + assert!(E1 > 0.0, "Error: Incident energy cannot be less than or equal to 0."); + assert!(Ec1 > 0.0, "Error: Cutoff energy cannot be less than or equal to 0."); + assert!(Ec2 > 0.0, "Error: Cutoff energy cannot be less than or equal to 0."); + #[cfg(feature = "distributions")] let options = Options { name: "test".to_string(),